Message Flow vs Sequence Flow in BPMN: Talking Between Pools
When two organisations talk, BPMN uses message flows, not sequence flows. Draw a customer pool and an online shop pool in the free bpmn.io modeler, add message events, and connect the pools with dashed message flows.
Step by step
Two kinds of arrow
- Message flow. BPMN has 2 kinds of arrow that look alike but mean different things: a solid sequence flow and a dashed message flow. This example shows a customer and an online shop sending messages to each other.
- New diagram. Open a new diagram in bpmn.io. It starts with one start event. Name it Basket ready.
Customer pool
- Customer pool. Drag a pool from the palette onto the diagram. The pool takes in the start event. Make it wider and name it Customer. From the start event's menu, add a task named Place order.
- Wait for a message. Next, the customer waits for an answer. From the Place order menu, add an intermediate event, the double circle, and name it Confirmation in. Click the wrench and change it to a message intermediate catch event. The white envelope means the process waits here until a message arrives.
- Customer pool. After Confirmation in, add an end event named Order done. That finishes the customer's side.
Shop pool
- Shop pool. The shop is a separate organisation, so it gets its own pool. Drag a second pool below the first, make it the same size and name it Online Shop. The shop's process starts when an order arrives. Drag a start event into the Online Shop pool and name it Order received. Click the wrench and change it to a message start event. This shows the shop's process starts because a message came in. From the start event's menu, add a task named Confirm order. Then add an end event named Order confirmed to finish the shop's side.
Message flows
- Message flow. Now connect the pools. Drag the arrow tool from Place order onto the shop's Order received event. Because the line goes between pools, it is drawn as a message flow: dashed, with a small circle at the start and an open arrow at the end. Draw the reply the same way: a message flow from Confirm order up to the customer's Confirmation in event.
- The finished model. Click on an empty part of the canvas to see the finished model. Solid sequence flows stay inside each pool. Dashed message flows go between the pools.
Recap
- The rule. The rule: a sequence flow never leaves its pool, and a message flow only goes between pools. Message events show where a process waits for a message or starts because of one.
Common mistakes
- Drawing a sequence flow from one pool to another. A sequence flow must stay inside its own pool. When work passes to another organisation, connect the pools with a message flow instead.
- Putting 2 organisations in one pool as lanes. Lanes are for roles inside one organisation. A separate organisation, like the customer and the online shop, gets its own pool, so the hand-offs between them show up as message flows.
- Using a plain start event in the receiving pool. If the process starts because a message arrives, change the start event to a message start event with the wrench. Order received is a message start event.
- Leaving out the waiting point. If a process has to wait for a reply, add a message intermediate catch event, like Confirmation in. Point the reply's message flow at it, so readers can see where the process pauses.
When a business analyst uses this
In a process-mapping workshop for an ordering process, put the customer, the business and the payment provider in separate pools. Draw every order, confirmation and payment that passes between them as a message flow. Those dashed lines then become your list of interfaces to confirm before sign-off.
Questions people ask
What is the difference between a message flow and a sequence flow in BPMN?
A sequence flow is a solid arrow that shows the order of steps inside one pool. A message flow is a dashed line with a small circle and an open arrow, and it shows a message passing between 2 pools.
Can a sequence flow go from one pool to another in BPMN?
No. A sequence flow never leaves its pool. Communication between pools is shown with message flows.
Can a message flow connect 2 steps in the same pool?
No. A message flow only goes between different pools. Inside one pool, steps are connected with sequence flows.