Skip to content
← All terms

Message Flow

A dashed arrow between two pools that shows a message sent from one participant to another.

What a message flow represents

A message flow is a dashed arrow with an open arrowhead and a small envelope marker at its source or middle. It connects activities or events in *different pools*. Semantically it says "when this source step fires, a message is sent to the target step". Unlike sequence flows, a message flow does not transfer a token; each pool has its own tokens, and the message is the only thing that crosses the pool boundary.

That distinction matters because it pins down where control lives. A sequence flow implies "I run this, then I run that, same actor". A message flow implies "I send this; someone else, outside my control, decides whether and when to act on it". Every time a process touches a third party (a customer, a supplier, an external API) the boundary is a message flow, not a sequence flow.

The rules

  • Message flows connect *different pools* only. Between activities in the same pool, use sequence flows.
  • Sources are typically throwing message events, message end events, or activities that produce a message output. Targets are catching message events, message start events, or activities that consume a message input.
  • A message flow to a collapsed (black-box) pool is fine. You do not have to model the other side.
  • Do not mix sequence and message flows in a way that makes the pool-internal vs pool-external semantics ambiguous. A flow is one or the other.

Message flows in LucidFlow

LucidFlow places message flows wherever the source document describes asynchronous communication between parties: "we email the customer a link", "the bank sends us the settlement notice". The bottleneck heatmap computes message-flow waiting time as the gap between send and receive, which is usually the single largest duration on any inter-organisation process. Modelled this way, "the customer takes 4 days on average to respond" becomes a visible bottleneck you can target with a reminder automation.

Frequently asked questions

Can a message flow cross a lane boundary inside the same pool?

No. Crossing a lane boundary is a sequence flow, because the token is still moving inside the same participant. Message flows are strictly pool-to-pool.

Is a message flow synchronous or asynchronous?

BPMN models it as asynchronous by default. The sender fires and moves on, the receiver processes whenever it can. Synchronous request/response is two message flows: one from caller to callee, one from callee back.

How do I model a message to a system, not a person?

The same way. The receiving pool is the system. If the system’s internals are irrelevant, collapse the pool to a black box and just show the message flow going in and any reply coming back out.

Related terms

← Back to the full glossary