Sometimes when the creation of the person object fails the user get's
created anyway resulting in a user without a user profile.
By wrapping both the user and profile creation in a transaction the
user gets only created if the person profile worked as well.