Ein Message flow beschreibt den Austausch von Informationen zwischen zwei Pools. Der Message flow kann sich entweder direkt zwischen den beiden Pool-Objekten befinden oder zwischen Objekten im Sequence flow der Prozesse des jeweiligen Pools. Nur Message flows dürfen Pool-Grenzen überschreiten und eine Message flow-Kante darf nicht zwischen zwei Objekten des gleichen Pools angelegt werden (vgl. Abbildung Zwei Pools mit Sequence- und Message flow).
Die Kante wird durch eine gestrichelte Linie dargestellt. Am Anfangspunkt der Linie befindet sich ein Kreis, am Endpunkt eine weiße Pfeilspitze.
Jeder Message flow besteht aus einem Sender-Objekt, einer Kante des Typs sendet, einer Kante des Typs wird empfangen von und dem Empfänger. Von einem Startereignis und einem Zwischenereignis gehen keine Message flow-Kanten aus. Ein Endereignis empfängt hingegen keine Message flows, kann aber selbst Sender sein. Lanes, Gateways, Datenobjekte und Textannotationen sind von Message flows ausgeschlossen.