Refactoring to make StatusChangeControl more reusable. Introduced userTypeBy in order to validate which type of user is allowed to make a transition.