- 4 minutes to read

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.

See Example C4 Diagrams for an overview of all diagram types and when to use each.

To use this example in Nodinite, copy the Mermaid markup below and follow the Creating Your First C4 Diagram import walkthrough to create a Diagram Set, import the markup, and bind nodes to your Repository.

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

Import and round-trip support: When a C4Dynamic diagram 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.

No boundaries in authored Dynamic diagrams: Boundary, Enterprise_Boundary, and Container_Boundary shapes must not appear in stored C4Dynamic diagrams. This rule applies to authored Dynamic diagrams in a Diagram Set. The grouped Log View runtime inspection view 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:

  • ContainerQueue as a first-class participant (Planning Event Bus)
  • Rel_Back for the ERP → Portal order confirmation return (step 3)
  • Person_Ext for 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(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, rcv_order, "5. Returns booking confirmation", "CSV / O2C.Order.Confirmation/1.0") Rel(rcv_order, portal, "6. Delivers confirmation to customer", "CSV") 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")
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(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, rcv_order, "5. Returns booking confirmation", "CSV / O2C.Order.Confirmation/1.0")
    Rel(rcv_order, portal, "6. Delivers confirmation to customer", "CSV")
    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 booking confirmation upstream
No boundaries (intentional) Boundary, Enterprise_Boundary, Container_Boundary must not appear in authored Dynamic diagrams

Next Step

See the Deployment Diagram Example to understand where these containers are physically hosted.