Skip to main content
iVentureTeam

Odoo 20 Upgrade and Custom Modules: What Breaks and What It Costs to Fix

Siddharth JambukiyaSiddharth JambukiyaOdoo Techno-Functional Consultant
October 5, 20268 min read5 views
Odoo 20 Custom Module Upgrade: What Breaks, What It Costs

Odoo 20 shipped in September 2026, and for most businesses the question is not the new features. It is whether the custom modules your operations depend on will survive the jump, and that is where most of the work in our Odoo upgrade services goes.

One timing point first: as of October 2026, an existing database cannot be upgraded to Odoo 20 yet, because Odoo has not opened 20.0 as an upgrade target. That makes now the right time to get your custom modules ready.

This Odoo 20 upgrade and custom modules guide is narrower and more practical. It lists the specific framework changes that break custom code in an Odoo 20 upgrade, shows which of your modules are most at risk, and explains what each fix costs.

For the general method, our guide to upgrading Odoo custom modules covers the step-by-step process. Use this one to scope the Odoo 20 jump itself. For the full list of what changed, see our Odoo 20 release notes, app by app.

What breaks when you upgrade custom modules to Odoo 20?

What breaks when you upgrade custom modules to Odoo 20?

Custom modules break in an Odoo 20 upgrade when they rely on framework behavior that Odoo changed or removed. Odoo's official ORM changelog for Odoo 20 lists each change, and the ones below hit custom code most often.

What changed (release)

What it breaks in your code

Effort to fix

Binary fields now use a BinaryValue type and store raw data, not base64 (19.2, 19.3)

Code that encodes or decodes attachments, images and files by hand

Medium

RPC format for binary fields updated (20.0)

Integrations that send or read files through the API

Medium

Model._table_query removed (20.0)

Custom SQL-view reports and dashboards built on it

High

request removed from model code, env.website added (19.4)

Models that read the web request directly, common in eCommerce and portal code

Medium

ir.access merges access rights and record rules (19.4)

Custom security files and record rules

Medium

Reporting engines made modular (19.4)

Custom PDF report setups and heavily customized QWeb reports

Medium to high

New HTTP server (19.4)

Custom controllers that depend on low-level request handling

Low to medium

New ir.config_parameter API (19.1)

Modules that read or write system settings

Low

Records copy with "(copy)" by default for name fields (20.0)

Duplicate logic that expects the old naming

Low

Two smaller changes catch teams out too. Accessing an x2many field now returns only the records the user can access (19.3), which can change totals in custom reports. Translations for module manifests now live in each module's own files (20.0).

If you are coming from Odoo 17 or 18, add the earlier changes on top. Odoo 19.0 deprecated odoo.osv and the record._cr, record._context and record._uid shortcuts, and Odoo 18 releases deprecated read_group for backend use and renamed json controllers to jsonrpc.

Most of those versions are labeled 19.1 to 19.4, not 20.0. That detail decides how big your upgrade really is.

Why is an Odoo 19 to Odoo 20 upgrade bigger than it looks?

An Odoo 19 to Odoo 20 upgrade is bigger than it looks because Odoo.sh and self-hosted databases skip four Online releases and take all their changes at once. Odoo Online received versions 19.1, 19.2, 19.3 and 19.4 between major releases, but those versions never ship on Odoo.sh or on-premise.

So an Odoo Online customer met these changes a few at a time. A business running Odoo 19.0 on Odoo.sh or its own servers meets five sets of framework changes in a single jump, which is why a "one version" upgrade can still break a lot of custom code.

Where your Odoo runs

How Odoo 20 changes arrive

Custom code risk

Odoo Online

Gradually, through 19.1 to 19.4

Low, mainly Studio edits

Odoo.sh on 19.0

All at once in the jump to 20.0

Medium to high

Self-hosted on 19.0

All at once in the jump to 20.0

Medium to high

Odoo 17 or 18, any hosting

Two or three majors plus every interim release

High

That tells you how much has changed. The next question is which of your modules feel it first.

Which custom modules break first in an Odoo 20 upgrade?

Custom code written in-house or by an Odoo partner breaks first in an Odoo 20 upgrade, because Odoo's upgrade service does not cover it. Odoo's upgrade service terms exclude "additional modules not covered by a maintenance contract that are created in-house or by third parties, including Odoo partners."

Module type

Does Odoo's upgrade service move it?

Risk in Odoo 20

Studio customizations

Yes, while Studio is installed and the subscription is active

Low, but test custom reports

Custom modules built in-house or by an Odoo partner

No, unless covered by a maintenance of customizations subscription

High

Paid App Store apps

No, you need the Odoo 20 build from the vendor

Depends on the vendor

Free community (OCA) modules

No, they wait for volunteer ports

Depends on timing

Paid apps add a cost many owners miss: apps are often sold per version, so you may need to buy the Odoo 20 build again. Our guide to third-party Odoo module costs explains how that debt builds up.

Modules are only half the risk. The other half sits in the systems that talk to Odoo.

Book your free Odoo 20 module audit,

Will your integrations still work after the Odoo 20 upgrade?

Most integrations still work after an Odoo 20 upgrade, but anything that moves files or uses XML-RPC or JSON-RPC needs checking now.

Odoo's external API documentation says these endpoints are deprecated. The db service "was removed in Odoo 20," and the common and object services are scheduled for removal in Odoo 22 (fall 2028).

  • File transfers: the RPC format for binary fields changed in Odoo 20, so connectors that upload or download attachments need testing.

  • Database management scripts: anything that used the old db service no longer works on Odoo 20.

  • eCommerce, shipping and payment connectors: test them end to end, because they often touch files, web requests and controllers at once.

  • Plan the API move: use the Odoo 20 upgrade to start moving integrations to the newer JSON-2 API before Odoo 22 removes the old ones.

Once you know what breaks, you can put a price on it.

How much does it cost to fix custom modules for Odoo 20?

The cost to fix custom modules for Odoo 20 depends on how many modules you have, how well they are written and how far behind your version is, not on Odoo 20 itself. A few clean modules touching low-effort changes take days; undocumented code layered on by several partners takes weeks.

What drives the cost

Lower cost

Higher cost

Number of custom modules

A handful

Dozens

Code quality

Documented, with tests

Undocumented, written by several partners

Breaking changes hit

Settings, copy names, controllers

_table_query reports, binary handling, security rules

Starting version

Odoo 19.0

Odoo 17 or older

Integrations

Few, using current APIs

Many, using file transfers and old RPC

Data quality

Clean

Needs cleanup before the upgrade

For a real number on your own system, our free Odoo migration cost calculator prices your version jump, hosting, users and apps in minutes. For how upgrade quotes are built, see our Odoo upgrade cost guide.

Calculate your migration cost using Free Odoo migration cost calculator.

As a ballpark from that guide, an Odoo 19 to 20 upgrade typically runs $1,500 to $3,000, and Odoo 17 to 20 runs $3,500 to $10,000. These are industry estimates; your custom modules decide where you land.

For accurate pricing in writing, reach us at +91-90235-15208 or business@iventureteam.com. We quote after reviewing your modules, not before.

The single biggest saving is usually not cheaper coding. It is retiring modules you no longer need before anyone ports them.

How to audit your custom modules before the Odoo 20 upgrade

Audit your custom modules before an Odoo 20 upgrade by listing every module, checking who owns the code, and sorting each one into port, replace or retire. This six-step check works for owners and IT teams alike.

  1. List every module: open Apps, remove the default filter and note every module not authored by Odoo S.A.

  2. Find the code and its owner: confirm your company controls the Git repository and admin access, especially if a former partner wrote the code.

  3. Mark what is still used: ask each team which features they actually rely on.

  4. Check against the changelog: flag modules that use binary fields, _table_query, request in models, custom security rules or custom reports.

  5. Sort into port, replace or retire: port what is unique, replace what Odoo 20 now does as standard, and retire what nobody uses.

  6. Test on a copy: run the upgrade on a duplicate database before you touch production.

Run the Free Odoo Health Check.

Our free Odoo health check lists your version, edition, hosting, installed apps and custom modules, which covers the first step in minutes.

Can you upgrade to Odoo 20 now, or should you wait?

You cannot upgrade an existing database to Odoo 20 yet, but you can and should prepare your custom modules now. As of October 2026, the newest target on Odoo's upgrade platform is 19.0. Odoo Online databases move only when Odoo invites them.

Odoo's own upgrade documentation adds that a database with custom modules "cannot be upgraded until a version of your custom modules is available for the target version." So the module work comes first either way.

  • Today: you can start a new Odoo 20 database, audit your modules and port the code to Odoo 20. You cannot yet move a live database to 20.

  • On Odoo 17 or older: start the audit and port now. If 20.0 does not open before your renewal, moving to Odoo 19 also clears the yearly 25% Odoo legacy surcharge.

  • On Odoo 18: you are covered until about 2028, so prepare your modules now and upgrade once 20.0 opens.

  • On Odoo 19: no rush. Retire unused modules and move integrations off the old RPC APIs, so the jump is small when 20.0 opens.

  • On Odoo Online: wait for Odoo's invitation, then request an upgraded test database and test it before the due date. Odoo upgrades the database automatically if you take no action.

  • Once 20.0 opens: some teams let the first patches settle before going live; our post on upgrading on release day covers that trade-off.

Check the target list on Odoo's upgrade platform before you set a go-live date. Whichever timing you choose, the upgrade itself follows the same plan.

Your Odoo 20 upgrade plan for custom modules

A safe Odoo 20 upgrade for custom modules runs in four stages: audit, port and test, rehearse the cutover, then support the first weeks. Skipping the rehearsal is where most upgrades go wrong.

  • Audit: the six-step check above, ending in a clear list of modules to port, replace and retire.

  • Port and test: refactor each module for the Odoo 20 changes, then test real business flows, not just installation.

  • Rehearse the cutover: once Odoo opens 20.0 as a target, run the full upgrade on a copy, time it, and keep a rollback plan.

  • Go live outside close: avoid month-end and year-end, and give each team a short session on changed screens.

  • Support after go-live: watch reports, integrations and access rights closely in the first weeks.

How iVentureTeam helps with Odoo 20 custom module upgrades

iVentureTeam moves custom modules to Odoo 20 by auditing every module first, then porting only what your business still needs. We have delivered 150+ ERP projects across 35+ countries with 40+ Odoo specialists.

  • Module audit: every custom, Studio, App Store and community module checked against the Odoo 20 changes, with a port, replace or retire call for each.

  • Port and test: our Odoo upgrade services cover the database jump plus the custom code Odoo's own service leaves to you.

  • Integrations: file transfers checked and old RPC calls planned onto the newer API.

  • Cutover and support: a rehearsed go-live on a copy first, then close support in the first weeks.

Odoo upgrade case study: the custom modules that broke two upgrades

Odoo upgrade case study: the custom modules that broke two upgrades

DeenSqure shows what happens when custom modules block an upgrade, and how a module-by-module triage fixes it. The D2C retailer had run Odoo 14 for five years with 23 custom modules from three previous partners, and half the code was undocumented.

Two earlier upgrade attempts had failed because the custom modules broke during version testing. We started with a 2-week diagnostic and classified every module: 9 were ported, 8 were retired in favor of standard Odoo 19 features, and 6 were deferred.

In 11 weeks, DeenSqure moved from Odoo 14 to Odoo 19 and unified six sales channels, with stock accuracy at 99.7% and 14 hours a week of manual reconciliation removed. The same triage applies to an Odoo 20 move.

The bottom line on custom modules in an Odoo 20 upgrade

An Odoo 20 upgrade breaks custom modules that touch binary fields, SQL reports, request handling, access rules and reports, and Odoo's own upgrade service will not fix them for you. The cost depends on your modules, not on Odoo 20.

Odoo has not opened 20.0 upgrades for existing databases yet, so use the time well. Audit first, retire what you do not use, and port the rest with real testing. That keeps the bill predictable and the go-live quiet.

Ready to move your custom modules to Odoo 20?

Find out which of your modules break and what the fix costs, before you commit to a date. Book your free Odoo 20 module audit, call +91-90235-15208, or email business@iventureteam.com.

Frequently Asked Questions About Odoo 20 Upgrade & Custom Modules

Can I upgrade to Odoo 20 right now?

+

Not an existing database yet. As of October 2026, Odoo's upgrade platform offers 19.0 as the newest target, and Odoo Online moves only on Odoo's invitation. You can start a new Odoo 20 database and port your custom modules now.

Will my custom modules work on Odoo 20?

+

Not without changes if they touch binary fields, _table_query reports, request in models, access rules or custom reports. Simple modules may need only small fixes, but every module should be tested on a copy first.

Does Odoo's upgrade service fix custom modules?

+

No. Odoo's upgrade service covers standard apps, Studio customizations and code under a maintenance of customizations subscription. Modules built in-house or by partners outside that contract are yours to migrate.

Do Odoo Studio customizations survive the Odoo 20 upgrade?

+

Odoo's upgrade service covers Studio customizations as long as Studio is still installed and your subscription is active. Still test custom reports and automations, because they sit closest to the changed engines.

How long does an Odoo 20 custom module upgrade take?

+

It depends on your modules. A few clean modules can take days, while dozens of undocumented ones take weeks. DeenSqure's 23-module triage and upgrade took 11 weeks, including a 2-week diagnostic.

Can AI tools migrate Odoo modules to Odoo 20?

+

AI tools can speed up routine code changes, but they do not know your business rules. Treat AI output as a first draft, and keep human review and real business-flow testing before go-live.

Can I upgrade from Odoo 17 or 18 straight to Odoo 20?

+

Yes, once Odoo opens 20.0 on its upgrade platform. The service can jump several versions, but your custom modules must absorb every change in between, including the Odoo 19 deprecations. Bigger jumps mean more code to fix.

When was Odoo 20 released?

+

Odoo 20 was released in September 2026, with standard support planned until September 2029. It is now one of the three covered versions, alongside Odoo 18 and 19.

Ready to put this into action?

Talk to iVentureTeam about Odoo, AI automation, or custom development — get a free, no-obligation consultation.