01

Define the domain language

Teams often use the same word for different things or different words for the same thing. A shared domain model makes entities, relationships and states explicit.

This language should appear in software, documentation and operational conversations.

02

Separate facts, state and history

A customer, order or asset is different from the current workflow state around it. Historical events are different again.

Separating these concerns helps the system answer what exists, what is happening now and how it reached that point.

03

Assign data ownership

Every important field and state needs a source that is authoritative. Other systems may copy or enrich it, but ownership must remain clear.

Integration contracts should specify when data is created, updated and reconciled.

04

Expose uncertainty and freshness

Not every value is equally current or trustworthy. Show when data was last confirmed, where it came from and whether it is incomplete.

This gives users a more accurate operational picture than presenting stale information as certainty.

05

Make change traceable

Record meaningful state changes with time, actor, reason and relevant evidence.

An event history supports audit, debugging, recovery and improvement without forcing users to reconstruct events from messages.

06

Do not centralize everything by default

A trustworthy operational picture can be composed from multiple well-owned systems. Centralizing every field may create a new bottleneck and duplicate responsibility.

Use clear contracts and references so each system owns the facts it understands while the operational layer assembles the context people need.

07

Make the source of truth usable

Accuracy matters, but people also need timely access, understandable language and clear actions. A technically correct database does not help when operators cannot see why a status changed or what to do next.

Design the operational view, event history and correction path together with the underlying ownership model.