⏱ 23 min read
Most ArchiMate diagrams fail for one boring reason: the boxes are fine, the lines are nonsense.
That sounds harsh, but it’s true. I’ve seen enterprise architecture teams spend weeks arguing over capability maps, application inventories, platform standards, cloud landing zones, IAM target states, Kafka integration patterns—then publish diagrams where every relationship is either serving, association, or some random line chosen because “it looked right.” At that point, the model stops being architecture and becomes decoration.
If you remember only one thing from this article, let it be this: in ArchiMate, the relationships carry the meaning. The elements matter, yes. But the relationships tell you what depends on what, what changes break what, where responsibility sits, and how strategy becomes operational reality.
And in real enterprise work, that is the whole game.
The simple explanation first
ArchiMate relationships describe how elements are connected. Some relationships show structure (composition, aggregation, assignment). Some show behavior or flow (triggering, flow). Some show dependency or usage (serving, access, influence, realization). And some are just weak links when you don’t know more yet, like association.
When people talk about “dependency relationships” in practical architecture work, they usually mean the set of ArchiMate relationships that answer questions like: ArchiMate training
- What relies on what?
- What consumes what?
- What enables what?
- What constrains what?
- What implements what?
- What will be impacted if this changes?
That is where ArchiMate becomes useful beyond pretty diagrams.
So the short version:
- Serving = one thing provides functionality to another.
- Access = behavior uses or updates data/object things.
- Realization = one thing implements or makes another thing real.
- Influence = one thing affects another, often motivation layer.
- Assignment = responsibility or execution is allocated to a structure element.
- Triggering = one behavior starts another.
- Flow = something is transferred between behaviors or active structures.
- Association = there is a connection, but semantics are unspecified or weak.
That’s the SEO-friendly version. Useful enough for a search result. But if you stop there, you’ll make exactly the same mistakes most architects make.
So let’s go deeper.
Why relationship semantics matter more than most architects admit
A lot of architecture teams model as if relationships are secondary. They are not secondary. They are the architecture.
A box labeled “Kafka Platform” means very little on its own. Is it serving applications? Realizing an integration service? Assigned to a platform team? Accessing configuration data? Triggering downstream processing? Influenced by security principles? Constrained by cloud policy? If you can’t answer those with explicit semantics, you don’t have a model. You have labels.
The uncomfortable truth is that bad relationship choices create bad decisions:
- they hide operational dependencies
- they overstate coupling
- they understate risk
- they confuse accountability
- they make impact analysis almost useless
And then people blame ArchiMate for being “too academic.” No. The notation is not the problem. Sloppy architecture is. ArchiMate modeling guide
The core idea: dependency is not one thing
In enterprise architecture, “dependency” is overloaded. People say “Application A depends on Application B,” but that could mean several very different things:
- A consumes a service from B
- A reads data owned by B
- A is deployed on infrastructure managed by B
- A team is responsible for operating B for A
- A process step cannot execute until B completes
- A policy constrains how B is designed
- A capability is realized partly by B
- A business outcome is influenced by B
Those are not interchangeable. And that’s where ArchiMate is stronger than many simpler diagramming approaches. It gives you multiple relationship types because enterprise dependency has multiple meanings. ArchiMate tutorial
If you model all of those with one generic line, you flatten the architecture into ambiguity.
The dependency relationships that matter most in practice
I’m focusing here on the relationships architects actually use in enterprise work, not every relationship in the language. Purists can relax.
1. Serving: the most abused relationship in ArchiMate
Serving means one element provides functionality or value to another. It’s a “used by” idea from the consumer’s perspective.
In practical terms:
- an application service serves a business process
- a technology service serves an application component
- an IAM platform service serves digital channels
- a Kafka event streaming service serves integration consumers
This is one of the most useful relationships in architecture because it shows consumption dependency. If the provider changes or fails, the consumer is impacted.
Why it matters in real work
Serving is how you show architecture as a service landscape rather than as a box inventory. It answers:
- what capabilities are enabled by which services?
- what applications consume which platform services?
- which business processes rely on which application functions?
Common mistake
Architects often use serving where they really mean flow or access.
Example:
- “Payments API sends transaction events to Kafka.”
Many model this as the API service serving Kafka. That’s wrong most of the time. Kafka is usually serving the producer and consumer applications as a platform capability. The event itself is a flow, and the producer application uses the Kafka service.
That distinction matters. Otherwise, your model implies Kafka is consuming the API’s service. Which is nonsense.
Real example
In a bank, the Customer Identity and Access Management Platform provides authentication and token services to:
- retail mobile banking
- internet banking
- branch teller application
- partner onboarding portal
Those channels use the IAM services. So the IAM application service or technology service serves those applications or business processes.
That tells you something operationally important: if IAM has an outage, customer login and staff access break across multiple channels. That’s a dependency worth making explicit.
2. Access: the relationship that reveals data truth
Access is used when behavior elements interact with passive structure elements like data objects, business objects, or artifacts. It can indicate read, write, or read/write.
This relationship is criminally underused in enterprise architecture. Which is strange, because data dependency is where half the real risk sits.
Why it matters
Access tells you:
- who reads customer profile data
- who updates account status
- which process uses sanctions screening results
- which Kafka consumer writes fraud alerts into a case management object
In real architecture, this is gold. It helps with:
- data ownership discussions
- privacy assessments
- regulatory impact analysis
- migration planning
- event-driven architecture design
Common mistake
Using serving instead of access for data interaction.
If an application process reads a Customer Record, that is not “Customer Record serving the process.” The process accesses the data object.
Another mistake is skipping access altogether and drawing direct associations between applications and data entities. That loses the behavioral context. It matters whether the application stores, reads, enriches, or publishes data.
Banking example
Imagine a retail bank’s mortgage origination process. During onboarding:
- a KYC verification process reads customer identity data
- a credit assessment process reads bureau data and writes risk assessment results
- a document collection process updates application package metadata
- a decisioning service writes approval status
Those are all access relationships to business objects or data objects.
Without modeling access, people assume all systems “just use customer data.” That’s exactly how you end up with 14 unofficial golden sources.
3. Realization: implementation without hand-waving
Realization means one element implements, fulfills, or makes another more abstract element concrete.
This is one of the most important relationships for architecture traceability.
Examples:
- an application component realizes an application service
- a process realizes a business service
- a work package realizes a capability increment
- a cloud platform product realizes a technology service
Why it matters
Realization is how you connect architecture layers without lying.
A capability is not the same thing as an application. A service is not the same thing as a component. A target state is not the same thing as a project. But they can be connected through realization.
This is how you answer serious questions:
- what actually implements our “Customer Authentication” service?
- which platform component realizes event streaming capability?
- which project work packages realize the target IAM operating model?
Common mistake
Using realization as a generic “related to” line.
If everything realizes everything, the model becomes fantasy. Realization should indicate a meaningful abstraction-to-implementation relationship.
Another mistake is using realization where assignment is better. A team does not usually realize a process. A team is assigned responsibility or performs behavior. Realization is not a people-management shortcut.
Kafka example
A bank may define an Event Distribution Service in the application layer. That service is realized by:
- a Kafka platform cluster setup
- topic management components
- schema registry integration
- consumer onboarding automation
That is useful because it separates the architectural service from the underlying implementation pieces. Then when the platform shifts from self-managed Kafka to a managed cloud streaming service, the service remains stable while realization changes.
That’s architecture, not infrastructure inventory.
4. Assignment: the relationship that saves you from accountability theater
Assignment links active structure elements to behavior elements. In plain English, it shows who or what performs, executes, or is responsible for behavior.
Examples:
- a business role is assigned to a business process
- an application component is assigned to an application function
- a technology node is assigned to a technology process
Why it matters
Real architecture work is full of responsibility confusion. Assignment helps answer:
- who operates this service?
- what component executes this function?
- what team performs this process?
- what runtime node runs this technology behavior?
Common mistake
Confusing assignment with serving.
A platform team assigned to operate Kafka does not “serve” the Kafka administration process. They perform or are responsible for it. Different meaning entirely. ArchiMate in TOGAF ADM
Another mistake: assigning a business actor directly to a capability and pretending accountability is modeled. Usually capabilities are enabled by many things. If you want to show execution or responsibility for behavior, assignment should point to behavior, not become a governance shortcut. ArchiMate for governance
IAM example
In a cloud IAM architecture:
- the Identity Operations Team is assigned to the Access Certification Process
- the IAM Platform Component is assigned to the Token Issuance Function
- the Cloud Runtime Node is assigned to the Credential Validation Process
This matters when audits arrive. And they will.
5. Triggering: sequence and dependency in behavior
Triggering shows that one behavior element starts or causes another behavior element.
Examples:
- customer login request triggers token validation
- sanctions screening triggers manual review
- account creation triggers welcome notification
- fraud alert event triggers case creation
Why it matters
Triggering is essential for process dependencies and event-driven design. It gives you temporal and causal structure.
In enterprise work, this helps with:
- process orchestration
- event sequencing
- control design
- failure analysis
- service dependency understanding
Common mistake
Using triggering for every integration.
Not every interface is triggering. Sometimes a process uses a service but does not initiate a new behavior in a modeled sequence. Sometimes data is simply exchanged. Sometimes one application serves another continuously.
Triggering should mean causation in behavior, not “there is an API call somewhere.”
Kafka example
A Payment Posted Event published to Kafka may trigger:
- ledger reconciliation processing
- customer notification processing
- fraud monitoring enrichment
That’s not just technical plumbing. It is operational architecture. If the event is delayed, downstream business outcomes are delayed too.
6. Flow: transfer matters, especially in integration architecture
Flow indicates transfer from one element to another. It can represent information, material, value, or other things moving.
This relationship is especially useful in application and technology scenarios where something is exchanged.
Why it matters
Flow is often the missing relationship in integration diagrams pretending to be architecture diagrams.
You need flow when you want to show:
- transaction events moving through Kafka topics
- identity tokens passed from IAM to applications
- payment instructions flowing to core banking
- logs and telemetry flowing to observability platforms
Common mistake
Replacing flow with association because “it’s simpler.”
Yes, it’s simpler. It’s also weaker. If you care that a token, event, or file is transferred, use flow. Don’t hide movement behind vague connectivity.
Cloud example
In a cloud-native bank platform:
- customer channel sends authentication request
- IAM returns token
- application publishes domain event to Kafka
- downstream analytics pipeline consumes event and forwards curated data to a lakehouse
Those transfers are part of the architecture. Flow gives them shape.
7. Influence: where strategy and constraints stop being fluffy
Influence is typically used in the motivation layer. It shows that one element affects another positively or negatively.
Examples:
- a security principle influences application design
- a regulatory requirement influences data retention policy
- a risk assessment influences target architecture decisions
- a cost optimization goal influences cloud deployment patterns
Why it matters
A lot of enterprise architecture work is not just systems and processes. It’s policy, strategy, risk, compliance, and design principles. Influence is how you model the “why” without pretending it is implementation.
Common mistake
Using influence as a lazy substitute for every difficult relationship.
If a security standard directly constrains deployment, model that appropriately where possible. Influence is not a dumping ground for unresolved thought.
Still, I’ll say this contrarian thing: it is better to use influence honestly than to fake precision. If you know a principle affects a design but the exact mechanism is still being worked through, influence is legitimate. Better an honest coarse relationship than a false detailed one.
Banking example
A bank’s principle of “centralized authentication, decentralized authorization” influences:
- IAM target state
- API gateway patterns
- cloud workload identity design
- privileged access controls
That influence should be visible, because it explains why certain architecture decisions exist.
8. Association: not evil, just overused
Association is the generic relationship. It means there is some connection, but the semantics are unspecified or weak.
Architects love association because it saves time. That is exactly why it becomes dangerous.
My opinion
Association is not bad. It is necessary. Early in discovery, during workshops, or where semantics truly are weak, use it.
But if your final architecture model is mostly associations, you have not finished thinking.
When it is acceptable
- early-stage exploration
- unknown relationship semantics
- informal contextual links
- temporary placeholders in evolving models
When it is not acceptable
- solution design sign-off
- impact analysis models
- operational dependency maps
- governance review artifacts
A mature architecture repository should trend toward semantic precision, not permanent vagueness.
A practical table: what relationship should I use?
Here’s the table I wish more architecture teams had taped to the wall.
How this applies in real architecture work
This is where the topic stops being notation and becomes enterprise architecture.
1. Impact analysis
If your bank wants to modernize IAM, relationship semantics tell you what gets hit.
- Serving shows which channels consume identity services
- Access shows where identity data is read or updated
- Assignment shows which teams and components operate the processes
- Flow shows token and assertion transfers
- Influence shows which security principles and regulations constrain the change
Without these, “IAM modernization” becomes a political argument. With them, it becomes a structured analysis.
2. Platform architecture
Kafka is a perfect example because people model it badly all the time.
A useful Kafka architecture model distinguishes:
- Kafka as a technology/product/platform implementation
- event streaming as a service
- producers and consumers as users of the service
- messages/events as flows
- consumer processing as triggered behavior
- topic metadata and schemas as accessed objects
- platform operations as assigned responsibilities
If you just draw Kafka in the middle with arrows everywhere, congratulations, you’ve built a slide. Not a model.
3. Cloud migration
In cloud architecture, relationship semantics expose hidden dependencies that kill migration plans.
For example:
- applications serve business processes
- applications access customer and transaction data
- cloud runtime services serve applications
- deployment automation components realize technology services
- legacy identity stores influence migration sequencing because of policy and risk
- network and security operations teams are assigned to operational behaviors
This is how you see whether a “simple rehost” is actually blocked by IAM coupling, data access patterns, or service dependencies.
4. Governance and design review
When reviewing architecture, one of the fastest quality checks is relationship discipline.
I often ask:
- Why is this serving and not access?
- What exactly is realized here?
- Is this a trigger or just a flow?
- Who is assigned to operate this?
- Why is this still an association after three design iterations?
Good architects can answer. Weak architecture usually cannot.
Common mistakes architects make with ArchiMate relationships
Let’s be blunt.
Mistake 1: Using association as a comfort blanket
This is the classic one. It avoids commitment. It also avoids meaning.
If the relationship matters, specify it.
Mistake 2: Modeling interfaces instead of dependencies
A REST call is not automatically the architecture. The dependency behind it matters more.
- is one service consumed?
- is data accessed?
- is behavior triggered?
- is information flowing?
Don’t confuse protocol with semantics.
Mistake 3: Mixing abstraction levels in one line
I see this constantly:
- capability directly linked to server
- principle directly linked to API endpoint
- business actor directly linked to Kafka topic
Sometimes there is a valid relationship path, but not always a direct one. ArchiMate gives you layers for a reason. Use them.
Mistake 4: Over-modeling and pretending precision
Contrarian thought: some architects use exact relationships to hide that they don’t understand the enterprise. A perfectly notated wrong model is still wrong.
If you genuinely don’t know whether a dependency is service consumption or data access yet, use association temporarily and mark it for refinement. False certainty is worse than provisional ambiguity.
Mistake 5: Ignoring direction
Direction matters. A service provider serves a consumer. A process accesses data. A trigger goes from initiating behavior to initiated behavior.
Reverse the arrow and the meaning changes. In a large repository, that creates garbage impact analysis.
Mistake 6: Treating relationships as drawing syntax instead of analytical statements
Every relationship should support a question the enterprise cares about:
- what breaks if this changes?
- who owns this?
- what consumes this?
- what implements this?
- what data is touched?
- what is constrained by policy?
If the line doesn’t help answer a question, why is it there?
A real enterprise example: retail bank payments modernization
Let’s make this concrete.
A retail bank is modernizing payments. The target state introduces:
- a cloud-based digital banking channel
- centralized IAM
- Kafka for event streaming
- payment orchestration service
- fraud monitoring service
- core banking integration
- observability and platform operations
The wrong way to model it
Most teams produce a diagram with:
- Mobile App
- IAM
- Kafka
- Payments Service
- Core Banking
- Fraud
- Cloud
Then arrows everywhere. Maybe labels like “API,” “event,” “auth.” Looks busy. Says almost nothing.
The better way
Now model the actual semantics.
Business and application usage
- Mobile Banking Application uses the Authentication Service from IAM → Serving
- Payment Initiation Process uses the Payment Orchestration Service → Serving
Data interaction
- Payment Orchestration Function accesses Customer Account Data and Payment Instruction Data → Access
- Fraud Scoring Function accesses Transaction Risk Profile → Access
Event-driven behavior
- Payment Submission Process triggers Payment Validation Process → Triggering
- Payment Accepted Event triggers Fraud Monitoring Process and Notification Process → Triggering
- Payment Event flows through the event platform to downstream consumers → Flow
Implementation traceability
- Kafka Event Streaming Service is realized by Managed Kafka Cluster, Schema Registry, and Topic Provisioning Automation → Realization
- Authentication Service is realized by IAM Platform Component and Token Service Component → Realization
Accountability
- Platform Operations Team is assigned to Kafka Monitoring and Recovery Process → Assignment
- Identity Operations Team is assigned to Access Policy Administration Process → Assignment
Constraints and motivations
- Strong Customer Authentication Requirement influences Authentication Architecture → Influence
- Cloud-first Principle influences Technology Platform Design → Influence
Why this matters
Now the architecture can answer real questions.
If IAM changes:
- which channels are affected?
- what processes fail?
- what tokens flow where?
- what compliance drivers are involved?
- who operates the impacted components?
If Kafka has a platform issue:
- which services are realized by it?
- what business behavior is triggered off platform events?
- what downstream consumers are delayed?
- which team is assigned to recovery?
That is the difference between architecture as slideware and architecture as operational decision support.
A few strong opinions architects may not like
Opinion 1: If you can’t explain the relationship in plain English, don’t draw it
“Component A realizes capability B via associated service exposure…” Stop. If you can’t say it simply—this service is used by that process, this function reads that data, this team performs that process—you probably haven’t modeled it well.
Opinion 2: Most enterprise repositories are overpopulated with weak semantics
Not because ArchiMate is hard. Because people are rushed, under-trained, or too polite to challenge bad modeling. A repository with fewer elements and better relationships is more valuable than a giant metamodel graveyard.
Opinion 3: Relationship discipline is more important than notation purity
I’ve met architects who know every ArchiMate symbol but still produce useless models. I’d rather work with someone slightly imperfect on notation who deeply understands dependency semantics.
Opinion 4: Event-driven architecture exposed how weak many architects were at relationships
Kafka, event buses, streams, async processing—these made it obvious who understood triggering, flow, access, and serving, and who just drew arrows. Event platforms punish vague thinking.
A practical modeling approach that actually works
If you want better ArchiMate relationship quality, use this sequence:
Step 1: Ask the dependency question first
Before drawing a line, ask:
- Is this usage?
- Is this implementation?
- Is this responsibility?
- Is this sequence?
- Is this transfer?
- Is this data interaction?
- Is this influence?
Step 2: Write the relationship as a sentence
Examples:
- Mobile banking uses IAM authentication service.
- Fraud scoring reads transaction risk profile.
- Kafka platform implements event streaming service.
- Identity Ops team performs access certification process.
- Payment accepted event starts notification processing.
Then choose the ArchiMate relationship that matches the sentence.
Step 3: Check direction
A surprising amount of model quality improves just by validating arrow direction.
Step 4: Avoid direct cross-layer shortcuts unless justified
If a relationship seems too convenient, it probably is.
Step 5: Refine associations over time
Discovery models can be rough. Target-state and governance models should not stay rough forever.
Final thought
ArchiMate relationships are not decorative connectors. They are the semantics of enterprise dependency.
Get them right, and your model becomes useful for impact analysis, cloud migration, IAM design, Kafka platform architecture, governance, and operational risk. Get them wrong, and you’re just drawing enterprise fan fiction with standardized icons.
That may sound severe. Good. Architecture should be held to a higher standard than diagramming.
Especially in banks, where one vague dependency can hide a real control failure.
Especially with IAM, where one misunderstood service relationship can break every channel.
Especially with Kafka, where one bad model can obscure event ownership and operational accountability.
Especially in cloud, where hidden dependencies are what blow up timelines.
So yes, learn the notation. But more importantly, learn to mean what you draw.
That’s the real skill.
FAQ
1. What is the most important ArchiMate relationship for dependency modeling?
There isn’t one. In practice, serving, access, realization, assignment, triggering, and flow do most of the heavy lifting. If forced to choose, I’d say serving and access are the most valuable for day-to-day enterprise dependency analysis.
2. When should I use association instead of a specific relationship?
Use association when the connection is real but the exact semantics are not yet known, or when the relationship is intentionally weak. Don’t leave it there forever in production architecture models if the dependency matters.
3. How do I model Kafka in ArchiMate correctly?
Usually as a combination of elements and relationships:
- Kafka platform or cluster as implementation/platform structure
- event streaming as a service
- producer/consumer applications using that service via serving
- events/messages moving via flow
- downstream processing started via triggering
- schemas/topic metadata used via access
- platform components realizing the service
4. What relationship should I use for IAM and authentication?
Typically:
- IAM authentication service serves consuming applications
- applications and processes may access identity-related data objects
- token or assertion transfer can be shown with flow
- IAM components realize the authentication service
- operations teams are assigned to IAM administration processes
5. What is the most common ArchiMate relationship mistake?
Using serving and association for almost everything. It makes diagrams look connected while hiding the actual meaning of the dependency. That kills impact analysis and weakens architecture governance.
ArchiMate dependency types at a glance
Relationship semantics: structural, dependency, dynamic
- Serving: one element provides functionality/value to another.
- Used-by: inverse view of serving; highlights dependency from consumer side.
- Influence: soft dependency affecting behavior, goals, or outcomes.
- Triggering: sequence or causal flow between behaviors/events.
- Realization: concrete implementation of a more abstract element.
- Assignment: responsibility/allocation of active structure to behavior.
Frequently Asked Questions
What is enterprise architecture?
Enterprise architecture is a discipline that aligns an organisation's strategy, business processes, information systems, and technology. Using frameworks like TOGAF and modeling languages like ArchiMate, it provides a structured view of how the enterprise operates and how it needs to change.
How does ArchiMate support enterprise architecture practice?
ArchiMate provides a standard modeling language that connects strategy, business operations, applications, data, and technology in one coherent model. It enables traceability from strategic goals through business capabilities and application services to the technology platforms that support them.
What tools are used for enterprise architecture modeling?
The main tools are Sparx Enterprise Architect (ArchiMate, UML, BPMN, SysML), Archi (free, ArchiMate-only), and BiZZdesign Enterprise Studio. Sparx EA is the most feature-rich option, supporting concurrent repositories, automation, scripting, and integration with delivery tools like Jira and Azure DevOps.