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:
PersonandInternalSystemdefault to TopExternalSystemdefaults 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.
C4Technology (recommended — required for meaningful Mermaid output)
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
C4PersonRolevalue
Services Checklist
- Every Service has a
C4ContainerTypeset to its correct architectural role - Every Service has a
C4Technologyvalue (e.g., framework, database product, or platform name) - Services with long internal codes use
ArtifactRenamingfor 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.