06Context maps as coordination contracts

Each dependency made explicit, and the way of working each relationship implies between teams.

No division of a product removes every dependency. Bounded contexts still need each other: an order needs a compatibility result, an administration record needs an issued unit. What DDD changes is that each dependency becomes explicit, has a known shape and has an agreed way of being managed. The context map is where that agreement is written down.

Relationships, not just arrows

Most architecture diagrams show that two components talk to each other. A context map says more: it states which side adapts to which, who can ask for changes, and where translation happens. Evans and later authors named a small set of recurring relationships, and each of them implies a different way for the two teams to work together.

RelationshipWhat it meansWhat it means for the Scrum teams
PartnershipTwo contexts succeed or fail together and evolve in stepJoint refinement and aligned Sprint Goals. Expensive; keep it rare and temporary
Shared kernelA small part of the model is owned jointlyChanges need both teams' agreement. Keep the kernel as small as possible
Customer–supplierThe downstream team's needs shape the upstream team's prioritiesDownstream needs enter the upstream backlog; downstream representatives attend the upstream Sprint Review
ConformistThe downstream team accepts the upstream model as it isNo negotiation and no shared ceremonies, at the cost of absorbing every upstream change
Anticorruption layerThe downstream team translates the upstream model into its ownThe downstream team owns the translation and is shielded from upstream changes
Open host service and published languageThe upstream team offers a stable, documented interface to all consumersThe interface is a product in its own right, versioned and covered by contract tests in the Definition of Done
Separate waysThe contexts do not integrateNo coordination at all, often the cheapest choice

Table 3 · Context map relationships and the coordination each implies between Scrum teams.

The transfusion example

In the running example, the map might look like this. Ordering is a customer of Compatibility: when physicians need a new kind of request, the Compatibility team puts it in its backlog. Inventory receives units from the regional blood establishment's system, which it cannot change, so it protects itself with an anticorruption layer that translates the external format into its own model. Bedside administration relies on the hospital's patient administration system for identities, again through an anticorruption layer. Traceability and haemovigilance consumes events published by Inventory and Bedside administration in a published language: unit issued, unit administered, reaction reported. Billing goes its own way and reads a nightly extract.

Each of those sentences is a decision about how two teams will work together. Taken together, they replace a large part of the coordination meetings, dependency boards and integration sprints that multi-team Scrum tends to accumulate.

Less coordination by design

Scaling frameworks manage dependencies once they exist: joint planning events, integration teams, programme boards. Those mechanisms are useful, and Scrum in Name Only showed that they restore accountabilities single-team Scrum leaves out. But every dependency they manage costs time in every sprint.

A context map works upstream of them. It reduces the number of dependencies by design and gives the remaining ones a stable shape. The best coordination meeting is the one the architecture made unnecessary.

Section takeaways

  • A context map turns each dependency between teams into an explicit relationship with a known owner and a known direction of adaptation.
  • Each relationship type implies a specific way of working between Scrum teams, from joint refinement to no coordination at all.
  • Scaling frameworks manage dependencies; context maps reduce them. The two work best together.