The mapping decisions that take the longest are never technical. Which field wins when the ERP cost price and the PIM cost price disagree. Whether a bundle is one item or five in the ledger. Which warehouse feeds which Shopify location. The flow audit turns each of these into a written rule with an owner, because the code is easy once the business has decided, and endless when it has not.
Change discipline is what separates integrations that last five years from integrations that get rewritten in two. Every mapping change is versioned, every ERP upgrade is rehearsed in a test window, and the reconciliation report doubles as a regression check after each change. None of this is glamorous, and all of it is why the operations team stops thinking about the integration at all, which is the goal.
On ownership and exit: the adapter, the queue and the reconciliation logic live in your repository and your infrastructure from day one. If you change agencies or bring the work in house, the next team inherits documentation, tests and a runbook instead of folklore. We consider that a feature of the engagement, not a risk to it.
Modern ERPs expose REST or GraphQL and the integration is plumbing. Legacy ERPs expose a database, a folder of CSV drops, or a proprietary socket, and the integration is plumbing plus diplomacy. We have built against all three surfaces. The pattern stays the same: an adapter that speaks the legacy surface, the same queue, the same retries, the same reconciliation, so the ugly part is contained in one well tested module instead of smeared across the build.
The discipline that decides whether an ERP integration survives its second year is not the happy path, it is the treatment of boundaries: warehouse counts that pause stock sync, flash sales that throttle order bursts, ERP upgrades that version endpoints, and the reconciliation window that catches a record dropped by any of them. Every integration we ship has these designed in and rehearsed, because finding them in production is how the spreadsheet ritual comes back.