Migration

Odoo Upgrade Guide (2026): Moving to Odoo 20

Nauman AhmedOzonLayer · Odoo Silver Partner Updated 13 min read

An Odoo upgrade moves your existing database, with all of its history, to a newer version. In November 2026 the target is Odoo 20, released in September 2026. Enterprise customers upgrade through Odoo’s own upgrade service; Community users rely on the OpenUpgrade project. Plan for 2–6 weeks on a lightly customised database and 2–4 months when many custom modules need porting.

Odoo gives each major version three years of standard support, which includes bug fixes and security updates. In November 2026 that covers Odoo 18, 19 and 20. Odoo 17 left standard support in September 2026. Enterprise subscribers can upgrade a database directly to Odoo 20 through upgrade.odoo.com, and the technical upgrade of standard apps and Studio customisations is included in the subscription. Custom and third-party modules are not included: their code must be ported to Odoo 20 before the live database can be upgraded. Community databases use the OCA’s OpenUpgrade project, which moves one major version at a time. Every upgrade should follow the same pattern: clean the data, request a test upgrade, port custom code, run user acceptance testing, rehearse, then upgrade production in a planned downtime window. UK businesses should re-check MTD VAT submissions to HMRC, and Saudi businesses should re-check ZATCA e-invoicing, before go-live.

Which Odoo versions are supported in 2026?

Odoo supports every major version in two phases. Standard support covers the first three years after release on Odoo Online, Odoo.sh and on-premise. Extended support starts after that, costs an extra fee and is only available on Odoo.sh (for a limited number of versions) and on-premise. Security updates are only provided during standard support, so a version in extended support still gets helpdesk help, but no security patches.

VersionReleasedEnd of standard supportStatus in November 2026
Odoo 20.0September 2026September 2029 (planned)Standard support
Odoo 19.0September 2025September 2028 (planned)Standard support
Odoo 18.0October 2024September 2027 (planned)Standard support
Odoo 17.0November 2023September 2026Extended support only (fee, Odoo.sh and on-premise)
Odoo 16.0October 2022September 2025Extended support only (fee, Odoo.sh and on-premise)

Source: Odoo’s standard and extended support page. In short, the last three major versions are fully supported. If you run Odoo 17 or older, you are no longer receiving security updates.

How hard Odoo pushes you to upgrade depends on hosting:

  • Odoo Online: a database on a major version must be upgraded every two years. A database on an online-only minor version (such as 19.4) must be upgraded a few weeks after the next one is released.
  • Odoo.sh: after the three years of support you have another two years to complete the upgrade, and Odoo notifies you when it is required.
  • On-premise: you can stay on a version indefinitely. Odoo does not recommend it, and the bigger the version gap, the harder the eventual upgrade.

Enterprise vs Community: two different upgrade paths

Odoo Enterprise: the upgrade service

With Odoo Enterprise, upgrading to the latest version is free, including support to fix discrepancies in the upgraded database. You request it from the Upgrade platform at upgrade.odoo.com, from the Odoo Online database manager, from your Odoo.sh project, or with a command-line script on your own server.

The service level agreement covers:

  • all standard Odoo applications;
  • customisations built with Studio, as long as Studio is still installed and its subscription is active;
  • developments covered by a “maintenance of customisations” subscription.

It does not cover cleaning existing data and configuration, modules built in-house or by third parties (including Odoo partners) without a maintenance contract, or training on the new version. An upgrade also never covers switching from Community to Enterprise, changing hosting type, downgrading, or migrating from another ERP. Those are separate projects.

Odoo Community: OpenUpgrade

Odoo Community has no built-in way to move between major versions, and Odoo’s own upgrade scripts are only available to Enterprise subscribers. The open-source route is OpenUpgrade from the Odoo Community Association. It upgrades one major version at a time, so going from 17 to 20 means three runs in sequence: 17 to 18, 18 to 19, then 19 to 20.

Coverage varies by module. Check the OpenUpgrade coverage analysis for every module you use before you set a date. At the time of writing, the published coverage tables go up to 18.0 to 19.0, while a 20.0 branch exists in the project’s code repository, so a Community move to Odoo 20 needs extra checking. The fallback, exporting data and importing it into a fresh database, loses history and links between records, such as past invoices against each customer.

Multi-version jumps: from Odoo 16 or 17 to Odoo 20

On Enterprise you can upgrade from any version to any major version that is still under standard support, or that left standard support less than six months ago. So an Odoo 17 to 20 upgrade is a single request, not three. The work does not disappear, though. Your users meet three versions’ worth of changes in one go, and custom code has to be rewritten straight to the Odoo 20 framework.

Should you stop at Odoo 19? Usually not. Odoo 20’s standard support is planned until September 2029, a year longer than Odoo 19. The main reason to pause at 19 is a business-critical third-party app that has no Odoo 20 release yet.

Custom modules and third-party apps

This is where most of the effort and risk sits. Odoo is explicit: a database with custom modules cannot be upgraded until a version of those modules exists for the target version. Odoo recommends running both tracks in parallel, requesting a test upgrade while developers port the code.

Odoo’s documented process for a customised database is:

  1. Freeze development. Stop new features (bug fixes are fine) and compare each customisation with what the new standard version now does. Anything Odoo 20 covers natively should be dropped.
  2. Request an upgraded test database to confirm the standard upgrade works.
  3. Make each module install cleanly on an empty Odoo 20 database, then test views, reports, email templates, automated actions and computed fields.
  4. Make the modules work on the upgraded test database with your real data.
  5. Test extensively, rehearse, then upgrade production.

Some Odoo 20 changes that developers should check when porting code:

  • on-premise servers now need Python 3.12 or later and PostgreSQL 16 or later;
  • access rights were simplified: record rules were removed and a domain now sits directly on the access right;
  • stored tracking values were removed, and tracking messages are now generated on the fly;
  • Font Awesome icons were replaced by Material Symbols;
  • push notifications moved from Firebase to Odoo’s own push tools.

For third-party apps, confirm the vendor has published an Odoo 20 release. If not, you have three options: wait, replace the app with a standard feature, or pay to have it ported. You can browse what is available in our Odoo apps catalogue. If your own modules need porting, see our Odoo customisation services in the UK or Odoo development services in Saudi Arabia.

The Odoo upgrade process, step by step

1. Audit and clean the data

Data cleaning is not part of Odoo’s upgrade service, so do it first. Remove duplicate contacts and products, cancel old drafts, reconcile bank accounts, close the last accounting period and check stock valuation. List every Studio customisation, custom module, third-party app and integration. This inventory drives your plan and your test scripts.

2. Request a test upgrade database

Test databases are neutralised, so they cannot affect live operations: scheduled actions are disabled, outgoing mail servers are replaced by a dummy one, payment providers and delivery carriers are switched to test mode, and bank synchronisation is turned off. Each completed request comes with an upgrade report explaining what changed. You can request as many test upgrades as you need.

3. User acceptance testing

Ask a key user from each department to run their real daily work in the test database and sign it off. A good end-to-end test buys a product, receives it, sells it, ships it, invoices it, issues a credit note and checks the accounting reports against production. Also test integrations (EDI, APIs), automated and server actions, data exports, website pages and printed reports. Report anything wrong to Odoo through the support page as an issue with a future upgrade.

4. Compliance checks for the UK and Saudi Arabia

United Kingdom: MTD for VAT. HMRC requires VAT-registered businesses to keep digital records in compatible software and to move data between programs through digital links, not copy and paste. Before go-live:

  • switch the test database to HMRC demo mode (the l10n_uk_reports.hmrc_mode system parameter set to demo) so nothing is filed for real;
  • compare the VAT return boxes for a closed period in the old and upgraded databases;
  • confirm any spreadsheets or apps that feed VAT figures still connect digitally;
  • in Odoo 20, HMRC authentication is stored per company, so multi-company groups should check who is connected for each one;
  • keep the cut-over clear of a VAT return deadline. Odoo only retrieves open VAT obligations from the last three months, so a return more than three months late has to be handled with HMRC directly.

Our guide to Odoo and Making Tax Digital for VAT covers the setup in more detail.

Saudi Arabia: ZATCA e-invoicing. ZATCA’s Phase 2 (integration) started on 1 January 2023 and is being rolled out in waves. B2B invoices are cleared by ZATCA. Before go-live:

  • confirm every sales journal, and the point of sale journal, is still onboarded and submitting in the upgraded test database;
  • run test invoices against ZATCA’s Simulation (pre-production) environment, never the live Fatoora portal. Once a database is in Production mode and has submitted an invoice, it cannot be switched back, so agree with your partner how the test copy is kept apart from live submissions;
  • test standard and simplified invoices, credit notes and QR codes;
  • clean address data. Odoo 20 limits the Building Number and Secondary Number fields to exactly four digits to avoid ZATCA rejections, and the invoice date is now the official ZATCA issue date.

Our Odoo ZATCA e-invoicing guide explains onboarding step by step.

5. Cut-over plan and downtime

Your production database is unavailable while it is being upgraded, so pick a quiet window, such as a weekend away from month-end. Odoo recommends requesting fresh test upgrades regularly and a full rehearsal the day before. Once production is submitted, changes made in the old database are not carried over, so stop using it.

Rollback differs by hosting. On Odoo Online, a completed upgrade cannot be reverted. On Odoo.sh, the platform reverts automatically if the upgrade fails and keeps a backup on success. On-premise, take your own backup and remember the upgraded copy comes back without your production filestore, so the two must be merged before you go live. A written cut-over plan should name the freeze time, final backup, go/no-go owner, smoke tests and a two-week support period after go-live.

What’s new in Odoo 19 and Odoo 20

A few verified highlights from the Odoo 20 release notes and the Odoo 19 release notes. If you are on Odoo 17, you also gain everything added in Odoo 18.

  • Odoo 19 (September 2025): AI agents that learn from your documents and perform actions, AI-filled fields, natural-language search, sections on quotations and invoices, and ready-made import templates for common records. For Saudi Arabia, the release added ZATCA onboarding for branches.
  • Odoo 20 (September 2026): an offline mode for creating and editing records, connecting to the database over MCP, AI agents that can create and update records (all AI features now use IAP credits), a switch between tax-included and tax-excluded prices on orders and invoices, and multiple identifiers per contact.
  • Odoo 20 for the UK: HMRC authentication per company and VAT returns for several companies without re-authenticating.
  • Odoo 20 for Saudi Arabia: ZATCA submission built into the Send wizard with pre-checks, batch processing and a ZATCA history tab.

Odoo upgrade checklist

PhaseTaskOwner
PlanConfirm current version, edition, hosting and target (Odoo 20)Project lead
PlanList custom modules, Studio changes, third-party apps and integrationsPartner / IT
PlanCheck each third-party app has an Odoo 20 versionPartner
PrepareFreeze new development and clean dataIT / key users
PrepareOn-premise: prepare Python 3.12+ and PostgreSQL 16+IT
TestRequest a test upgrade and read the upgrade reportPartner
TestPort custom modules and run standard testsDevelopers
TestRun user acceptance testing with signed-off scriptsKey users
TestUK: MTD VAT in HMRC demo mode. Saudi: ZATCA in SimulationFinance
Go-liveRehearse the full upgrade the day beforePartner
Go-liveFreeze, back up, upgrade production, run smoke testsPartner / IT
AfterTrain users on changes and monitor for two weeksPartner / key users

How long does an Odoo upgrade take?

These bands are indicative, based on typical projects, not a quote:

ScenarioTypical durationWhat drives it
Standard database with few custom modules2–6 weeksTesting time, data cleaning, user availability
Heavily customised database2–4 monthsPorting and retesting custom code, integrations, versions skipped

The biggest variables are the number and quality of custom modules, how many versions you skip, integrations with other systems, data volume and how quickly key users can test. Community upgrades through OpenUpgrade usually sit at the longer end, because each version step needs its own run and checks.

Risks and how to reduce them

RiskHow to reduce it
Custom module breaks in Odoo 20Port early on an empty database, drop features now in standard, add automated tests
Third-party app not readyCheck vendor releases before setting a date; plan a replacement
Wrong figures after upgradeCompare trial balance, stock valuation and VAT reports between old and test databases
Test copy sends real emails or e-invoicesRely on neutralisation, use HMRC demo mode and ZATCA Simulation, never live credentials
Longer downtime than plannedTime the rehearsal and add a buffer to the window
Users resist the new screensInvolve key users in testing and run short role-based training before go-live

Moving to Odoo from another system

If you are coming from another ERP or accounting package, Odoo’s upgrade service does not apply. This is a data migration project. Start new projects on Odoo 20, the current version, rather than an older release. The main steps are:

  • map your chart of accounts, taxes, customers, suppliers and products to Odoo;
  • choose a clean cut-off date, ideally the start of a financial year or VAT period;
  • load opening balances and open items (unpaid invoices, open orders, stock on hand);
  • decide how much history to bring across, and where the old system stays readable;
  • set up compliance from day one: MTD VAT and the HMRC connection in the UK, ZATCA onboarding in Saudi Arabia.

For UK businesses we have specific guides for Sage to Odoo migration and Xero to Odoo migration. See our Odoo migration services for both upgrades and moves from other systems, with country pages for Odoo migration in the United Kingdom and Odoo migration in Saudi Arabia.

Planning an Odoo upgrade or a first move to Odoo 20? OzonLayer is an official Odoo Silver Partner working with businesses in the United Kingdom and Saudi Arabia, with three Odoo 18 certified consultants. Book a free consultation and we will review your database, custom modules and compliance setup, then give you a realistic upgrade plan.

Frequently asked questions

Is the Odoo upgrade free?

For Odoo Enterprise subscribers, the technical upgrade of standard apps and Studio customisations is included in the subscription, along with support to fix discrepancies in the upgraded database. Porting custom or third-party modules without a maintenance contract, cleaning data and training users are not included, so most projects still involve partner or developer time.

Can I upgrade directly from Odoo 17 to Odoo 20?

Yes, on Odoo Enterprise. The upgrade service can take a database from any version to any major version still under standard support, so Odoo 17 to 20 is one request. Custom modules must be rewritten for Odoo 20. On Community with OpenUpgrade, you upgrade one version at a time: 17 to 18, 18 to 19, then 19 to 20.

Is Odoo 17 still supported?

Odoo 17 reached the end of standard support in September 2026. It can still get extended support for an additional fee on Odoo.sh and on-premise, but not on Odoo Online, and security updates are only provided during standard support. In November 2026, Odoo 18, 19 and 20 are the versions under standard support.

How long is the system down during an Odoo upgrade?

Your production database is unavailable for as long as the upgrade runs, which depends mainly on database size. Your test upgrades and the rehearsal the day before give a realistic estimate. Most businesses schedule the upgrade over a weekend or another quiet period, away from month-end, and keep time for smoke tests before users log back in.

Will my custom modules work after the upgrade?

Not automatically. Odoo will not upgrade a database until its custom modules have a version for the target release. Each module must be ported, installed on an empty Odoo 20 database, tested on an upgraded copy of your data and retested by users. Odoo 20 changes such as simplified access rights and the move to Python 3.12 affect many modules.

What should UK businesses check for MTD VAT after upgrading?

Test HMRC submissions in demo mode on the test database, compare VAT return boxes for a closed period between the old and upgraded databases, and confirm any linked apps still pass figures digitally. Odoo 20 stores HMRC authentication per company, so multi-company groups should check each connection. Keep go-live clear of a VAT return deadline.

What should Saudi businesses check for ZATCA after upgrading?

Confirm every sales and point of sale journal is still onboarded, and test standard and simplified invoices, credit notes and QR codes against ZATCA's Simulation environment rather than the live portal. Clean address data, because Odoo 20 requires four-digit Building Number and Secondary Number values, and note that the invoice date is now the official ZATCA issue date.

Should I upgrade to Odoo 19 or Odoo 20?

For most businesses, Odoo 20. Its standard support is planned until September 2029, a year longer than Odoo 19, so you get more time before the next mandatory upgrade. The main reason to stop at Odoo 19 is a business-critical third-party app that has not yet released an Odoo 20 version.

Share this article
Written by Nauman Ahmed

Published by OzonLayer, an official Odoo Silver Partner that helps businesses in Saudi Arabia and the United Kingdom implement, customise, migrate and support Odoo ERP.

Planning an Odoo upgrade or migration?

Talk to a certified Odoo consultant about your requirements. We’ll give you a straight answer on scope, timeline and budget, with no obligation.