Skip to content
Odoo Upgrades

Odoo 18 → Odoo 20

Upgrade Odoo 18 to Odoo 20

Odoo 18 is still supported, which makes this the cheapest moment to upgrade: one 2-hop jump with no security pressure. Here's every hop, what breaks along the way, and how TechUltra Upgrades gets you there.

Migration Project · Enterprise

Hop path

  1. 18
  2. 19
  3. 20

▸ LIVE TERMINAL

✓ preflight PostgreSQL 16 OK · docker hop images 19, 20 OK

✓ restore source dump restored to trial DB (live DB untouched)

✓ hop 18→19 done · 214 modules updated

⟳ auto-heal bad XML-ID rename detected · patched script · retrying hop

✓ hop 19→20 done after retry

› hop 19→20 running · custom modules detached for hop

Trial balancematches
Stock valuationmatches
AR / APreconciled
Custom modulesPR ready

Illustrative run based on the TechUltra Upgrades project screen

Version hops
2
Complexity
Medium
Method
Fully automated
Odoo support
Supported

The upgrade path: 18 → 19 → 20

Odoo can't jump straight across major versions; each one carries its own data migration scripts. Moving from Odoo 18 to Odoo 20 therefore means 2 consecutive hops. TechUltra Upgrades runs them back to back on a copy of your database, saves a checkpoint after each one, and resumes from the last good hop if something fails, instead of starting over.

What changes between Odoo 18 and Odoo 20

These are the framework changes your custom modules cross on the way. Each one is handled by our porting rules and reviewed by an engineer.

Arriving at Odoo 19 (2025)

  • SQL constraints move from _sql_constraints to declarative models.Constraint objects.
  • ORM internals reorganised under odoo.orm; imports and private API calls need updating.

Arriving at Odoo 20 (2026)

  • _sql_constraints and _constraints no longer supported at all, so un-ported modules silently lose their constraints.
  • Accounting: parent accounts replace account groups, account codes become optional, depreciation models replace asset models.
  • AI agents that create and update records and connect over MCP; new offline mode for field users.

How TechUltra Upgrades handles this path

  • Preflight checks for PostgreSQL version, hop images and upgrade scripts before anything runs.
  • Custom modules detached during hops so the standard data migrates cleanly, then re-attached as ported Odoo 20 code.
  • Auto-heal for known upgrade failures, such as bad XML-ID renames and orphan views, with automatic hop retry.
  • Reconciliation of trial balance, stock valuation and receivables/payables against your Odoo 18 source.

Should you upgrade Odoo 18 now?

You're on a supported version, so there's no emergency. But every year you wait adds another hop. Upgrading now keeps it to 2 hops.

FAQ

Odoo 18 to 20 upgrade FAQ

Can't find your answer? Ask an upgrade engineer.

Can I upgrade Odoo 18 directly to Odoo 20?

+

Yes, as a single project. Technically the database passes through 18 → 19 → 20, but TechUltra Upgrades runs and checks every hop for you and you only test the final Odoo 20 result.

How long does an Odoo 18 to 20 upgrade take?

+

The automated run of all 2 hops takes hours. Calendar time is mostly your user testing, typically a few weeks depending on how many custom modules you have.

Is Odoo 18 still supported?

+

Yes. Odoo maintains the three most recent major versions (18, 19, 20), so Odoo 18 is still supported, but it will drop out of support when newer versions ship.

What does it cost to upgrade Odoo 18 to 20?

+

Every upgrade is quoted on its complexity after the free assessment. Cost depends on database size, the 2 hops involved and the number of custom or third-party modules to port.

Get your Odoo 18 → 20 upgrade plan

Run a read-only scan of your database. You get a module-by-module risk report, a timeline, a downtime estimate and a quote based on your complexity. No obligation.