Why sub-processes?
A diagram with 40 tasks is unreadable. Sub-processes let you group related steps behind a single element, keeping the parent diagram clean. Click into the sub-process to see the details. Think of it as folders for your process logic.
Sub-processes also enable error handling — you can attach boundary events to a sub-process that catch errors, timeouts, or escalations from any step inside it.
| Type | Visual | Reusable? | Use when |
|---|---|---|---|
| Embedded sub-process | Rounded rectangle with [+] | No | Group steps to reduce diagram clutter or enable boundary events |
| Call activity | Thick-bordered rounded rectangle | Yes | Reference a standalone process that is used in multiple places |
| Event sub-process | Dashed-bordered rounded rectangle | No | Handle events (errors, messages, timers) that can happen anytime during the parent |
Embedded sub-process
The most common type. It groups a sequence of steps into a collapsible container. The sub-process is defined inline — it exists only within its parent process.
Collapsed
Shows as a single rounded rectangle with a [+] marker. The contents are hidden. Use this in the parent diagram to keep it readable.
Expanded
Shows the full internal process with its own start event, tasks, gateways, and end event. The boundary of the sub-process is visible.
Example
In an order process, "Fulfill Order" is a sub-process containing: pick items, pack box, print label, hand to carrier. The parent diagram just shows "Fulfill Order" as one element.
Common mistake
Forgetting that an embedded sub-process needs its own start and end events inside. It is a complete mini-process, not just a visual grouping.
Call activity
A call activity references an external, standalone processthat is defined separately. When the token reaches a call activity, it "calls" that external process, runs it to completion, then returns.
The key difference from an embedded sub-process: call activities are reusable. The same external process can be called from multiple parent processes. Change it once, and every caller gets the update.
Visual cue
A call activity looks like a task but with a thick (bold) border. This is how you distinguish it from a regular task or embedded sub-process.
Example
"Verify Customer Identity" is used in account opening, loan application, and insurance claims. Define it once as a standalone process, then reference it as a call activity in all three parent processes.
Common mistake
Using a call activity for something used only once. If the process fragment is not reused, an embedded sub-process is simpler and keeps everything in one diagram.
Event sub-process
An event sub-process sits inside a parent process or sub-process but is not connected to the normal flow. It has no incoming or outgoing sequence flows. Instead, it is triggered by a start event — typically an error, message, timer, escalation, or signal.
Think of it as an exception handler. It waits silently until its trigger event occurs, then either interrupts the parent (cancels the normal flow) or runs in parallel without interrupting.
Interrupting
Solid start event border. When triggered, the parent process is cancelled and the event sub-process takes over. Example: error handling.
Non-interrupting
Dashed start event border. When triggered, it runs alongside the parent process without stopping it. Example: sending a reminder every 24 hours while waiting.
Example
During an order process, if the customer cancels at any point, an interrupting event sub-process catches the cancellation message, refunds the payment, and ends the process — regardless of which step the order was at.
Common mistake
Connecting an event sub-process to the normal flow with sequence flows. Event sub-processes are triggered only by their start event — they must not have incoming sequence flows.
Which sub-process type should I use?
Related guides
Keep learning
Frequently asked questions
What is the difference between a sub-process and a call activity?▼
A sub-process is defined inline within its parent — it cannot be reused. A call activity references an external, standalone process that can be called from multiple parent processes.
Can I nest sub-processes?▼
Yes. A sub-process can contain other sub-processes. But keep nesting shallow — more than two levels deep becomes hard to follow.
Does an embedded sub-process need its own start and end events?▼
Yes. An embedded sub-process is a complete mini-process. It must have at least one start event and one end event inside.
When should I use an event sub-process instead of a boundary event?▼
Use a boundary event when the exception applies to a specific task or sub-process. Use an event sub-process when the exception can happen at any point during the entire parent scope.