Sometimes, we need to undo what we already did. That’s not just life—it’s business. I often face situations where a previous action must be reversed. Maybe a payment goes back. Maybe a service gets canceled. In BPMN 2.0, I model these reversals with compensation events. In this article, I’ll show you what the compensation event in BPMN is, when to use it, and how it works in practice. I’ll also explain an example to make it crystal clear.
What is a Compensation Event in BPMN?
In BPMN 2.0, a compensation event defines a rollback action. It reverses an earlier activity that was already completed. That’s important: compensation is not about errors. It’s not an exception. It’s a controlled reversal of a successful task.
For example, if I successfully booked a hotel, but later cancel the trip, I may need to reverse the booking. That’s exactly what the compensation event is for. Learn more about BPMN 2.0 for example with insight into Complex Gateways in BPMN 2.0: A Simple Guide or Process Basic Concepts: Your Key to Clear Business Workflows (open in new tabs).
Events in BPMN 2.0: A Quick Recap
To understand compensation, I first need to understand events. BPMN 2.0 defines three major event types:
- Start events – mark the beginning of a process
- Intermediate events – react to events during the process
- End events – signal the process is done
Among the intermediate events, there’s a special one: the intermediate compensation event. It gets triggered when I want to undo a task. This can be attached as a boundary event on a task or thrown explicitly in the main flow.
Example: Team Dinner with Two Options
Let me take a real-world example. Every Friday, I plan a dinner for my team. The team chooses between two options:
- We meet in the office and get catering.
- We meet remotely, and I send everyone digital meal vouchers.
Both options require action. But sometimes, after placing the order, the dinner gets canceled. This means I must cancel catering or revoke vouchers. A clear case for the compensation event in BPMN.
Step-by-Step: Understanding the Process Flow
Step 1: Plan and Decide
The process starts with the “Plan Team Dinner” start event.

Then, I choose the meeting type. I model this with a User Task called “Choose Meeting Type”.

Next, I use an Exclusive Gateway.

It lets me branch the process:
- If the choice is office, the process goes to “Order Catering”.
- If the choice is remote, the process continues to “Send Delivery Vouchers”.

Step 2: Attach Compensation Events
Each of these service tasks represents an action I may need to reverse. So, I attach a Compensation boundary event to each one.

- Order Catering has a boundary event called “Cancel Catering Order”.
- Send Delivery Vouchers gets one called “Revoke Vouchers”.
The tasks link back to another exclusive gateway.

These events are linked to special compensation tasks. These tasks don’t connect via sequence flows. Instead, they use associations.
Step 3: compensation throw event
Now the process continues with a Compensation throw event. It is labeled “Meeting Confirmed”. Like it says, it confirms the meeting.

Step 4: End the Process
Finally, the process ends with a standard End Event.

Whether I follow the normal flow or the compensation flow, I always finish cleanly.
Key Rules for Compensation in BPMN
There are some special things to keep in mind:
- Compensation only works if the original task was completed. No completion, no compensation.
- Compensation events only apply within the same process (pool).
- Use associations, not sequence flows, to link compensation handlers.
- The compensation task is clearly marked to show it is not part of the regular flow.
Why Use the Compensation Event?
In daily process modeling, I don’t always need compensation. But when reversals are part of the business logic, it becomes essential.
Think about canceling subscriptions. Reversing payments. Backtracking onboarding steps. Without compensation events, the diagram gets messy. With them, I keep control and stay clear.
The compensation event in BPMN helps me show what to undo, when, and how. I avoid confusion. I make the process logic visible.
Final Thoughts
I use the compensation event in BPMN when I want clarity in complex processes. It brings structure to reversals. It handles changes elegantly. And it helps others understand my process models at a glance.
Try it in your next BPMN diagram. You’ll see how effective it is—especially when real life gets messy.
Credits: The diagrams were created with Camunda (opens in a new tab).
| Read more on Business Process Modeling and Notation (BPMN) |
|---|
| Syntax and Semantics of BPMN BPMN Project Roles for Effective BPM The Participant Perspective in BPMN BPMN Core Elements |

