Odoo 20
Should You Upgrade to Odoo 20? A Practical Guide for Odoo 17, 18 and 19
Odoo 17 left standard support in September 2026. What an Odoo 20 upgrade really involves from 17, 18 or 19 — custom modules, integrations, data and testing — what shouldn’t move forward, and a readiness checklist.
AAKoryx ConsultingPublished
The short answer
Not everyone should upgrade right away — but everyone on Odoo 17 needs a plan now. Odoo 17’s standard support ended in September 2026; Odoo 18 is supported until September 2027 and Odoo 19 until September 2028 (Odoo’s planned dates). Whether Odoo 20 is worth it depends less on its new features than on what your custom modules, integrations and data need to move — and on what you can retire instead of migrating.
Where you are decides how urgent it is
Odoo supports each major version in two phases. Standard support covers the first three years after release, on Odoo Online, Odoo.sh and on-premise. Extended support follows for an additional fee — available only on Odoo.sh (for a limited number of versions) and on-premise. Odoo also allows upgrading from any version to any major version still under standard support, so moving from 17 straight to 20 is an option. (Source: Odoo’s standard and extended support page.)
| You run | End of standard support | What we’d typically do |
|---|---|---|
| Odoo 17 | September 2026 — ended | Plan the upgrade now. Extended support costs extra and isn’t available on Odoo Online. Moving directly to Odoo 20 is usually the better target than 18 or 19. |
| Odoo 18 | September 2027 (planned) | Upgrade on your own timeline within the year — normally straight to Odoo 20, unless a critical module isn’t ready for it. |
| Odoo 19 | September 2028 (planned) | No deadline pressure. Upgrade when Odoo 20 changes something you need, or align it with other planned work. |
How much choice you have also depends on hosting. On Odoo Online, a major version must be upgraded every two years. On Odoo.sh, Odoo’s documentation gives you two more years after the three years of standard support to complete the upgrade. On-premise, you can stay on a version indefinitely — Odoo doesn’t recommend it, and the gap only grows.
What to evaluate, by starting version
Upgrading from Odoo 17 to Odoo 20
This is the biggest jump: three major versions of change land at once. Odoo’s own guidance is that the smaller the version gap, the easier the upgrade should be — so expect more custom code to port, more changed screens and more workflow differences to test. The upside is that you go through one upgrade project, not two. Budget the most time for custom modules, integrations and user retraining.
Upgrading from Odoo 18 to Odoo 20
Two versions of change, with a year of standard support left. That year is useful: it lets you test properly, decide what to retire, and schedule the move around your busy periods instead of against a deadline. Most of the work is the same as any upgrade — custom modules, integrations, reports and testing — at a smaller scale than from 17.
Upgrading from Odoo 19 to Odoo 20
One version, and support until September 2028. Here the honest question is whether Odoo 20 changes something that matters to you — such as continuous production in manufacturing, AI agents that act inside automations, or suggested reordering levels. If it doesn’t yet, waiting is a legitimate choice.
Odoo 20 changes that can affect how you work today
Some Odoo 20 changes aren’t new options — they change existing behavior. These come from Odoo’s release notes and are worth checking against your processes before you upgrade:
| Area | What changes |
|---|---|
| Field Service | The Field Service app is discontinued; its features are now part of the Planning app. |
| Returns | The return wizard is removed and the returns process simplified. |
| Manufacturing | Flexible consumption is now the default for every manufacturing order (the setting is removed); orders are planned as soon as possible by default; one “Produce” button replaces “Produce” and “Produce All”. |
| Access rights | Record rules are removed; a domain on the access right itself decides which records it applies to. |
| Chart of accounts | Parent accounts replace account groups for structuring the chart of accounts; account codes become optional. |
| Fixed assets | Asset models are replaced by depreciation models, with asset settings consolidated on asset accounts. |
| Expenses | The standalone “Employee Expenses” menu is removed; approved expenses create draft bills in the expense journal. |
None of these is a reason not to upgrade. Each is a reason to test the affected process with the people who run it — and to train them before go-live, not after.
The real upgrade question isn’t just “Will it migrate?”
Odoo upgrades the standard part of your database. With an Odoo Enterprise subscription, the upgrade of standard applications is included, as is the upgrade of customizations made with Studio — as long as Studio is still installed and its subscription active — and of developments covered by a maintenance of customizations subscription. What Odoo’s upgrade service doesn’t cover is the rest: modules built in-house or by third parties (including Odoo partners) without such a contract, cleaning up existing data and configuration, and training on the new version. That “rest” is usually where the real work and risk sit.
| Area | What to check | Why it matters |
|---|---|---|
| Custom modules | Every custom and third-party module: still used? Ported to 20? | Odoo is explicit: a database with custom modules can’t be upgraded until a version of those modules exists for the target version. |
| Integrations | Connectors, APIs, EDI, eCommerce and shipping links | Orders, stock and payments must keep flowing the day after go-live. |
| Reports and documents | Invoices, delivery slips, labels, custom PDF reports | Layout and data changes surface in front of customers first. |
| Automations | Automated actions, server actions, scheduled actions | Odoo’s upgrade guide names them as things to test explicitly. |
| Studio changes | Fields, views and reports built in Studio | Covered by Odoo’s upgrade while Studio and its subscription stay active — but still test them. |
| Accounting | Taxes, chart of accounts, reconciliation, localization | Odoo 20 changes the chart-of-accounts structure and many localizations; balances must reconcile. |
| Manufacturing | BOMs, routings, consumption, planning behavior | Consumption and planning defaults change in Odoo 20. |
| Data | Duplicates, obsolete records, open documents | Odoo upgrades data technically; it doesn’t clean it. |
| Testing | End-to-end flows with real users | Test databases are neutralized: scheduled actions, outgoing mail and bank synchronization are disabled, and payment and delivery providers switch to test mode. |
| Business continuity | Cut-over timing, rehearsal, rollback plan | The production database is unavailable while it upgrades; Odoo recommends rehearsing the day before. |
What should not automatically move forward?
Our default for an upgrade is pragmatic and like-for-like: move what the business relies on, change only what has to change, and don’t turn an upgrade into a reimplementation. But “like-for-like” shouldn’t mean carrying everything forward unexamined. Some customization no longer earns its place:
- The requirement changed. The customer, report or regulation it was built for is gone.
- Standard Odoo caught up. For example, if you customized how reordering levels are set, Odoo 20 now suggests minimum and maximum levels from demand history — check whether standard behavior is good enough before porting your code.
- It solved an old problem. A workaround for a bug or limitation in your original version may simply be unnecessary now.
- Nobody uses it. If no one has opened a screen or run a report in a year, porting it is cost without value.
Every customization you retire is code you don’t port, test or maintain again. Every one you keep should have an owner who can say why.
Odoo 20 upgrade readiness checklist
- Current version and hosting confirmed (Odoo Online, Odoo.sh or on-premise) — and your support deadline known.
- Every installed custom and third-party module listed, with an owner, a “still used?” answer and its Odoo 20 availability.
- Studio customizations listed, and Studio and its subscription confirmed active.
- Every integration listed: what it connects, who maintains it, and whether it supports Odoo 20.
- Customer-facing reports and documents identified for side-by-side comparison.
- Automated, server and scheduled actions listed for testing.
- Accounting checks planned: taxes, chart of accounts, open items, reconciliation, localization.
- Inventory and manufacturing flows to test: receipts, routes, BOMs, consumption, planning, deliveries.
- Website and eCommerce checkout tested end to end, if you sell online.
- Data clean-up decided before the upgrade, not during it.
- An upgraded test database requested, with named testers for each business flow.
- Customizations to retire agreed — with the reason recorded.
- Go-live window, rehearsal and user communication planned.
How the upgrade itself works
- Request an upgraded test database from Odoo (from the database manager, your Odoo.sh project or the command line, depending on hosting).
- In parallel, upgrade the source code of any custom modules to the new version.
- Test the upgraded database thoroughly — Odoo’s guide includes a basic checklist and an end-to-end example — and report issues to Odoo.
- Request a fresh test upgrade if testing takes a while, and rehearse the full process before the real one.
- Upgrade the production database at a quiet time: it is unavailable until the upgrade finishes.
Odoo’s upgrade documentation covers each step for Odoo Online, Odoo.sh and on-premise.
Before you commit to an Odoo 20 upgrade timeline, get another view.
We can review what needs to move, what may no longer be needed, and where the real upgrade risk sits — for standard, customized and Odoo.sh environments.
Review My Odoo 20 Upgrade →Looking at what Odoo 20 adds before deciding?Odoo 20: what’s new and what it means for your business
