This sort of functionality can be easily added in Mendix. For example, take the last part of your requirement to reassign to the manager. You need to create an association between the Contact and his manager (probably by creating an association between the contact entity and itself). You can then link each contact to the contact who is its manager, and at that point in the process, retrieve the apprioriate manager by using this association.
For the rest, I assume you have some sort of request entity, and an approval entity (with an association to the contact who will complete the approval). If you have for example an association between the approver (contact) and the request type, you can use this to retrieve the correct approver for the current request, or to filter the list of possible approvers by using it in an x-path constraint. The key to this is setting up an appropriate data model and entity relationships.
To make changes like assignment 'automatically' when a certain condition is met, you should place this logic in a before commit microflow which will run every time the object is modified.
I assume that the approval process is status based.
If so you can use different statuses (for example Check order (where the user can approve or reject the order) and validate order (where the manger has to do things).
Each status can be shown in a different menu item (represented by a grid with a constrain on the status). The menu items can be assigned to a single user or a group of users)