Modelling interrupting external events

Hello everyone,

I am looking for ideas about the most efficient (compact) way to model an external event that would “interrupt” my “normal” process and can happen at any time. This event is generated by an external party and must carry information with it (a Message) and can be received only by a certain participant. If this message arrives, compensation of certain tasks that happened until then must also happen.
This same external party sends also messages that are needed for the “normal” flow to progress.
So I come up with this, which is an event based gateways after each task where I need to wait for another message to arrive:
External_bad-msg_triggering_compensation.bpmn (20.1 KB)

What I don’t like in this representation

  1. While the “good news” after the gateway is definitely needed to progress, (i.e. it contains information I need to process in the following task), It is just arbitrary that I check for the interrupting message at the same stage. In reality this “bad news” can come any time and can even interrupt a task while it is performed. So my representation is not accurate. Would the signal event be better? But how do I get lose of the event-based gateway??
  2. the flow is incredibly cluttered. Readability affected

Any hints / remodel appreciated :smiley:

PS: I use BPMN only for functional representation, not real automation (I suppose you would call it “strategic modelling”), so for my purposes I value readability and ease-of-understanding more than “correctness” / automation-oriented representation.


What about this for an alternate approach. Ive used a transaction subprocess with interrupting event driven subprocess and cancellation timeouts if goodnews is not received in reasonable time…