Hi David,
You need to define indeed two different microflows, blocking only indicates that the user cannot (simply) navigate to another form. Off course, you cannot stop the user from exiting a window with ALT-F4 or X, that would be a serious security and privacy thread (imagine what would happen if an ad makes use of such features). So in order to prevent orphans, you could simply run a scheduled microflow every night which delete all orphan objects.
To make a popup 'blocking' in a microflow, you could create a java action which blocks (Thread.sleep(millis)) until a certain condition is reach. In which case the condition is the creation of a certain object, done by another microflow triggered by a button in the form. However this does not really simplify the problem. And i suggest indeed using 2 microflows.
[BACKGROUND] Generally speaking, i think you should look at user interaction from another paradigm, when building forms, every action (microflow in the case of mendix) should be triggered by an event (the user clicks a button). This in contrast to the classic console model where the applications 'hangs' until the user has entered the next input. Although the latter is more simply to implement and reason about, its pretty limited, and has nasty side effects such as the fact that the server needs to keep track of an extra active thread (microflow) per user which is logged in to the system! So in short, you should see a microflow of a transitions which brings the user in a next state where he can undertake one or more actions. But the handling of that chosen action is a whole new transition and therefor a separate microflow. [/BACKGROUND]
I think I have overcome the problem of a potential orphan record linked to the wrong Incident by making the first action a retrieve for any existing record for that user, and if found, updating the association to link to the current Incident