Skip to main content
Odoo 20 · Technical guide

Odoo 20 is here: what changes for your integrations and connectors

Odoo 20.0 FINAL is out. Four things break third-party connectors — one of them without raising any error at all — and here is how we checked each one against the real source before porting our own.

Odoo 20 source code reviewed line by line before porting the connectors

Odoo 20.0 FINAL shipped after the Brussels Odoo Experience (24–26 September 2026) and is now live on the App Store. Before porting anything, we read the actual source — not a changelog, not a third-party blog — to find out what breaks a connector that works today on Odoo 19. Here is what we found, with the file and line where we checked it.

Method: every row in the table comes from running ls, grep or git log against /srv/odoo-fuente/odoo-20.0 and /srv/odoo-fuente/enterprise-20.0 (commits 17ff827a1 and e5186134, 26 and 27 September 2026), not from reading about Odoo 20 somewhere else.

The four breaking changes we verified

What is goneWhat happens if your module uses itVerified against
base_vat and base_ibanThe module fails to install if it depends on them: NIF/IBAN validation moved into core.addons/ folder in Odoo 20.0 FINAL source
ir.model.access and ir.ruleBoth merge into a new model, ir.access. Old-format permission CSVs are not read.odoo/addons/base/models/ir_access.py + odoo/upgrade_code/19.4-00-ir-access.py
odoo.osv (the whole package)from odoo.osv import expression raises ModuleNotFoundError and the module fails to load.odoo/osv/ missing from Odoo 20.0 FINAL source
The datas field on attachmentsir.attachment.create({'datas': ...}) creates the attachment with size 0, with no error at all. The signed PDF comes out empty.odoo/addons/base/models/ir_attachment.py:535 in Odoo 20.0 FINAL source

The attachment change is the dangerous one: it raises no exception at all. An e-signature connector still writing 'datas': base64... installs cleanly, passes a smoke test, and saves the signed PDF at size 0. It shows up when a customer tries to open the document, not in the deploy log.

What to check before migrating your own connector

  1. grep -rn base_vat\|base_iban __manifest__.py across your modules: if it's in depends, the module won't install.
  2. grep -rn 'from odoo.osv import' across the Python code: every hit needs to become from odoo.fields import Domain.
  3. ir.model.access.csv files: run odoo-bin upgrade_code --script 19.4-00-ir-access, which converts the format, updates the manifest and removes the old CSV (Odoo's own official script).
  4. Any 'datas': base64.b64encode(...) written to an attachment: change it to 'raw': ..., which works the same on Odoo 17, 18, 19 and 20 — no need to wait for the port to fix it.

How we tested it ourselves

Every one of our connectors that reaches Odoo 20 first goes through a real Odoo 20.0 FINAL install with Enterprise: it actually installs, its whole test suite runs — at least one test, none skipped — and only a fully green run gets published. A clean install is not proof: the attachment issue, for instance, only shows up in a test that opens the document after creating it, never in a tidy install log.

With that bar, we already have 9 connectors published on Odoo 20 — the list is in this article — and the rest of the catalog is arriving module by module, as each one clears its full test suite, not all at once.

Frequently asked questions

Can Odoo 20 be installed in production already?

Odoo 20.0 FINAL is published and available on the App Store. Before migrating a deployment with custom connectors, check whether they depend on base_vat, base_iban or odoo.osv, and whether they write attachments using 'datas'.

Why can a connector that installs fine still fail on Odoo 20?

Because installing only checks that the manifest and views load. The attachment change (the datas field) raises no error when the record is created: the failure shows up when the saved document is read or opened, something only a test that actually checks this catches.

Useful links inside FlexigoTech

Our connectors already on Odoo 20The live list, linked to each listingMigrating to Odoo 20: checklistFor companies with active integrationsModule catalogPrice and versions for each one

Does your connector rely on us? We'll tell you if Odoo 20 breaks it

Send us the module's name and we'll tell you, against the real source, whether any of these four breaking changes affects it. Email comercial@flexigobe.com or call +34 616 809 504.

Talk to an engineer