Upgrading to Odoo 20: A Practical Migration Guide
With Odoo 20 on the way, a lot of businesses on older versions are asking the same question: how do we actually move to it? A version upgrade is very doable, but it is a proper project, not a button you press. Here is the practical migration playbook I use.
Free download: Odoo 20 Upgrade Checklist (PDF)
A printable, step-by-step checklist to plan and deliver your Odoo 20 migration.
First, a timing note
Odoo 20 is expected to be released at Odoo Experience 2026 in late September, with general availability following in the weeks after. So treat this as your preparation plan. The smart teams start getting ready now and do the actual move once the release has settled. More on timing in a companion post on whether and when to upgrade.
How an Odoo upgrade actually works
It helps to understand the model before you start. Odoo provides an upgrade platform that takes a copy of your database and migrates it to the new version. Odoo’s own scripts handle the standard, core data and structures. What is not handled automatically is your custom code and third-party apps. Those have to be reviewed and adapted to work with the new version.
That single fact shapes the whole project: the more custom modules and integrations you have, the more careful the upgrade needs to be.
Step 1: Take stock of where you are
You cannot plan a move without knowing your starting point.
- Your current Odoo version, edition (Community or Enterprise) and hosting (Odoo Online, Odoo.sh or on-premise).
- The full list of apps and modules you actually use.
- How business-critical each part is, so you know what must not break.
Step 2: Inventory your customizations and integrations
This is the make-or-break step. List every custom module, tweak and connected system: your website, payment provider, shipping tool, bank feeds, anything that talks to Odoo. This list is where the real work of an upgrade lives, so be thorough and honest about it.
Step 3: Request a test upgrade
Never upgrade production first. Use Odoo’s upgrade platform to migrate a copy of your database and get a test version on Odoo 20. This gives you a safe place to check everything before anything real is touched.
Step 4: Migrate and test your custom modules
Take your custom modules and adapt them to Odoo 20, then load them into the test database. Expect some to need changes. This is normal, and it is exactly why you test on a copy first rather than discovering problems on go-live day.
Step 5: Run proper user testing (UAT)
Get your actual users to run their real daily processes on the test system: raise a quote, confirm an order, receive stock, run a report, close the books. Build the test scripts from how you really work, log every issue, fix, and retest until the critical path is solid.
Step 6: Clean your data
An upgrade is a good moment to tidy up. Deduplicate master data, archive what you no longer need, and fix known issues. Cleaner data in means a cleaner system out.
Step 7: Plan the cut-over
Once the test version is signed off, plan the real move:
- Pick a quiet business window, not your busiest week.
- Freeze changes, run the final production upgrade, and load any last data.
- Verify the critical processes immediately after, before you reopen for normal work.
Step 8: Support the first days
Have help on hand for the first busy days after go-live. Watch for friction, answer questions fast, and fix small issues before they become frustrations. A well-tested upgrade usually makes this quiet, which is exactly the goal.
My take
An Odoo 20 migration succeeds on the same things every ERP project does: know what you run, respect your customizations, test on a copy, and move deliberately. Do that and an upgrade becomes a non-event. Skip the testing and it becomes a bad week. Prepare now, move once the release settles, and you get the best of both.
Planning your move to Odoo 20? I am happy to review your setup and help you scope the upgrade sensibly.