Why the workaround never becomes a product
The natural response to this pattern is to productize the workaround: package it as an internal tool, maintain it properly, deploy it consistently. Some larger practices have done exactly this.
The problem is that the workaround sits on top of native Dataverse behaviors that weren't built for this use case. The plugin needs maintenance every time Microsoft updates the platform. The header flag depends on the calling system, so every new integration is a new dependency. The bulk detection job's cap isn't something you can engineer around - it's a platform limit.
You can make the workaround more reliable. You can't make it not a workaround.
What changes when you stop rebuilding
The alternative isn't a more sophisticated workaround. It's duplicate prevention that runs inside Dataverse at the platform level, so it doesn't depend on individual integration configuration, doesn't require per-entity plugin maintenance, and doesn't hit a ceiling on bulk jobs.
Plauti installs from Microsoft Marketplace and runs inside the client's Dataverse environment. It covers every entry point - UI, Web API, bulk imports, and integration syncs - without configuring each one separately. Standard and custom tables are covered out of the box, and there's no 5,000-record ceiling.
For partners, the practical shift is that the duplicate workstream stops being a project deliverable and starts being an implementation step: install, configure once for the client's data model, and move on. The configuration carries across engagements instead of being rebuilt from scratch each time.
That's the difference between a workaround and infrastructure.
What to do differently on the next project
Before the duplicate workstream gets scoped on the next migration, it's worth asking how much of what you're planning to build solves a new problem versus re-solving the same one.
If the entry points are familiar, the entity coverage is familiar, and the cleanup process is familiar, that's the signal the workaround has run its course. The fix at that point isn't a better workaround. It's moving duplicate detection out of the project plan and into the platform, once, so it doesn't come back on the next migration.