move order creation process to a transition to be able to to rollback everything on failure, also I added a couple of extra validations