Embedded Sub-Process
A compound activity whose internal flow is defined inside the parent process. It shares the parent's data context and exists only within it. Drawn as a rounded rectangle containing its own flow (or collapsed with a + marker).
The Embedded Sub-Process groups a coherent piece of the parent flow behind one activity: it starts with its own (none) start event, runs its internal steps, and returns to the parent when done.
Because it is *embedded*, it shares the parent's variables directly and cannot be reused elsewhere. Its other superpower is scoping: boundary events attached to the sub-process guard everything inside it at once.
When to use and avoid
When to use
To structure large models: fold a coherent block (e.g. “Handle complaint”) into one activity.
To create a scope for boundary events, error handling or a deadline that covers several steps.
To progressively disclose detail: collapsed for executives, expanded for analysts.
When NOT to use
When the logic is needed by other processes — use a Call Activity to a reusable global process.
For a single atomic step — that's a task.
As a container triggered by events — that is the Event Sub-Process.
Business example
Folding complaint handling into one block

Open this example in the HEFLO process editor and explore the diagram from the inside.
Open in the HEFLO editor →Step by step
- The parent flow reaches the Embedded Sub-Process “Handle complaint” (highlighted).
- Inside, its own start → Assess and respond → end run using the parent's data directly.
- When the internal end is reached, the token returns to the parent and the complaint is closed.
A timer or error boundary attached to the sub-process frame would guard the whole block at once.
Differences
Embedded Sub-Process vs Call Activity
Embedded: defined inside the parent, shares its data, not reusable. Call Activity: invokes a separately defined global process, with its own data context (mapped in/out) and full reusability. Structure → embedded; reuse → call.
FAQ
Must an embedded sub-process start with a None Start Event?
Yes — typed starts are not allowed inside a regular embedded sub-process (they belong to event sub-processes).
Can I attach boundary events to it?
Absolutely — that's one of its main uses: one deadline or error handler scoped over the whole inner block.