One data model, not two integrated

Rule

When two systems would claim authority over the same entities, consolidate onto one canonical data model rather than integrating both.

Why

The integration pattern is structural, not technological. With two systems of record, reconciliation requires either a third authoritative source nobody can afford or a one-way master-slave relationship one team must accept losing. Both options usually fail to ship, and the integration limps along producing increasingly stale views.

The lifecycle is predictable: Independent (both work fine on their own terms) → Honeymoon (integration ships; first six months look great) → Ugly Reckoning (scope creep, semantic mismatches, chicken-vs-egg ownership, reconciliation drift). Data quality collapses. People stop trusting the model.

Consolidation accepts a known cost — typically 10–20% of specialist feature depth — in exchange for never running the integration. The maths almost always favour consolidation: you lose depth you’d use occasionally and gain reliability you’d use every day.

The same logic produced the APM/SPM merge into Digital Portfolio Management: two portfolios that share the same dependency map belong in one house on a shared CMDB, not in separate tools glued together.

Applies To

In-platform coworkers, external coding agents, and human operators. Coworkers and agents must avoid creating parallel systems of record (a second graph, a side cache, an export-then-recompute) when a canonical one already exists. Humans must resist the “we’ll integrate them later” pattern when choosing between best-of-breed point tools and a consolidated platform.

How To Apply

When you spot two systems being asked to own the same entity (application, service, CI, portfolio item), surface the consolidation question explicitly. Name the alternatives: consolidate on one, accept the specialist gap on the other, or commit to running the integration with full reconciliation discipline. Prefer the first. If you must integrate, design the master-slave contract before shipping, not after.

Decision Dimensions

Examples

When this does not apply

See also