HADOOPT
TECHNOLOGIES
Schedule a Tech Consultation
Home
Services
Odoo ERP implementation Rollout, custom modules, migration and support. Web application development SaaS products, portals and internal platforms. Mobile application development Offline-first field apps and customer apps. AI development & automation LLM assistants, document processing, forecasting. Odoo version upgrades ↗ Move to a newer release, scoped and priced on its own site.
Products
OrgExp ↗ Budget, CAPEX and OPEX management.
Blog About Contact Schedule a Tech Consultation
Blog / Odoo 20: Complete Guide for Businesses
Odoo 20 8 min read

Upgrading from Odoo 19 to Odoo 20: what to check before, during and after

How to upgrade Odoo 19 to 20: support dates, upgrade.odoo.com test databases, custom modules and Studio, testing, the production run and what to check after.

· ERP practice 12 Nov 2026

To upgrade from Odoo 19 to Odoo 20, request an upgraded test database from Odoo's upgrade platform, port any custom modules to 20.0, and test your business flows on that copy. Then rehearse and upgrade production at a quiet time. There is no hurry: Odoo 19 has standard support until September 2028 (planned). Odoo's upgrade service covers standard apps and Studio customisations. Custom modules are the maintainer's job, and with Odoo 20's new access-rights model, every custom module that defines security needs work.

When to upgrade: the support dates

Odoo's support page gives each major version three years of standard support, which includes security updates. After that, extended support costs extra and is only available on Odoo.sh (for a limited number of versions) and on-premise. Odoo 20.0 was released in September 2026, with standard support planned until September 2029. Odoo 19.0 is planned until September 2028.

HostingIs the upgrade mandatory?How you start it
Odoo OnlineMajor versions must be upgraded every two years. You are notified, and an automatic upgrade runs if you do nothing by the deadline.Database manager › Manage › Upgrade
Odoo.shAfter the three years of support, you have another two years to upgrade.Your Odoo.sh project, integrated with the upgrade platform
On-premiseNo. You can stay on a version indefinitely, though Odoo doesn't recommend it.The upgrade script from upgrade.odoo.com, or the Upgrade page

You can upgrade to any major version still in standard support, or one that left it less than six months ago. The full policy is explained in Odoo's release cycle and support policy. If you are still deciding whether to move now, read upgrade to Odoo 19 now or wait for Odoo 20.

Before the upgrade: what to check

Inventory and freeze

Odoo's guide for customised databases starts with "Stop the developments and challenge them". Freeze new feature work (bug fixes are exempt), then compare each customisation with what Odoo 20 now does as standard. Anything the standard now covers is code you don't have to port. Our Odoo 20 readiness checklist covers the inventory of modules, Studio work and integrations.

Odoo 20 changes most likely to affect an Odoo 19 database

  • Access rights. Record rules are removed and domains move onto access rights (ir.access). Every custom module with its own security files needs rework. See simplified access rights in Odoo 20.
  • Chart of accounts. Account groups are replaced by parent accounts. Check any report or integration that reads account groups.
  • Fixed assets. Asset models are replaced by depreciation models.
  • Field Service. Worksheet templates now use property fields instead of Studio fields. If you built worksheets in Studio, test them first.
  • AI. All AI features now need IAP credits, and "topics" are now "skills". Budget for credits before relying on agents. See AI agents in Odoo 20.
  • India. TDS is now recorded through the Pay button, and there are new Composition, QRMP and Schedule III features. See Odoo 20 for Indian companies.

On-premise: server requirements

The 20.0 installation page raises two minimums: Python 3.12 (was 3.10) and PostgreSQL 16 (was 13 in Odoo 19). If your server runs older versions, plan that infrastructure work before the database upgrade, not on the same night.

Getting an upgraded test database

How you request one depends on hosting:

  • Odoo Online: open the database manager, click Manage on the database, then Upgrade. Choose the target version, the email to notify, and the Purpose, which is set to Test for your first request.
  • Odoo.sh: the latest daily production backup is sent to the upgrade platform and returned to a staging branch. Each new commit then restores the upgraded backup and updates your custom modules, so you test them on a clean upgraded copy. The log is in ~/logs/upgrade.log.
  • On-premise: run the upgrade script on the database server, or use the Upgrade page on upgrade.odoo.com.
$ python <(curl -s https://upgrade.odoo.com/upgrade) test -d <your db name> -t 20.0
The on-premise test upgrade command from Odoo's documentation, with the target version filled in.

On-premise, the machine must reach the upgrade servers on TCP port 443 and on random ports between 32768 and 60999, which restrictive firewalls often block. Only the person who requested the upgrade can download it. The copy comes back without your production filestore, so merge the returned filestore folder with your production one before testing.

When an upgrade finishes, Odoo attaches an upgrade report to the email. Users in the Administration / Settings group can also read it in Discuss. Read it before you start testing. You can request as many test databases as you need.

Custom modules and Studio

Custom modules

Odoo's process for customised databases is: stop developments, request an upgraded database, make your modules installable on an empty 20.0 database, then on the upgraded database, test and rehearse, and finally upgrade production. On the empty database, install each module one by one and fix every traceback and warning. The documentation lists typical causes: invalid dependencies, syntax changes, references to renamed or removed fields, models and views, XPaths that moved, and renamed methods. Then test views, email templates, reports, server and automated actions and computed fields, and run the standard tests of the module's dependencies.

Who pays for what

Odoo's upgrade SLA covers standard applications, Studio customisations as long as Studio is still installed and the subscription is active, and code under a maintenance-of-customisations subscription. It doesn't cover modules built in-house or by third parties, including Odoo partners, without such a contract. It also doesn't cover cleaning existing data, or training. Settle who ports each module before you set a date.

Studio customisations

Because Studio work is in the SLA, it's converted by Odoo's upgrade. You still have to check it. Open every Studio-modified view, report and automation on the test database. Odoo 20 also brings a new report editor interface, more readable technical names for fields created with Studio, and the Field Service worksheet change above. Our Studio guide explains where Studio ends and a module should begin.

Testing the upgraded database

Test databases are neutralised. Scheduled actions are disabled, outgoing mail servers are replaced by a fake one, payment providers and carriers are switched to test mode, and bank synchronisation is off. Anything that depends on them, including scheduled AI agents, won't run until you turn it on or test it differently.

Odoo's basic checklist asks whether views are still active and displayed correctly, and whether reports, website pages, record creation, mail templates, translations, search filters and data exports work. It also suggests one end-to-end flow: buy a product, receive it, sell it, ship it, invoice it, credit the invoice, then check the accounting reports, taxes, currencies and fiscal year. Add your integrations, cross-app flows, automated actions and server actions from the action menu.

Report problems from the Odoo Support page, choosing "An issue related to my future upgrade (I am testing an upgrade)". Odoo's documentation is clear that changes to standard views and features "cannot be reverted on a case-by-case basis". If a change breaks a customisation, fixing it is the module maintainer's job.

Upgrading production

  1. Request a fresh test upgrade close to the date. Odoo's scripts and your data both keep changing.
  2. Rehearse the full process the day before, as the documentation recommends.
  3. Pick a quiet window, away from month-end and your GST filing dates. The database is unavailable during the upgrade.
  4. Stop using the database. Changes made after the copy is uploaded don't reach the upgraded database.
  5. Run it. On Online, set the Purpose to Production. On Odoo.sh, the upgrade runs on the production branch when you push a commit. If anything fails it reverts automatically, and on success it keeps a backup of the pre-upgrade database. On-premise, run the same command with production in place of test, and merge the filestore before you deploy.

After the upgrade

  • Check the first day's work: invoices, deliveries, payments and the scheduled actions that are live again.
  • Report production issues from the Support page with "An issue related to my upgrade (production)".
  • Log in as each role to confirm the new access rights behave as intended.
  • Switch new features on one at a time (Light users, AI agents), and train users, which the upgrade service doesn't include.

For databases two or more versions behind, see planning a multi-version jump to Odoo 20. To scope your own upgrade, talk to us.

Questions we get asked

How do I upgrade Odoo 19 to Odoo 20?

Request an upgraded test database from Odoo's upgrade platform: through the database manager on Odoo Online, your project on Odoo.sh, or the upgrade.odoo.com script on-premise. Port custom modules to 20.0, test your business flows on the copy and report issues to Odoo. Then rehearse and request the production upgrade at a quiet time, when the database will be unavailable.

Is the upgrade from Odoo 19 to 20 free?

For Odoo Enterprise, Odoo's documentation says upgrading to the latest version is free, including support to fix discrepancies in the upgraded database. The SLA covers standard apps, Studio customisations while Studio and the subscription are active, and code under a maintenance-of-customisations contract. Custom modules built in-house or by partners, data clean-up and user training are not included.

Do I have to upgrade to Odoo 20 right away?

No. Odoo 19.0 has standard support planned until September 2028. On Odoo Online, major versions must be upgraded every two years, with notice before an automatic upgrade. Odoo.sh gives two more years after support ends, and on-premise databases can stay on a version indefinitely, though without security updates once standard support ends. Most businesses can test first and choose their date.

Will my Studio customisations survive the upgrade to Odoo 20?

Odoo's upgrade SLA covers customisations made with Studio, as long as Studio is still installed and the subscription is active, so Odoo's upgrade converts them. You should still open every Studio view, report and automation on the test database. Odoo 20 moves Field Service worksheet templates from Studio fields to property fields and introduces a new report editor interface.

What server versions does Odoo 20 need on-premise?

Odoo's 20.0 installation documentation states that Odoo 20 requires Python 3.12 or later, up from 3.10, and PostgreSQL 16 or later, up from PostgreSQL 13 in Odoo 19. Upgrade your server's Python and PostgreSQL before the database upgrade, and test the database upgrade on the same versions you will run in production.

← Previous Odoo 20 is out: what's new, from the official release notes Next → Simplified access rights in Odoo 20, and how to map your Odoo 19 groups onto them
Keep reading
Odoo 20 Odoo 20 readiness checklist: the work you can do now 6 min read Odoo 20 Planning a multi-version jump from Odoo 14, 15 or 16 to Odoo 20 6 min read Odoo 20 Upgrade to Odoo 19 now or wait for Odoo 20? 6 min read