Skip to main content

How to map from the CALM standard to Ardoq Solutions

Learn how the core concepts of the FINOS CALM standard relate to Ardoq component types, references, and Solutions.

Written by James Tomkins

Software architecture descriptions have historically been produced as documents and diagrams. They are authored once, reviewed, and then drift away from the systems they describe. The Architecture as Code movement addresses this by expressing software architecture in a machine-readable form that can be versioned, generated, and validated in the same pipelines that build and deploy the software.

CALM, the Common Architecture Language Model, is an open standard for doing this, developed under the FINOS Architecture as Code project. CALM defines a JSON Schema for describing an architecture as a set of nodes, the relationships between them, the interfaces they expose, the flows that traverse them, and the controls they must satisfy. Because the description is a schema-validated document, an architecture can be generated from a pattern, checked against that pattern automatically, and rejected at build time if it diverges.

CALM has been adopted primarily within engineering and solution delivery, particularly in financial services. Whilst Ardoq can also be used in this way, it typically operates with a higher-level focus. It holds the enterprise-wide model that connects applications, technology, data, capabilities, processes, people, and change initiatives, and it is used to answer a range of portfolio, governance, and strategy level questions. The two models are complementary: CALM describes a solution precisely, Ardoq describes the landscape those solutions sit within.

Increasingly, organizations running both want to understand how they can connect these 2 models to help provide deployment-level detail to their enterprise context and help provide additional context and assurance to deployment teams.

This Article

This article describes Ardoq's recommended approach to mapping the CALM core concepts onto Ardoq concepts. It covers:

  • How CALM Nodes map to Ardoq Component Types

  • How CALM Relationships map to Ardoq References

  • How CALM Interfaces map to the Ardoq Interface component type

  • How CALM Flows map to Ardoq Processes

  • How CALM Patterns map to the Ardoq Pattern component type

  • CALM concepts that have no direct Ardoq equivalent

  • Practical considerations when moving data between the two

Note: CALM is an evolving standard and this article reflects current best practice against the current CALM release and current Ardoq platform capability. Both will change. Where you need a mapping that is not covered here it is recommended you consult with Ardoq Professional Services or an Ardoq Partner.

A Difference of Intent

Before mapping individual concepts it is worth being explicit about where the two models differ, because this shapes the guidance that follows.

CALM is deployment-precise. A CALM node carries a host, a port, a container image, and the identity it runs as. It describes a single architecture, usually a single solution, in enough detail that a machine can verify it.

Ardoq is enterprise-broad. The Ardoq model deliberately abstracts away runtime detail so that thousands of applications can be compared, rationalized, and traced to business outcomes. The same abstraction that makes Ardoq useful across an enterprise makes it potentially less suitable for deployment-level detail, for example, a port number for every deployed service instance.

The consequence is that the mapping is not always symmetrical. Moving from CALM to Ardoq often involves losing detail deliberately. Moving from the Ardoq model to CALM involves adding detail that Ardoq may not hold. Neither is a defect. They are different tools answering different questions.

The recommended high-level mapping is summarized below and each mapping is described in turn in the sections that follow.

CALM Concept

Ardoq Concept

Notes

Node

Component, of a Component Type

The CALM node-type determines the choice of Ardoq Component Type

Relationship

Reference, or a Reference Type*

The CALM relationship-type determines the choice of Ardoq Reference Type

Interface

Interface

Direct, with type-specific detail held in fields

Flow

Process

Transitions become ordered Process Activities

Pattern

Pattern

Conceptually direct, but conformance is established differently

Control

Control, Requirement, Risk

Direct in structure; Ardoq adds risk, ownership, and deployment

Metadata, Decorators

Fields and Tags

Indirect

Timeline

Future State, Transition Architecture

Indirect

Table 1. Summary mapping between CALM concepts and Ardoq concepts

*depending on your needs you may also choose to model a CALM relationship as a component in its own right, but conceptually the CALM relationship is most directly aligned to an Ardoq Reference.

Nodes and Component Types

A CALM node is the primary building block of an architecture, described in the standard as the boxes that represent people, systems, services, databases, or networks. Every node carries a mandatory unique-id, a node-type, a name, and a description. See Nodes in CALM.

Ardoq's equivalent building block is the Component. Where CALM holds the kind of thing as a node-type property on an otherwise generic node, Ardoq holds it in the component type itself, defined in the metamodel. Mapping a CALM node into Ardoq is therefore primarily a decision about which component type to create it as.

The recommended mapping for the CALM node types is shown below.

CALM node-type

Ardoq Component Type

Notes

actor

Person, Role, or Organizational Unit

Use Role where the actor is a job function rather than a named individual

system

Application

Use Application where the system has an identifiable business owner

service

Application Module, Application, or Technology Service

Application Module where the service belongs to an Application;

Application (business facing) or Technology Service (application facing) where it is a shared platform capability

database

Data Store

Link to Data Entity using 'Is Stored On' where the data held is significant

webclient

Application Module

Parented under the Application it belongs to

network

Custom 'Network Zone' Component Type

Ardoq Solutions do not model networks as components by default (stored as a related Field)

data-asset

Data Store, Data Entity, or Information Asset

Data Store if it is embedded part of a system

Data Entity if it represents a logical data asset e.g. Sales Figures; Information Artifact if it represents a shared physical file e.g. ‘Price List.xls’

ldap

Application, or Technology Service

A user directory Application such as Entra or supporting Technology Service.

Table 2. Recommended mapping between CALM node types and Ardoq Component Types

Key points:

  • Granularity - CALM nodes are typically finer-grained than Ardoq components. A single Ardoq Application may correspond to multiple CALM nodes spread across several architecture documents. It may not be useful to create one Ardoq component per CALM node. Instead, decide the level at which the enterprise needs visibility and roll up everything below it. The details.detailed-architecture property on a CALM node is useful here: it identifies where the finer-grained description lives, and that URL can be held in a field on the Ardoq component so that architects can drill through from the portfolio view into the design. For example, typical use cases might be the population of Ardoq with architecturally relevant components, or population for the purpose of detecting architectural drift away from an approved standard or reference architecture. These 2 cases may require different levels of granularity,

  • Identity - As with any integration, it is advised to always bring the CALM unique-id across into a dedicated field on the Ardoq component. Without a stable identifier, subsequent synchronization can become difficult or error prone.

Relationships and References

CALM relationships are the arrows. They connect two or more nodes and carry a relationship-type of interacts, connects, deployed-in, or composed-of, optionally with a protocol and a set of controls. See Relationships in CALM.

Ardoq's equivalent is the Reference. Ardoq reference types are named semantically rather than structurally, so the mapping is a matter of choosing the reference type that carries the same meaning.

CALM relationship-type

Ardoq Reference Type

Notes

interacts

Consumes

Consumes where the source is an actor node.

Connects To or Accesses for non-actors.

connects

Connects To, or Accesses

deployed-in

Is Supported By, or Deploys To

Is Supported By shows deployed technology dependencies

Deploys To is used where the source is a Technology Product

composed-of*

Is Parent Of

Model as component hierarchy rather than a flat reference

Table 3. Recommended mapping between CALM relationship types and Ardoq reference types

*The composed-of relationship is worth calling out. In CALM it is a relationship like any other. In Ardoq, parent and child structure is a first-class part of the component hierarchy rather than an ordinary reference. Modelling CALM's composed-of as Ardoq hierarchy, for example an Application that is parent of its Application Modules, gives you the grouping, filtering, and roll-up behavior that Ardoq views may depend on. Representing it as a flat reference will work, but that behavior is lost.

The CALM protocol property maps naturally onto a field on the Ardoq reference. Where you are using the Application Integration Management (AIM) Solution this aligns with how integrations are already described.

Interfaces

CALM interfaces define the points at which a node exposes its functionality: host and port, hostname, path, URL, OAuth2 audience, rate limit, container image, or port alone. See Interfaces in CALM.

Ardoq provides an Interface component type, contained within the Application Integration Management Solution. An Interface is a child of an Application, Application Module, or Data Store. Applications, Application Modules, and Data Store are integrated via a 'Connects To' reference to the relevant Interface. An Interface may supply one or more Data Entities.

This is the most direct of the mappings and one of the more useful. A CALM interface becomes an Ardoq Interface component parented under the component representing its node. The CALM interface type maps to a field on the Interface component, and the type-specific properties such as host, port, path, and URL can be captured via additional fields.

The value here is not the technical detail itself but what it enables. Interfaces sourced from validated CALM documents give an accurate and current picture of how applications actually connect. That is the foundation for integration analysis, for understanding the blast radius of a change, and for data lineage.

Note: Ardoq recommends that Applications and related components integrate through connection to defined Interfaces. However, CALM does not always require an interface to be defined in order to define a relationship, and the calling side of a connection is often left implicit. A modeling decision can be taken here as to whether to align with the Ardoq model or to allow the connection as a reference between the two components instead. More information in Ardoq’s recommendation can be found in the Application Integration Management Solution.

Flows and Processes

A CALM flow describes a business process as it moves through the technical architecture. It is an ordered sequence of transitions, each referencing an existing relationship by unique-id and carrying a sequence-number, a description, and a direction. Flows exist to connect business intent to the components that implement it. See Flows in CALM.

Ardoq expresses the same intent through the Process component type and its children, Process Activities. A Process may be parent of Process Activities, is supported by Applications, accesses Data Entities, and realizes Business Capabilities and Value Stream Stages.

The recommended mapping is:

  • The CALM flow becomes an Ardoq Process, carrying across the flow name and description

  • Each CALM transition becomes a Process Activity beneath that Process, ordered by sequence-number

  • The relationship each transition references identifies the applications involved, which are linked from the Process using 'Is Supported By'*

  • Flow-level controls are handled as described in the section on concepts without a direct equivalent, below

*Process Activity level linkage to applications can also be preserved if required.

The step from CALM flows to Ardoq processes is where more enterprise value is unlocked, because it is the point at which technical detail meets the business model. Once a flow is represented as a Process in Ardoq it can be attached to the Business Capabilities it realizes and the Value Streams it serves. These are connections CALM has no way to express, and they are the basis for questions such as which capabilities are exposed if a given service becomes unavailable.

Where broader processes are being modelled in detail, the ShiftX process mapping add-on may be a better home for the sequence itself, with the Ardoq Process retained as the point of connection to the wider model. Flows can be simply imported into ShiftX via the AI Process Builder. An example of an AI imported flow can be seen in Example 7.

Patterns

CALM patterns are reusable architecture templates expressed as JSON Schema. They serve two purposes: generating a scaffold for a new architecture, and validating that an existing architecture conforms to a required structure. Constraints such as const, prefixItems, minItems and maxItems, and oneOf express which nodes must exist, how they must connect, and where implementers are free to choose. See Patterns in CALM.

Ardoq provides a Pattern component type as part of the Architecture Records (REC) Solution. A Pattern sits within a Category, is realized by Applications and Technology Products, and may refer to other Patterns. Patterns are typically linked to their full documentation using the Document URL field. This Document URL field can be used to store the link to the CALM pattern schema document. See Using Reference Architectures in Ardoq.

Conceptually these are the same idea: a reusable blueprint that constrains design. A CALM pattern maps cleanly onto an Ardoq Pattern component, with the pattern's $id or repository URL held in the Document URL field so that architects can reach the machine-readable definition from the portfolio view.

The difference lies in how conformance is established. CALM validates conformance mechanically: the validate command either passes or fails. At present, Ardoq records conformance as a modelled relationship. The 'Is Realized By' reference from Pattern to Application states that an application implements the pattern, and comparing the Technology Products included in the pattern against those actually deployed reveals divergence. Automated conformance within Ardoq is currently under active development and can be approximated using the AI Assistant with direction to the relevant Pattern component (and accompanying CALM pattern schema) and Application architecture.

Used together these are stronger than either alone. CALM tells you whether a design conforms today. Ardoq tells you how many applications are subject to a pattern, who owns it, what technology it commits you to, and what the portfolio-wide cost of divergence is. Where a CALM pattern is enforced in a delivery pipeline, recording the corresponding Ardoq Pattern gives architecture governance visibility of that enforcement.

There is a natural extension here. Where a CALM node carries a details.required-pattern, that is a direct statement that a given component must conform to a given pattern, and it can be represented as a reference from the Ardoq component to the relevant Pattern.

Controls

A CALM control expresses a domain requirement, such as a security control permitting only approved connection protocols or a resiliency control requiring a defined recovery time, and attaches it to a node, a relationship, a flow, or the architecture as a whole. Each control pairs an abstract requirement, referenced by requirement-url as a JSON Schema, with a config that supplies the concrete values fulfilling it. Because that configuration is machine-readable, CALM can validate mechanically whether an architecture conforms.

Ardoq represents controls as a first-class Control component type, introduced by the Application Risk Management Solution. A Control sits within a Control Category, mitigates one or more Risks, deploys to one or more Applications with a deployment date, and is realized by the applications, technologies, or policies that implement it. Requirements drawn from adopted frameworks and corporate policies are modelled as Requirement components beneath an Information Artifact representing the framework or policy document, and are realized by the Controls that satisfy them.

The two models share a useful piece of structure. CALM already separates the abstract requirement from the concrete configuration that fulfils it, and Ardoq makes the same separation between a Requirement, owned by a framework or policy, and a Control, owned by a control owner. That symmetry means that identical requirement-url values appearing across many CALM architectures collapse to a single Requirement component in Ardoq.

CALM concept

Ardoq concept

Notes

Control

Control

Name and description carry across;

Control domain, for example security or resiliency

Control Category

Categories may be nested to whatever depth is useful

control-requirement-url

Requirement, beneath an Information Artifact

The Information Artifact represents the framework or policy; the Requirement Is Realized By the Control

control-config-url

Fields on the Control, or on the Deploys To reference

This is deployment-specific realization, so it belongs with the deployment

Control attached to a node

Control Deploys To Application, with a Deployment Date

The date drives Ardoq’s current risk calculations

Control attached to a relationship or flow

No reference-level equivalent

Attach to the Applications at each end of the relationship

Standard

Requirement, beneath an Information Artifact

Treated in the same way as a control requirement

Table 4. Recommended mapping between CALM controls and Ardoq controls

CALM has no concept of risk. There is no equivalent of Ardoq’s Mitigates reference, no Likelihood Effect or Impact Effect on a control, and no exposure calculation. Everything quantitative in the Ardoq model, including the red and green thresholds held on the Application, has no CALM source and must be supplied by risk and control owners. A CALM import can populate the control library and record which controls are deployed where. It cannot populate the risk assessment. See Application Risk Management: Purpose, Scope, and Rationale for how those values are established.

Ardoq records that a control was deployed to an application on a given date. CALM can prove that the deployed configuration meets the requirement. This is the most valuable thing CALM has to contribute to the enterprise model, because it turns an asserted deployment into an evidenced one. Where a CALM validation run fails, that is a signal the corresponding Deploys To reference in Ardoq is overstating the position.

The differences described here create a level of ambiguity between the precise convergence of Controls between CALM and Ardoq so a review of the intended model should be undertaken prior to implementation.

Where the Application Risk Solution is not in use, the alternative is to represent the requirement as a Policy or Standard within the Architecture Records Solution and to record fulfilment through a Compliance Assessment. This is a reasonable option where there is no risk register for controls to connect to. See How to represent Policies, Principles, Standards, and Frameworks in Ardoq.

Concepts Without a Direct Equivalent

Several CALM concepts have no single Ardoq counterpart. The recommended treatment is described below.

Metadata and Decorators attach supplementary information to architecture elements. These map to Ardoq fields on the relevant component or reference, or to tags where the information is used for filtering rather than analysis.

Standards extend CALM elements with organizational requirements and are handled in the same way as Controls.

Timelines track how an architecture evolves through significant moments. Ardoq addresses this need through Future States and Transition Architectures. See Modeling Future States and Transition Architectures in Ardoq.

Widgets generate Markdown documentation from a CALM model. The equivalent need in Ardoq is met by Viewpoints, reports, and presentations, and no data mapping is required.

Practical Considerations

Decide the direction of travel. Importing CALM documents into Ardoq to enrich the enterprise model is a different exercise from generating CALM scaffolds from Ardoq. The first requires rules for abstraction. The second requires that Ardoq holds enough deployment detail to be useful, which for most customers it deliberately does not.

Do not import everything. A CALM repository across a large delivery organization will contain far more nodes than the enterprise model should hold. Agree in advance which node types are of enterprise interest, typically systems, services, databases, and their interfaces, and leave the remainder in the architecture documents, reachable through detailed-architecture links.

Master the data where it belongs. Where CALM documents are the authoritative source for interfaces and connections, consider holding the resulting components in Managed Workspaces so that the data stays synchronized and is not edited in two places. See Managed Workspaces and Data Sync Strategy on Import.

Preserve identifiers. Bring the CALM unique-id across for every node, relationship, interface, and flow that you import, and hold it in a dedicated field.

Expect the mapping to be opinionated. There is a high degree of variability in how organizations use both CALM and Ardoq. The mappings above cover the clearest and most common cases. Where you need to go further it is recommended you consult with Ardoq Professional Services or an Ardoq Partner.

Examples

The following examples are drawn from the Trading System example provided in the CALM GitHub repository.

Example 1 - CALM imported into Ardoq using native CALM types

Example 2 - CALM imported into Ardoq using Ardoq model types

Example 3 - CALM imported using Ardoq model types and extended to include custom ‘Operations’

Example 4 - CALM imported including deployment of embedded controls

Example 5 - CALM flow modeled as an Ardoq Process

Example 6 - CALM flow modeled with activity and module level references

Example 7 - CALM flow modeled in ShiftX by AI import

Notes on Data import

CALM is provided as JSON which can be imported into Ardoq using the JSON Importer or scheduled for import using the Ardoq Import Builder. Depending on the detail required for import some JSON transformation may be required in order to access the deeply nested JSON structures. This should be undertaken prior to import. A simple way of achieving this is to point Claude (or equivalent) at this article and the relevant CALM JSON file.

Further Information

Document Version

Version

Date

Author

Comments

1.0

13th August 2026

James Tomkins

Initial version

Did this answer your question?