The bottom line
Mid-market data integration goes wrong the same way every time: point-to-point connections that multiply into an unmaintainable mesh, no single landing zone, full reloads that break as volumes grow, and a pipeline nobody owns. The best practices are a handful of deliberate decisions — land everything to one governed layer, integrate through a hub not point-to-point, load incrementally, define one master for shared entities, and give the pipeline an owner and monitoring. None of it is enterprise-grade complexity; all of it is the difference between data that reconciles and data that argues.
In This Article
How Mid-Market Integration Actually Fails
The pattern is so consistent it is almost a law. A mid-market company connects its CRM to its ERP directly because a report needed it. Then the ERP to the warehouse system. Then the e-commerce platform to the ERP. Each connection is reasonable on its own; together they become a point-to-point mesh where every system talks to every other system, nobody has a map, and changing one connection breaks two others.
Alongside it, there is no single place the data lands — each report pulls from a different source at a different time, so the numbers never quite agree. The nightly job that holds it together was built by someone who has since left, has no monitoring, and fails quietly until a report is wrong.
None of these failures is exotic. They are the default outcome of integrating reactively, one connection at a time, without a small set of governing decisions. The good news is that the same small set of decisions prevents all of them.
Point-to-point connections multiply into a mesh nobody can map, no single landing zone means the numbers never agree, and the nightly job has no owner. All predictable — and all preventable with a few deliberate decisions.
Land Everything to One Governed Layer
The first and most important practice is a single landing zone: one governed place where data from every source arrives before anything consumes it. On a Microsoft estate that is OneLake in Microsoft Fabric; the principle holds whatever the platform. Every report, model and downstream system reads from the governed layer, never directly from a source system.
This single decision removes the "numbers never agree" failure at the root. When every consumer reads the same landed, governed data, they read the same numbers by construction. When each consumer pulls from a different source at a different time, they cannot.
It also decouples sources from consumers. A source system can change without breaking every report, because reports read the governed layer, not the source. That decoupling is what makes the estate maintainable as it grows.
Integrate Through a Hub, Not Point-to-Point
The second practice follows from the first: integrate through the hub, not system-to-system. Instead of N systems each connecting to every other — which grows into an unmanageable web — each system connects once, to the landing layer. Data flows source-to-hub and hub-to-consumer, not source-to-source.
This turns an N-times-N problem into an N problem. Adding a new system means one new connection into the hub, not a new connection to every system that needs its data. Retiring a system means removing one connection, not untangling it from a dozen point-to-point links.
For a mid-market company this is the difference between an integration estate that can absorb a new acquisition or a new e-commerce channel in weeks, and one where every addition is a fragile, multi-week surgery on a web nobody fully understands.
Each system connects once, to the hub — not to every other system. That turns an N-times-N integration web into an N problem, and makes adding or retiring a system a single connection, not surgery.
Load Incrementally, Not Full Reloads
The third practice is loading only what changed. Early integrations often reload entire tables every night because it is simple, and it works until the tables grow. Then the full reload takes hours, the window overruns, and the morning data is late or missing.
Incremental loading — moving only the rows that changed since the last run, using change data capture or a watermark — keeps the pipeline fast and stable as volumes grow. It is more work to set up than a full reload and it is the difference between a pipeline that scales and one that hits a wall.
For a mid-market company this is usually the practice that gets deferred and then bites. Build incremental loading in from the start on the large, high-change tables — ERP transactions, sales, inventory movements — rather than discovering the reload wall at the worst possible time.
One Master for Shared Entities
The fourth practice addresses the quiet killer of integration: the same customer, product or supplier represented differently in every system. The CRM has one customer code, the ERP another, the e-commerce platform a third. Integrate them without reconciling and you get one customer appearing as three, and every cross-system report is subtly wrong.
The practice is to define one master for each shared entity — a governed customer master, product master, supplier master — and map every source system's codes to it in the integration layer. It does not require a full master-data-management programme for a mid-market company; it requires a cleaned mapping table and the discipline to maintain it.
Without it, the integration is technically working and commercially misleading — the data flows, but it does not reconcile, which is the worst of both worlds.
Give the Pipeline an Owner
The fifth practice is the one that is not technical at all: the pipeline needs a named owner and monitoring. The most common cause of a data-integration failure discovered too late is a pipeline that was built by someone who left, has no alerting, and fails silently until a business user notices a wrong number.
Give the integration an owner on the team. Instrument it so a failed load raises an alert, not a shrug. Document what runs when and what it depends on. This is unglamorous operational hygiene, and it is the difference between finding out about a failure from a monitoring alert at 6am and finding out from an angry CFO at month-end.
A pipeline nobody owns is a liability with a delayed trigger. Ownership and monitoring convert it into infrastructure you can rely on.
A pipeline nobody owns is a liability with a delayed trigger. Give it an owner and alerting, so you find out about a failure at 6am from monitoring — not at month-end from the CFO.
So What — the Short List
Mid-market data integration does not need enterprise-grade complexity. It needs five deliberate decisions: land everything to one governed layer; integrate through that hub rather than point-to-point; load incrementally on the large tables; define one master for each shared entity; and give the pipeline an owner and monitoring.
Make those five decisions and the predictable failures — the unmanageable mesh, the numbers that never agree, the reload wall, the duplicated entities, the silent failure — simply do not happen. Skip them and integrate reactively, and you will meet all five in the order above.
On a Microsoft estate this is Microsoft Fabric, OneLake and Azure Data Factory doing exactly what they are built for, at a scale and cost a mid-market company can adopt. The tooling is not the hard part. The discipline of deciding these five things up front is.
Five decisions prevent every predictable failure: one governed landing layer, hub not point-to-point, incremental loads, one master per shared entity, and an owner with monitoring. The tooling is easy; the discipline is the work.
If your reports do not reconcile and your integration has grown into a web nobody can map, the fix is five deliberate decisions, not a bigger platform. 30 minutes with Amit on your actual integration estate — where the mesh formed, and what landing to one governed layer would change. No slides. No pitch deck. No obligation to proceed.
Free Assessment
Where does your operation sit on the data maturity curve?
8 questions. 3 minutes. You get a scored breakdown across data infrastructure, analytics readiness, and automation potential — with a specific next step for your industry.