Every data platform eventually faces the same problem. There is a legacy delivery system that everyone depends on, and a modern one that everyone agrees is better. In our case the destination was a layered pipeline serving data through GraphQL, a query language that lets consumers ask for exactly the fields they need. The instinct, always, is to mandate the cutover: set a deadline, send the memo, deprecate the old thing. I have watched that movie. The deadline slips, the exceptions multiply, and the legacy system celebrates another birthday behind a banner that says it is deprecated.
Why Mandates Fail
The reason is not stubbornness. It is arithmetic. For the platform team, the migration is the whole point. For every consuming team, it is pure cost: weeks of their roadmap spent re-plumbing to arrive at exactly the data they already receive. You are asking a dozen teams to pay so that you can benefit. Rational teams defer that trade every quarter, forever, and their management backs them, because parity is not a feature and nobody gets promoted for re-plumbing.
You can escalate, and sometimes escalation even works. But a migration won through escalation burns the exact relationships the platform depends on, and it teaches consumers that your platform is a tax collector. There is a better lever.
Ship the Future Only in the Future
The lever is incentive design: new capabilities ship only in the new system. Every new field, every new dataset, every enhancement consumers actually want lands exclusively in the modern pipeline. The old system is not shut down. It is simply frozen in time, fully supported and slowly left behind by the future.
This flips the arithmetic. The migration stops being a favor consumers do for the platform team and becomes the price of the thing they already want. Nobody migrates for parity, but everyone migrates for the field their business needs next quarter. The conversation changes from "when will you comply" to "here is how you get the new data," and teams start scheduling the move on their own, because now it carries its own payoff. Gravity does the work that the mandate could not.
What It Costs
Honesty requires the price tag. You run two systems side by side for longer than a mandate would promise, and that dual running is real money and real operational load. You also need parity discipline: whatever the old system does today must keep working, because one regression destroys the trust that makes voluntary migration possible.
Hardest of all, you need the spine to refuse backports. The strategy dies the first time a large consumer asks for the new field in the old pipe and someone says yes to be helpful. Every exception you grant extends the legacy system's life at the expense of everyone who already moved. Saying no to that request, politely and every time, is the entire job.
You cannot mandate a migration onto teams that own their own roadmaps. What you can do is make the new system the only place the future happens, and then let people follow the future. They always do.