Dynamic Diagram Example
The Dynamic diagram shows how systems or containers interact at runtime for a specific business scenario. It illustrates the sequence of calls, message flows, and response paths — revealing order of operations and integration touchpoints.
This page is part of the Order-to-Cash C4 examples. See Example C4 Diagrams for an overview of all diagram types and when to use each.
Info
To use this example in Nodinite, copy the Mermaid markup below and follow the Import Your First C4 Diagram walkthrough to create a C4 Diagram Set, import the markup, and bind nodes to Services in your Repository Model.
When to Use
- ✅ Documenting and reviewing a specific business workflow end-to-end
- ✅ Troubleshooting integration failures — trace where a message flow breaks
- ✅ Communicating runtime behaviour and message ordering to technical teams
- ⚠️ Focuses on one scenario at a time — not a complete system overview
Info
Import and round-trip support: When a
C4Dynamicdiagram is imported, numeric step prefixes in relationship labels (e.g.,1. Submit Order) are parsed and their sequence order is preserved. The Mermaid generator re-emits the labels with the same step numbers — the full numbered sequence survives import, persist, and regenerate without manual correction.
Important
No boundaries in authored Dynamic diagrams:
Boundary,Enterprise_Boundary, andContainer_Boundaryshapes must not appear in storedC4Dynamicdiagrams. This rule applies to authored Dynamic diagrams in a Diagram Set. The grouped Log View runtime inspection view (Inspect Grouped Log Views as Runtime Diagrams) is a separate feature and can roll the same runtime path up by System when users switch to Systems mode.
Example: O2C End-to-End Runtime Sequence
This example uses the O2C BPM demo data to show all 7 milestones of the Order-to-Cash flow as a numbered sequence. It exercises:
ContainerQueueas a first-class participant (Planning Event Bus)Rel_Backfor the order confirmation return (step 5)Person_Extfor the downstream logistics partner- No boundary shapes anywhere in the diagram
| Preview | Mermaid Code |
|---|---|
|
C4Dynamic
title Order-to-Cash (O2C) — End-to-End Runtime Sequence
Person(customer, "Customer")
Container(portal, "Portal", "Customer Web App")
Container(rcv_order, "INT1337-RCV-Order-Incoming", "Integration / JSON")
Container(ent_order, "INT1337-ENT-Order-Entry", "Integration / XML")
Container(snd_confirm, "INT1337-SND-Confirm-Outgoing", "Integration / CSV")
Container(erp, "ERP", "Enterprise Resource Planning")
ContainerQueue(planning_bus, "Planning Event Bus", "Azure Service Bus")
Container(pln_scheduled, "INT1337-PLN-Order-Scheduled", "Integration / JSON")
Container(wms, "WMS", "Warehouse Management System")
Container(pkg_packed, "INT1337-PKG-Order-Packed", "Integration / XML")
Container(dlv_delivered, "INT1337-RCV-Order-Delivered", "Integration / PSV")
Container(erp_finance, "ERP-Finance", "Finance Module")
Container(inv_invoiced, "INT1337-INV-Order-Invoiced", "Integration / JSON")
Person_Ext(logistics_partner, "Logistics Partner")
Rel(customer, portal, "1. Submits order", "HTTPS / JSON")
Rel(portal, rcv_order, "2. Drops order file", "JSON / O2C.Order.Received/1.0")
Rel(rcv_order, ent_order, "3. Forwards order to ERP", "XML / O2C.Order.Entry/1.0")
Rel(ent_order, erp, "4. Creates order entry", "ERP API")
Rel_Back(ent_order, snd_confirm, "5. Returns order confirmation", "CSV")
Rel(snd_confirm, customer, "6. Delivers confirmation to customer", "CSV / O2C.Order.Confirmation/1.0")
Rel(erp, planning_bus, "7. Publishes production schedule event", "AMQP")
Rel(planning_bus, pln_scheduled, "8. Delivers schedule event (async)", "AMQP")
Rel(pln_scheduled, pkg_packed, "9. Triggers warehouse packing", "XML / O2C.Order.Ready/1.0")
Rel(pkg_packed, wms, "10. Updates WMS state", "WMS API")
Rel(wms, logistics_partner, "11. Hands over parcel for delivery", "EDI")
Rel(logistics_partner, dlv_delivered, "12. Confirms delivery", "PSV / O2C.Order.Delivered/1.0")
Rel(dlv_delivered, inv_invoiced, "13. Triggers invoice generation", "JSON")
Rel(inv_invoiced, erp_finance, "14. Creates invoice record", "JSON / O2C.Order.Invoice/1.0")
|
|
Shape Coverage
This example exercises the following Dynamic diagram shape vocabulary:
| Shape used | Macro | Notes |
|---|---|---|
| Person (internal) | Person |
Customer |
| Person (external) | Person_Ext |
Logistics Partner |
| Container (generic) | Container |
Portal, ERP, WMS, ERP-Finance, integration services |
| Container Queue | ContainerQueue |
Planning Event Bus — first-class runtime participant |
| Forward connector (numbered) | Rel |
All forward steps in the O2C sequence |
| Backward connector | Rel_Back |
Step 5 — ERP returns the order confirmation upstream to the Portal confirmation Service |
| No boundaries | (intentional) | Boundary, Enterprise_Boundary, Container_Boundary must not appear in authored Dynamic diagrams |
Next Steps
- Deployment Diagram Example — Where these containers are physically hosted
- Order-to-Cash C4 Examples
- Import Your First C4 Diagram
Related Topics
- Example C4 Diagrams — Overview of all diagram types
- L2: Container Diagram Example — The containers used in this sequence
- Inspect Grouped Log Views as Runtime Diagrams — Investigation-first runtime inspection for related events
- What is C4 Diagrams?