
Every major Odoo upgrade carries the same risk: the custom modules you built two versions ago quietly break in ways that only surface in production.
Before touching the upgrade, we inventory every custom module and third-party app against the target version’s changelog, flag anything relying on deprecated APIs, and stage the migration on a full copy of production data — not a sample.
The modules that usually break are the ones touching inventory valuation and accounting — test those workflows manually, not just with automated checks, before you cut over.