- 7 minutes to read

Repository Properties for C4 Diagramming

C4 Diagrams is part of experimental builds. To access this capability, contact your sales representative.

C4 Diagrams in Nodinite reuse existing Repository entities — no new top-level entities are required. However, a small set of new properties on Systems and Services must or should be set to get accurate C4 notation and meaningful diagrams.

This page is the complete reference for all C4-related properties, their values, whether they are required or optional, and what happens when they are not set.


System Properties

Systems in the Repository are used as actors in C4 diagrams — they appear above and below the Domain swimlane stack as Persons, Internal Systems, or External Systems.

C4Type (required for C4 actor inclusion)

Controls how a System is rendered in C4 diagrams and what Mermaid syntax is emitted.

Value Meaning Mermaid emitted Canvas icon Position hint
None (default) System not intended for C4 diagrams (not emitted)
Person A human user or role (customer, staff, partner) Person(alias, "Name", "Role") Above lanes (default)
InternalSystem An internal software system you own System(alias, "Name", "Desc") Above lanes (default)
ExternalSystem Third-party, SaaS, or partner system System_Ext(alias, "Name", "Desc") Below lanes (default)

Where to set it: Repository → Systems → edit a System → C4 tab → C4 Type field.

If not set (None): The System does not appear in the Actors toolbox panel and cannot be dragged onto the C4 canvas. Systems with C4Type = None remain fully functional in all other Repository features (BPM, Landscape, etc.).

C4PersonRole (optional — Person types only)

A short subtitle describing the role of a Person actor. Displayed beneath the person's name on the canvas and emitted as the third parameter in Person(alias, "Name", "Role").

Example values Use case
"Customer" External individual purchasing goods/services
"Administrator" IT admin managing the platform
"Finance Analyst" Business user accessing finance reports
"Partner" External organization or EDI trading partner

If not set: An empty string is used in the Mermaid output. The Person node still renders correctly.

C4PositionHint (optional)

A default placement guidance for the actor when dropped onto the canvas. The designer uses this hint to pre-select the above-lane or below-lane actor zone.

Value Meaning
None (default) No placement preference — designer places based on C4Type defaults
Top Place above the lane stack (Persons and InternalSystems usually go here)
Bottom Place below the lane stack (ExternalSystems usually go here)

If not set: The designer applies the default placement based on C4Type:

  • Person and InternalSystem default to Top
  • ExternalSystem defaults to Bottom

Service Properties

Services in the Repository are used as containers inside Domain swimlanes — the applications, APIs, databases, and message buses in a C4 Container diagram.

C4ContainerType (required for accurate notation)

Classifies the Service as a specific type of C4 Container. Drives the Font Awesome icon shown on the canvas node and the correct C4 semantic label in the Mermaid output.

Value C4 Container meaning Canvas icon Mermaid emitted
None (default, 0) Generic container — unspecified type Container(alias, "Name", "tech", "desc")
WebApp (1) Web application or single-page app Container(alias, "Name", "tech", "desc")
MobileApp (2) Mobile application (iOS/Android) Container(alias, "Name", "tech", "desc")
API (3) RESTful web API, HTTP endpoint, or gRPC service Container(alias, "Name", "tech", "desc")
Database (4) Relational, document, or other datastore ContainerDb(alias, "Name", "tech", "desc")
MessageBus (5) Message queue, event bus, or broker ContainerQueue(alias, "Name", "tech", "desc")
Microservice (6) Microservice Container(alias, "Name", "tech", "desc")
Function (7) Serverless function or scheduled job Container(alias, "Name", "tech", "desc")
EventStream (8) Event stream (Kafka, Event Hub, etc.) ContainerQueue(alias, "Name", "tech", "desc")
FileStore (9) File store or blob storage Container(alias, "Name", "tech", "desc")

Where to set it: Repository → Services → edit a Service → C4 tab → C4 Container Type field.

If not set (None): The Service renders as a generic rectangle with the icon. All other C4 diagram functionality works normally — only the visual fidelity and Mermaid semantic are affected.

A free-text string describing the technology stack or platform of this Service. This becomes the $techn (technology) parameter in the Mermaid Container(...) block and appears as a small subtitle beneath the service name on the canvas.

Example values What they document
"ASP.NET Core 9" The web API framework
"PostgreSQL 16" The database product and version
"Azure Service Bus" The message bus platform
"BizTalk Server 2020" Legacy on-premise integration platform
"Node.js / Express" Microservice runtime
"Azure Logic Apps" Cloud-native workflow service

Where to set it: Repository → Services → edit a Service → C4 tab → C4 Technology field.

If not set: An empty string is emitted for the $techn parameter. The diagram renders, but stakeholders lose the technology context that makes C4 Container diagrams valuable.


Service Properties — Shared with BPM

The following properties exist on Services for BPM purposes but are reused by C4 Diagrams:

ArtifactRenaming (optional — shared with BPM Designer)

Overrides the display name of the Service on the canvas without changing the name in the Repository. The renamed label is also used in the Mermaid output (as the node's display name) and in any export.

Without ArtifactRenaming With ArtifactRenaming
Canvas shows: INT1337-OutboundOrderService Canvas shows: Outbound Orders
Mermaid: Container(svc_42, "INT1337-OutboundOrderService", ...) Mermaid: Container(svc_42, "Outbound Orders", ...)

This is the same rename capability used in the BPM Designer and stored in the same column.


Implicit vs Explicit Properties

Some properties are set explicitly by an administrator before designing a C4 diagram. Others are applied implicitly by the designer during operation.

Property Set by Required before diagramming?
Systems.C4Type Administrator / data steward Yes — Systems without a C4Type do not appear in the Actors toolbox
Systems.C4PersonRole Administrator / data steward No — defaults to empty string
Systems.C4PositionHint Administrator / data steward No — defaults based on C4Type
Services.C4ContainerType Administrator / data steward Recommended — defaults to generic Container
Services.C4Technology Administrator / data steward Recommended — defaults to empty string
Services.ArtifactRenaming Designer (in Properties sidebar) No — optional display name override
C4DiagramLanes.LaneOrder Designer (drag to reorder) Managed automatically by designer
C4DiagramServices.X, Y, Width, Height Designer (drag to position) Managed automatically by designer
C4DiagramConnectors.Label, Protocol Designer (Properties sidebar after drawing) Recommended — label and protocol default to empty

Preparing Your Repository for C4 Diagramming

To get the best results from C4 Diagrams, follow this preparation checklist:

Systems Checklist

  • Every System that represents an end user or human role has C4Type = Person
  • Every System that represents an external partner or SaaS has C4Type = ExternalSystem
  • Every System that represents an internal platform has C4Type = InternalSystem
  • Systems not intended for architectural diagrams remain as C4Type = None
  • Person-type Systems have a meaningful C4PersonRole value

Services Checklist

  • Every Service has a C4ContainerType set to its correct architectural role
  • Every Service has a C4Technology value (e.g., framework, database product, or platform name)
  • Services with long internal codes use ArtifactRenaming for business-friendly display names

Frequently Asked Questions

Do these properties affect BPM or other Repository features?

C4Type and C4ContainerType are new columns added to Systems and Services respectively. They are only used by C4 Diagrams and have no effect on BPM, Log Views, Monitor Views, or the Integration Landscape. ArtifactRenaming already existed for BPM and is shared.

Can I set C4 properties via the Web API?

Yes. All properties on System and Service entities are accessible via the Nodinite Web API. You can bulk-update C4Type and C4ContainerType across your entire Repository using a script, which is recommended for large environments. See the Web API documentation for endpoint details.

What happens to the Mermaid output if C4Technology is blank?

The Container(...) block is emitted with an empty string for the $techn parameter. The diagram renders correctly; the technology label simply does not appear on the Mermaid-rendered node. For maximum architectural clarity, setting C4Technology is strongly recommended.

Can I change C4Type or C4ContainerType for an entity already placed in a diagram?

Yes. Because these are global Repository properties, changing them updates all diagrams that include that entity immediately. The canvas and Mermaid output reflect the new value on next load.