Activities

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

Diagrama BPMN: Folding complaint handling into one block
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

  1. The parent flow reaches the Embedded Sub-Process “Handle complaint” (highlighted).
  2. Inside, its own start → Assess and respond → end run using the parent's data directly.
  3. 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.

Related elements