Fragmentation is an integration problem first
Large organizations run long lists of applications: ERP, CRM, core operational systems, SaaS tools, spreadsheets that became systems, and acquired companies that were never fully absorbed. Each holds a partial view of customers, products, assets and transactions. The symptoms are familiar: reports that disagree, the same customer under five identifiers, integration work that consumes a growing share of every project, and AI pilots that spend most of their time finding and reconciling data.
The usual response is a platform decision: a new warehouse, a lakehouse, a data cloud. That decision matters, and our articles on warehouse, lake, lakehouse and mesh and on Snowflake, Databricks and data marts cover it. But a platform is a destination, not a connection. Organizations that migrate to a modern platform without changing how data moves between systems end up with the same fragmentation, now with a faster query engine on top.
Our thesis: a unified data foundation is built flow by flow, not platform by platform. Each important data flow needs the right integration pattern, the core business entities need a small number of shared definitions, and legacy connections need to be retired in a planned order. The platform is where the result lands.
The arithmetic of fragmentation explains why. If every system translates directly to every other, the number of translations grows roughly with the square of the number of systems. Hohpe and Woolf's Enterprise Integration Patterns describes the alternative: a canonical model that every system translates to and from once, so translations grow in a straight line.
Figure 1
Point-to-point translations grow with the square of the number of systems
Translators needed when every system translates directly to every other, versus to and from one canonical model
- 2 systems24
- 3 systems66
- 6 systems3012
- 10 systems9020
- 20 systems38040
Below three systems a canonical model adds work. Beyond that, the gap widens with every system added.
Five patterns, each right for a different flow
There is no single best integration technology. There are patterns, each suited to a particular combination of latency, volume, coupling and ownership. Most enterprises need all of them, and most integration estates go wrong by applying one pattern everywhere.
Figure 2
Five integration patterns, each right for a different kind of flow
Most estates need all five. Problems start when one pattern is used everywhere.
- Batch ETL / ELTHours to a dayReporting, finance, model trainingSilent truncation; stale data for operational use
- Change data captureSeconds to minutesGetting changes out of legacy databases without modifying themSchema changes in the source; log retention
- Event streamingSub-second to secondsOperational processes reacting to business eventsDual writes; events designed without contracts
- APIsOn requestTransactional lookups and digital channelsBulk extraction loading operational systems
- VirtualizationAt query timeOccasional combined access without copyingHides inconsistency; slowest source sets performance
Batch ETL / ELT
Hours to a day
Best for: Reporting, finance, model training
Watch for: Silent truncation; stale data for operational use
Change data capture
Seconds to minutes
Best for: Getting changes out of legacy databases without modifying them
Watch for: Schema changes in the source; log retention
Event streaming
Sub-second to seconds
Best for: Operational processes reacting to business events
Watch for: Dual writes; events designed without contracts
APIs
On request
Best for: Transactional lookups and digital channels
Watch for: Bulk extraction loading operational systems
Virtualization
At query time
Best for: Occasional combined access without copying
Watch for: Hides inconsistency; slowest source sets performance
Change data capture is highlighted because it is usually the lowest-disruption first step for legacy systems.
Batch ETL and ELT remain the backbone of analytics. ETL transforms data before loading it; ELT loads raw data into the target platform and transforms it there, which suits modern cloud platforms with cheap storage and elastic compute. Batch is simple, auditable and cheap, and its weakness is latency. It is the right default for reporting, finance and most model training.
Change data capture (CDC) reads changes from a source database and propagates them as they happen. Log-based CDC reads the database's transaction log rather than querying tables. The documentation for Debezium, a widely used open-source CDC project, lists the advantages: all changes are captured, including deletes; latency is low without heavy polling load; and no "last updated" column is needed in the source. CDC is often the least disruptive way to get data out of a legacy system that cannot be changed.
Event streaming publishes business events, such as an order placed or a payment received, to a durable log such as Apache Kafka, where any number of consumers can read them independently. It suits operational processes that must react in seconds and decouples producers from consumers. Its cost is operational complexity and the discipline of designing events as contracts. A common trap is the "dual write", where an application updates its database and publishes an event as two separate steps; a crash between them leaves the two out of step. The transactional outbox pattern, which writes the event to the database in the same transaction and publishes it afterwards, is the standard remedy.
APIs expose data and functions on request. They are right for transactional lookups, such as checking a customer's eligibility, and for exposing a system's capabilities to digital channels. They are a poor way to move large volumes for analytics, because they put query load on operational systems.
Data virtualization queries data where it sits and presents a combined view without copying. It is useful for low-volume, exploratory or compliance-sensitive access where copying data is undesirable. It does not remove the underlying inconsistency between systems; it only hides it until query time, and performance depends on the slowest source.
Canonical models: shared where it pays
A canonical data model is a common format that systems translate to and from instead of translating to each other. Hohpe and Woolf note that it adds overhead when only a few applications are involved, and pays off as their number grows.
The failure mode is ambition. Enterprise-wide canonical models that try to describe every entity in one schema take years, become outdated before they are finished, and are bypassed by delivery teams under deadline. The approach that works is narrower:
- Canonicalize the entities that cross many boundaries: typically customer or party, product or service, location, organization and a handful of reference code lists.
- Leave domain-specific data in domain models. A claims system's internal structure does not need to be canonical; the customer and policy identifiers it shares do.
- Version the canonical model like an API, with backward-compatible changes and a published deprecation policy.
- Govern definitions in the catalog, with a named owner per entity, so the model is a living agreement rather than a diagram.
Our analysis of where lock-in now sits makes a related point: shared business definitions are the most portable and valuable part of a data architecture.
Where master data management touches integration
Canonical models define what a customer record looks like. Master data management (MDM) decides which customer records refer to the same real customer, and which values are authoritative. The two meet at three points:
- At ingestion, where incoming records are matched against existing master records. Matching rules for names, addresses and identifiers need to be tested on real data, including Arabic transliteration variants in the Gulf.
- At publication, where the mastered record, the "golden record", is distributed to consuming systems, usually through events or APIs.
- At write-back, where corrections made in the master are fed back to source systems, or deliberately not, depending on the MDM style.
MDM implementation styles range from a registry that only links identifiers across systems, through consolidation into a central hub for analytics, to coexistence and fully centralized authoring of master data. The integration consequence is direct: a registry needs only identifier cross-references, while centralized authoring requires every source system to accept updates from the hub. Choose the style before designing the flows, not after.
Sequence by data flow, not by system
Big-bang replacement of integration estates rarely goes well. Martin Fowler's strangler fig pattern, revised in 2024, describes the alternative for application modernization: build the new alongside the old, move capability across in slices, and retire the legacy piece by piece. The same logic applies to data integration.
Figure 3
Unify in slices: retire old connections last, not first
A strangler-fig sequence for data integration. Each stage runs per data domain, in waves.
Stage 1
Observe
Inventory of flows, consumers, owners and point-to-point interfaces
Stage 2
Connect
CDC or events on the systems that feed the most consumers; no new direct links
Stage 3
Conform
Canonical definitions and master data for three to five core entities
Stage 4
Consolidate
Analytical copies landed once on the target platform
Stage 5
Retire
Legacy interfaces switched off one by one after reconciliation
The measure of progress is the number of legacy interfaces retired, not the volume of data on the new platform.
The order matters. Observe first: inventory the flows, their consumers and their owners, because most organizations do not know how many point-to-point interfaces they run. Connect next, by putting CDC or events on the systems that feed the most consumers, so new consumers stop creating new direct connections. Conform the core entities to the canonical definitions and master data. Consolidate analytical copies onto one platform. Only then retire the old interfaces, one by one, with consumers moved and reconciled first.
Migration risk: the data can move and the program still fail
Two public incidents show where integration and migration risk actually sits.
TSB, 2018. In April 2018 the UK bank migrated the data for its corporate and customer services to a new IT platform. According to the UK's Financial Conduct Authority, the data itself migrated successfully, but the platform failed immediately, disrupting branch, telephone, online and mobile banking for a significant proportion of its 5.2 million customers until December 2018. In December 2022 the FCA and the Prudential Regulation Authority fined TSB a combined £48.65 million, citing failures to plan and govern the migration and to manage risks from its outsourced IT supplier.
Public Health England, 2020. Between 25 September and 2 October 2020, 15,841 positive COVID-19 test results were left out of England's daily reports and the contact-tracing system. PHE's statement attributed this to data files that exceeded the maximum file size of the automated process loading them into central systems. Records were not rejected with an error; they simply did not arrive.
Figure 4
Integration risk hides where nothing looks broken
Four migration and integration risks, the evidence behind them, and the control that addresses each
The service fails although the data moved
Evidence
TSB, 2018: data migrated successfully, platform failed; £48.65m in fines (2022)
Control
Treat migration as a service change: performance testing, supplier oversight, rehearsed cut-over and rollback
Records silently dropped in a batch or file flow
Evidence
PHE, 2020: 15,841 positive results missing from reports when files exceeded a size limit
Control
Reconcile counts and control totals between source and target on every run; fail loudly
Source and event stream out of step
Evidence
Dual-write failure mode described in the transactional outbox pattern
Control
Outbox or log-based CDC instead of writing to the database and the broker separately
Duplicated or mismatched entities after consolidation
Evidence
Common where systems keyed customers differently
Control
Match and master core entities before consolidating; test matching on Arabic name variants
The lessons are not about technology choice. TSB shows that a migration is a change to how the whole service operates, not a data copy. PHE shows that every batch or file-based flow needs reconciliation: record counts and control totals compared between source and target on every run, with a failure raised when they differ. Silent truncation is the most dangerous integration defect because nothing looks broken.
The Gulf view
In Saudi Arabia, integration is shaped by national platforms as well as enterprise design. SDAIA's National Data Index measures government entities not only on compliance with the NDMO standards but on operational excellence, including active use of national platforms such as the National Data Catalog, the Government Service Bus and the National Data Lake. For public entities, the integration architecture therefore has two audiences: internal consumers and the national data-sharing infrastructure.
The NDMO standards' Data Sharing and Interoperability domain also governs how data is shared between entities, including data sharing agreements. As our lakehouse comparison notes, the standards' wording on data sharing describes ETL into warehouse stores and ELT into a data lake. Entities can satisfy that with a modern design, provided they document how each flow maps to the requirement. Our NDMO implementation guide covers the domain in detail.
For multinational groups in the Gulf, the additional design constraint is residency. CDC and event streams replicate data continuously, so a stream that crosses a border is a continuous cross-border transfer. Flows carrying personal or classified data should be designed to stay in-country, with only permitted aggregates leaving.
Choosing a pattern for each flow
| If the flow needs to... | Prefer | Avoid |
|---|---|---|
| Feed reporting, finance or model training daily | Batch ELT | APIs for bulk extraction |
| Get changes out of a legacy database you cannot modify | Log-based CDC | Nightly full extracts of large tables |
| Trigger operational action within seconds | Event streaming with an outbox | Dual writes from application code |
| Answer a transactional question for a channel | API | Copying the whole dataset to the channel |
| Give occasional combined access without copying | Virtualization | Virtualization for heavy, repeated workloads |
| Share a mastered entity across many systems | Events or APIs publishing the golden record | Each system matching customers independently |
What to do next
- Inventory your data flows, not just your systems: source, target, pattern, frequency, owner and consumers for each.
- Count your point-to-point interfaces and identify the ten systems that feed the most consumers.
- Put CDC or event publication on those systems, so new consumers subscribe instead of building new direct connections.
- Agree canonical definitions for three to five core entities, owned in the catalog, and version them.
- Decide your MDM style for customer and product before designing the flows that depend on it.
- Add reconciliation to every batch and file flow: counts and control totals checked on every run.
- Retire one legacy interface per sprint once its consumers are moved and reconciled, and track the count down.
Frequently asked questions
What is the difference between ETL, ELT and CDC?
ETL transforms data before loading it into the target; ELT loads it first and transforms it inside the target platform. Both usually run in batches. Change data capture reads individual changes from a source database, often from its transaction log, and propagates them continuously.
What is a canonical data model?
A shared format for core business entities that systems translate to and from, instead of translating directly to each other. It reduces the number of translations as systems are added, but should be limited to entities that genuinely cross many boundaries.
How does master data management relate to data integration?
Integration moves data between systems; MDM decides which records describe the same real-world entity and which values are authoritative. They meet at ingestion (matching), publication (distributing the golden record) and write-back (returning corrections to sources).
How do you reduce risk in a data migration?
Migrate in slices rather than all at once, run old and new in parallel with reconciliation of counts and control totals, rehearse cut-over and rollback, and treat the migration as a change to the operating service, not only a data copy.
Sources and further reading
- Canonical Data Model, Gregor Hohpe and Bobby Woolf, Enterprise Integration Patterns.
- Debezium features, Debezium documentation. Advantages of log-based change data capture.
- Pattern: Transactional outbox, Chris Richardson, microservices.io.
- Strangler Fig Application, Martin Fowler, revised 22 August 2024.
- TSB fined £48.65m for operational resilience failings, Financial Conduct Authority, 20 December 2022.
- PHE statement on delayed reporting of COVID-19 cases, Public Health England, October 2020.
- Data Management and Personal Data Protection Standards, v1.5, NDMO, SDAIA.
- National Data Index, Version 1.1, SDAIA, November 2024.