BPMN Intermediate Events Explained: Modeling Multiple Events Correctly

Cropped view of a diagram with clock icons, including “Prepare Product Demo,” “Send Reminder EMail,” and “Log Missed Opportunity.”

Sometimes, timing is everything in a process. Especially when I wait for multiple signals before continuing. That’s when modeling intermediate events in BPMN 2.0 becomes essential. In this article, I’ll show you how to capture multiple events correctly—without running into dead ends or lost signals.

What Multiple BPMN Intermediate Events Mean

An intermediate catch event represents something that the process waits for while it is already running. For example, I can wait for a message, signal, timer, condition, or another supported event type.

However, before I model several events, I clarify the requirement:

  • Must both events occur?
  • Is only one of several events required?
  • Must the events occur in a specific order?

These requirements lead to different BPMN structures.

If my process must receive two independent events and continue only after both have occurred, I model two parallel waiting paths.

Why Two Catch Events in Sequence Can Be Wrong

Suppose I model this sequence:

Task A → Event 1 → Event 2 → Task B

This structure defines an order. The process first reaches Event 1 and waits there. Only after Event 1 occurs does the token move to Event 2.

Therefore, the process does not actively wait at Event 2 while it is still waiting at Event 1.

Whether an earlier occurrence of Event 2 can still reach the process depends partly on the event type and the technical environment. For example, signals normally represent broadcasts and are not stored for a process that starts listening later. Message infrastructure, in contrast, may provide additional buffering or correlation mechanisms.

I therefore do not rely on an event being stored unless the process architecture explicitly guarantees that behavior.

Instead, I make the waiting requirement visible in the BPMN model.

How I Model Two Required Events

I use a parallel gateway before the intermediate catch events and another parallel gateway after them.

1. Complete the preceding activity

First, I model the activity that must finish before the process starts waiting. In this example, User Task A represents that activity.

After the task completes, the process can prepare to wait for both events.

Camunda BPMN model showing a start event connected to User Task A, which is highlighted with a red box and arrow.
User Task A completes before the process begins waiting for multiple events.

2. Split the process with a parallel gateway

Next, I add a parallel gateway after User Task A.

The parallel gateway creates two active sequence flows. In BPMN, this is an AND split. Therefore, the process does not choose between the paths. It activates both.

The parallel gateway allows the process to reach both waiting positions independently.

Camunda BPMN model showing User Task A followed by a highlighted parallel gateway used to create parallel branches.
A parallel gateway splits the process into two paths after User Task A.

3. Add one intermediate catch event to each branch

Then, I place one intermediate catch event on each branch.

In the example, one branch waits for User System Event 1. The other waits for User System Event 2.

As soon as the parallel gateway creates both paths, both catch events can become active independently. Therefore, Event 1 can occur first or Event 2 can occur first.

The process does not impose an order between them.

Camunda BPMN model showing a parallel gateway leading to two intermediate catch events named User System Event 1 and User System Event 2.
Two parallel branches wait independently for User System Event 1 and User System Event 2.

4. Synchronize both paths with another parallel gateway

After the two events, I connect both branches to a second parallel gateway.

Here, the gateway works as an AND join. It synchronizes the incoming sequence flows.

If Event 1 occurs first, its token reaches the gateway and waits. If Event 2 occurs first, the same principle applies to the other path.

Only after both tokens arrive can the process continue.

The first parallel gateway means “wait for both independently,” while the second means “continue only when both are complete.”

Camunda BPMN model showing two intermediate catch events joining at a highlighted parallel gateway.
A second parallel gateway synchronizes both event paths before the process continues.

5. Continue with the next activity

Finally, I connect the synchronizing gateway to User Task B and then to the end event.

The complete process now expresses a precise requirement:

  1. Complete User Task A.
  2. Start waiting for both events.
  3. Accept the events in any order.
  4. Wait until both have occurred.
  5. Start User Task B.
  6. End the process.
Complete Camunda BPMN model with User Task A, a parallel split, two intermediate catch events, a parallel join, User Task B, and an end event.
Complete BPMN pattern for waiting for two independent events before continuing with User Task B.

Why This BPMN Pattern Works

The pattern separates two different concerns.

First, the AND split activates both waiting paths. Therefore, the process can wait for both events at the same time.

Second, the AND join synchronizes the paths. Therefore, the process cannot continue until both branches have completed.

The order of the events no longer matters.

For example:

Event 1 → Event 2 → continue

and

Event 2 → Event 1 → continue

produce the same process result.

I use this pattern when the business requirement says that both events are mandatory but their order is irrelevant.

When I Do Not Use a Parallel Gateway

The parallel gateway is not the correct solution for every group of events.

If I want the process to continue as soon as one of several alternative events occurs, I normally use an event-based gateway instead. In that case, the events compete with each other. The first event determines the path.

That represents a different requirement:

  • Parallel gateway: I need Event 1 and Event 2.
  • Event-based gateway: I need Event 1 or Event 2.
  • Sequential catch events: I need Event 1 and then Event 2.

This distinction is important because the diagrams may look similar while describing very different process behavior.

A Practical Modeling Risk

The AND join also creates an important consequence. If one required event never occurs, the process waits indefinitely.

Therefore, I check whether the business process needs an escalation or timeout. For example, I may add timer logic when an expected response must arrive within a defined period.

A correct BPMN model should describe not only the successful path, but also what happens when an expected event never occurs.

Conclusion

When I model multiple BPMN intermediate events, I first define the required event relationship. If the process must receive both events in any order, I activate two parallel branches, place one catch event on each branch, and synchronize them with another parallel gateway.

This structure clearly communicates concurrency and synchronization. Moreover, it prevents me from accidentally modeling an event order that the business requirement does not contain.

For two mandatory independent events, the core pattern is simple: parallel split, separate catch events, parallel join, then continue.

What’s Next?

Now that I understand the BPMN foundation, I need to look at communication inside the model. A process often does not run in isolation. It exchanges information with people, systems, and other participants. That is why the next article is important. In Understanding Message Events in BPMN 2.0, I explain how BPMN shows sending, receiving, and waiting for messages. After that, I move to the people behind the model. In BPMN Project Roles for Effective BPM, I explain who takes part in BPMN work and how each role supports better process models. Therefore, these next steps help me connect BPMN knowledge with real communication and real project practice.

Explore Processes and Requirements Modeling

Processes help me understand how work moves from idea to result. In my main article on Processes, I connect the full picture. I explain how Process Management helps me structure, analyze, and improve workflows. Then I show how BPMN turns these workflows into clear visual models. In addition, I explain how Camunda supports BPMN modeling in a practical way. Therefore, this guide is the right next step if you want to understand processes, model them clearly, and improve them with confidence.

However, process models are only one part of a larger modeling landscape. That is why I also recommend my main article on Requirements Modeling. There, I connect Modeling Concepts, Process Modeling with BPMN, and UML. As a result, this second guide helps me understand how different modeling approaches work together and how I can choose the right model for the right purpose.


Credits: The diagrams were created with Camunda.

Scroll to Top
WordPress Cookie Plugin by Real Cookie Banner