Hi @omer0 ,
genral-model-processflowupdated.fsm
To accomplish this task, we just need to modify the task sequence in process flow. Task sequences allow us to create logic for a task executer so that it won't move to another task until it finishes all the tasks in the task sequence. We recommend reading more about task sequences here. Also see here for the documentation on process flow. The left tab shows all the process flow activities that you can read more about.
I made a group representing processor M2A and M2B so that we can use an event triggered source in process flow so when any member of the group sends a flow item, the activity will make a token in process flow. We add the label "processor" to the token so that the task executer can know which processor to replace with a new item at the end of the task sequence.

See in this video how M2A finishes first, so the task executer runs that flow item down the line, replaces M2A with a new flow item. Then runs the item from M2B down the line.

Note: The logic from 3D routing was overwriting process flow which stopped the task executer in the middle of the task sequence. To fix this we just closed the output ports for M1 once the task sequences begin.
Let me know if that makes sense. Whenever you want custom tasks and logic process flow can be extrremely useful, so we recommended reading more about that. Good luck!