To upgrade to Odoo 20, request an upgraded test copy of your database from Odoo's upgrade platform, port your custom and third-party modules to 20.0 at the same time, test every business flow on that copy, then schedule the production upgrade during a short freeze. Most Odoo 17, 18 and 19 databases can jump straight to Odoo 20.
Odoo 20 was launched on 24 September 2026 at Odoo Experience in Brussels. Since then, the most common question we hear at Bundo Tech, an Official Odoo Partner based in Karachi, is not "what is new?" but "how do we move without breaking invoicing, stock or payroll?" This guide answers that, step by step, for Odoo Online, Odoo.sh and self-hosted databases. If you would rather hand the project to a team that has done 200+ Odoo projects, see our Odoo upgrade and implementation services worldwide.
Key takeaways
- Odoo supports the last three major versions. With Odoo 20 out, Odoo 17 has left standard support, so 17.0 users should plan their upgrade now.
- You can upgrade directly from any supported version to Odoo 20; you do not need to pass through 18 and 19 first.
- Odoo's upgrade service migrates standard data. Custom and third-party modules must be ported separately and are usually the biggest part of the work.
- Always test on an upgraded copy first. Production is only upgraded after users have signed off on real end-to-end flows.
- Odoo 20 changes some things custom code depends on, such as record rules and payment statuses, so review customisations before you request the upgrade.
Should you upgrade to Odoo 20 now or wait?
It depends on which version you run today and how much custom code you carry.
| Current version | Support status (November 2026) | Our recommendation |
|---|---|---|
| Odoo 16 or older | Out of support | Upgrade now. Plan a larger project, as the version gap and module porting are bigger. |
| Odoo 17 | Left standard support when Odoo 20 was released | Start now. Go to Odoo 20 directly rather than to 18 or 19. |
| Odoo 18 | Supported until the next major release | Plan the upgrade within the next 6-12 months. |
| Odoo 19 | Supported | Upgrade when an Odoo 20 feature brings clear value, or when your partner modules are ready for 20.0. |
Running an unsupported version means no bug fixes, no security patches and, in many countries, no updates to tax and e-invoicing localisations. For businesses dealing with fast-changing rules such as FBR digital invoicing in Pakistan, ZATCA in Saudi Arabia or e-invoicing in Germany and the UAE, staying on a supported version is not optional.
What is new in Odoo 20 that matters for an upgrade?
Odoo's official Odoo 20 release notes list hundreds of improvements. For upgrade planning, these are the ones worth knowing:
- AI agents and automation: AI agents can now be triggered from automated and scheduled actions, and Odoo can connect to outside AI tools through the Model Context Protocol (MCP). AI features use IAP credits.
- Accounting: parent accounts replace account groups, and payment statuses are renamed ("In Process" becomes "Paid", and "Paid" becomes "Reconciled"). Reports, dashboards and integrations that filter on these statuses need checking.
- Security model: record rules are replaced by a domain on access rights. Any custom module that defines its own record rules must be reviewed.
- Manufacturing and Inventory: new work order Kanban and Gantt views, BoM comparison, extra costs on BoMs, a stock aging report and suggested min/max values on reordering rules. If you run MRP, read our Odoo manufacturing implementation guide alongside this one.
- Sales and eCommerce: order lines without a product, editable margins, periodic pricelists, customer portal returns and minimum order quantities in the shop.
Some features were removed or reworked, so a feature-by-feature check against how your team actually works is part of every upgrade we run.
How does the Odoo upgrade process work?
An Odoo upgrade has two parallel tracks: the database, which Odoo's upgrade platform migrates, and the code (custom and third-party modules), which you or your partner must port. Odoo's own upgrade documentation states that a database with custom modules cannot be upgraded until a version of those modules exists for the target version.
- Audit the database. List installed apps, custom modules, third-party apps from the Odoo Apps store, integrations (payment gateways, eCommerce, shipping, banks, tax portals) and automated actions. Uninstall anything you no longer use before upgrading.
- Freeze and challenge customisations. Stop new custom development. For each customisation, ask whether a standard Odoo 20 feature now does the job. Dropping custom code is the cheapest way to reduce upgrade effort.
- Request an upgraded test database. The method depends on your hosting (see the next section).
- Port custom modules in parallel. Update manifests, Python models, views, security files and JavaScript to 20.0. Ask third-party app vendors for their 20.0 builds.
- Run end-to-end user acceptance testing (UAT). Test complete flows, not individual screens: quote to cash, purchase to pay, receipt to delivery, manufacturing orders, payroll, month-end closing and every integration.
- Compare data. Check trial balance, aged receivables and payables, stock valuation and open orders between the old and upgraded databases.
- Rehearse. Request a fresh test upgrade close to go-live and repeat the critical tests, timing how long the upgrade takes.
- Upgrade production. Announce a freeze, take a backup, run the production upgrade, deploy the ported modules and complete a smoke test before users log in.
How do you request an Odoo 20 test upgrade on Online, Odoo.sh and on-premise?
Odoo Online (SaaS)
Open the database manager, select Manage next to your database, then Upgrade. Choose the target version, enter your email and keep the purpose set to Test. Odoo emails you when the upgraded copy is ready.
Odoo.sh
Create a staging branch and use the built-in upgrade feature. Odoo.sh takes the latest production backup, sends it to the upgrade platform and loads the result on staging. Each new commit restores the upgraded backup and updates your custom modules, so developers and testers work on the same environment. Upgrade logs are available in the branch's logs folder.
On-premise (self-hosted)
Run Odoo's upgrade script on the server that hosts the database:
python <(curl -s https://upgrade.odoo.com/upgrade) test -d <your_database> -t 20.0
The returned dump does not include your production filestore, so merge it with a copy of your filestore before testing. Your server also needs outbound access to Odoo's upgrade servers. If you are also changing servers, our production-ready Odoo installation guide covers the setup, and our Odoo hosting service can run it for you.
Keep in mind that test databases have scheduled actions disabled and outgoing mail servers replaced, so trigger scheduled flows manually during testing.
What does Odoo's upgrade service cover, and what does it not?
| Task | Covered by Odoo's upgrade service? | Who handles it |
|---|---|---|
| Migrating standard Odoo data and modules | Yes (Enterprise) | Odoo upgrade platform |
| Porting your custom modules | No | Your developers or Odoo partner |
| Third-party apps from the Odoo Apps store | No | App vendor, or your partner |
| Testing business flows and sign-off | No | Your key users with your partner |
| Community to Enterprise switch, hosting change or migration from another ERP | No, these are separate projects | Your Odoo partner |
| Odoo Community databases | No | OCA OpenUpgrade scripts, when available for the version, plus a partner |
This is why upgrade quotes vary so much between companies. Two businesses on the same Odoo version can have very different upgrade effort because one has 3 custom modules and the other has 40.
How do you port custom modules to Odoo 20?
Treat each custom module as a small development task with its own test plan:
- Update the version in __manifest__.py to the 20.0 series and check dependencies still exist.
- Read the Odoo 20.0 ORM changelog in the developer documentation and fix deprecated APIs.
- Rewrite security: record rules must move to the new access-rights domain approach.
- Update XML views, inherited views and XPath expressions that target fields or elements that changed.
- Review accounting code that filters on payment states or account groups.
- Update front-end assets (OWL components, icons) and test in the browser.
- Write migration scripts for any data that must change shape during the upgrade.
If your team built modules following our Odoo 19 custom module tutorial, the structure carries over, and the changes above are the main points to check. For larger codebases, our Odoo development team ports and tests modules as a fixed-scope project.
How long does an Odoo 20 upgrade take?
There is no honest universal number. Duration depends on the version gap, the number of custom and third-party modules, data volume, integrations and how quickly key users can test. A standard database with no custom code can be ready in days. A database with heavy customisation, several integrations and multi-company accounting typically needs several weeks of porting and testing. The fastest way to get a reliable estimate is a first test upgrade plus a customisation inventory, which is how we start every upgrade project.
What are the most common Odoo upgrade mistakes?
- Upgrading production first, or testing on a copy that is months old.
- Testing screens instead of complete business flows.
- Forgetting integrations: payment providers, marketplaces, banks, shipping carriers and tax authority connectors.
- Porting custom code that standard Odoo 20 now replaces.
- Skipping the data comparison of trial balance and stock valuation.
- Combining the upgrade with a hosting move, new apps and a process redesign in one cutover.
- Not training users on changed screens and renamed statuses before go-live.
How much does an Odoo 20 upgrade cost?
For Enterprise customers, the database upgrade itself is part of the subscription. The cost of a project comes from porting custom modules, testing, integration fixes and training. At Bundo Tech we give a fixed-scope quote after a free discovery call and a test upgrade, so you know the full cost before work starts. After go-live, our Odoo support plans keep your database stable through the next release.
Frequently asked questions
Can I upgrade directly from Odoo 17 to Odoo 20?
Yes. Odoo's upgrade platform lets you upgrade directly to the latest supported version, so you do not need to install 18 and 19 in between. Your custom modules, however, must be ported to 20.0 before the production upgrade.
Will Odoo upgrade my custom modules?
No. Odoo migrates the standard database, but custom and third-party modules must be ported by your developers, the app vendor or an Odoo partner. Odoo will not run the production upgrade until those modules exist for the target version.
Can I test the upgrade without affecting my live database?
Yes. On Odoo Online, Odoo.sh and on-premise you can request an upgraded test copy. Your live database keeps working while you test, and you can request new test copies as many times as you need before go-live.
Can Odoo Community be upgraded to Odoo 20?
Odoo's official upgrade service is for Enterprise. Community databases are usually upgraded with the Odoo Community Association's OpenUpgrade scripts once they are available for the version, combined with manual work. Some companies use the upgrade as the moment to move to Enterprise, which is a separate migration.
Can we roll back after upgrading production?
Odoo does not support downgrading a database. The safe rollback is the backup you take right before the production upgrade, which is why thorough testing and a planned freeze matter.
Is Odoo 17 still supported?
Odoo maintains the three most recent major versions. With Odoo 20 released in September 2026, the supported versions are 18, 19 and 20, so Odoo 17 users should plan their upgrade.
Ready to upgrade to Odoo 20?
Bundo Tech has 8+ years of Odoo experience, is Odoo 18 certified and has delivered upgrades and implementations for clients in Europe, the Gulf, the USA and Pakistan, on Odoo Online, Odoo.sh and self-hosted servers. We run the test upgrade, port your modules, test with your team and handle go-live. Book a free consultation and get a fixed-scope upgrade plan.
Written by Ahsan Khan, Founder and CEO of Bundo Tech, Official Odoo Partner. Last updated November 2, 2026.
Related reading: upgrading to stay compliant with France's mandatory e-invoicing? See our French guide Partenaire Odoo en France : comment choisir son intégrateur en 2026.