Contact Us

Odoo 20 Technical Notes for IT Leads and Integrators

A companion to our Odoo 20 overview, for the people who maintain custom modules and integrations.

Odoo 20 technical notes cover changes in Odoo 20.0 that affect how custom modules and integrations behave. These notes draw on Odoo’s release notes, its 20.0 developer documentation and Havi’s module-level comparison of Odoo 20.0 against 19.0.

The analysis includes 12 breaking changes, modules removed or added, pre-release claims checked against the final release, and Australian localisation considerations. Key areas include security rules, external APIs, Field Service, Payroll and module dependencies.

These notes explain what changed in Odoo 20, but not how those changes will affect your specific database. A test upgrade is still needed to identify potential issues before go-live.


Scope of these Odoo 20 technical notes

These notes cover Odoo 20.0 across Community, Enterprise and industry editions, focusing on changes that may affect custom modules, integrations and upgrade effort.

The findings are based on Odoo’s official release notes and Havi’s technical review. They confirm what is included in the release, but do not establish how a particular database, hosting environment or customisation will behave after upgrading. Those outcomes require testing.

Breaking changes in Odoo 20 for custom code and integrations

Twelve breaking changes in Odoo 20 affect custom code and integrations, running from the security model through Payroll and Field Service to the web client, the external API and AI billing. Start with security and API compatibility: these determine what users can access and whether external systems can continue connecting as expected.

Change

Modules

Detail

What to check

Record rules removed; domain on the access right

base (ir.access), every module’s security files

Access rights (ir.access) now carry a domain that determines which records they apply to; record rules (ir.rule) no longer exist in 20.0, so custom rules must be re-expressed.

Every custom security rule, by group; what each role can see, re-tested.

Tracking values removed

mail, new mail_tracking*

The tracking message is generated on the fly; features that read stored tracking values (burndown charts, stage duration) have changed; a dedicated module restores stored values where a report needs them.

Custom reports and automations that read change history; whether the dedicated module is needed.

Payroll work entries removed

hr_payroll, hr_work_entry (community), Planning–Payroll bridge

Work entry types and time-off types feed payroll directly; the Planning integration is removed.

Salary rules and custom work-entry logic; cut over at a pay-period boundary with a year-to-date reconciliation.

Return wizard removed

stock

The return wizard no longer exists; returns are created directly from the delivery.

Customised return flows and portal returns, re-tested.

Field Service replaced

industry_fsm* → planning_field_service

The industry_fsm family and its bridges are not in Enterprise 20.

Data mapping tasks → planning slots; worksheets; customer equipment; effort band.

Batch picking merged

stock_picking_batch → stock

The separate module is gone; batch/wave picking is core.

Custom module dependencies; batch and wave flows re-tested.

Web client on Owl 3

web

Custom JS components written for Owl 2 patterns may need changes.

Custom JavaScript components and views, re-tested in the browser.

Material Symbols replace Font Awesome

web

Icon classes from the old set in custom views, buttons and printed reports no longer render as before.

Custom views, buttons and reports that reference icons.

XML-RPC / JSON-RPC deprecated

rpc

Odoo’s own deprecation notice: the /xmlrpc, /xmlrpc/2 and /jsonrpc endpoints are “deprecated in Odoo 19 and scheduled for removal in Odoo 22”; JSON-2 is the supported path.

Every external client - EDI, carriers, BI, scripts; the JSON-2 move planned before 22.

Push notifications off Firebase

mail_mobile

Handled by Odoo’s own tools.

Re-test mobile notifications.

AI metered via IAP; no own API key

ai, ai_agentic

Release notes: “All AI features now need credits, which can be bought via IAP.” No API-key setting in the 20.0 modules.

Credit budget; any 19 API-key configuration removed from runbooks.

Partner autocomplete no longer adds industry tags; Clearbit replaced by Dun & Bradstreet

partner_autocomplete, crm_iap_*

Lead-generation data source changed.

Automations keyed on partner tags.


Odoo 20 also changes how certain modules are organised, which may affect existing customisations and integrations, as explained in the next section

Modules removed and added (Community 20.0 vs 19.0)

Comparing Odoo Community 20.0 with 19.0, Havi identified modules removed or added across seven groups. Many removed modules have been merged into others, rather than discontinued entirely. These changes matter for custom modules and integrations. If a custom module depends on a module that no longer exists, its dependencies (`__manifest__.py`) may need updating before it can be installed in Odoo 20.

Group

Removed in 20.0

New in 20.0

Core and framework

base_vat, base_iban (merged into base), transifex, iot_base, iot_box_image

base_report_paper_muncher, base_report_wkhtmltox, printer, iot_webserial, populate, test_translation_mode, mysubscription, portal_discuss

Mail

-

mail_tracking, mail_tracking_mass_mailing, mail_tracking_sms

Inventory, purchase, manufacturing

stock_picking_batch, delivery_stock_picking_batch, delivery_mondialrelay, purchase_requisition_sale

purchase_alternative, purchase_alternative_sale, purchase_alternative_stock, mrp_delivery, pos_stock, pos_sale_stock, pos_sale_delivery, fleet_maintenance

HR

hr_homeworking, hr_homeworking_calendar, hr_holidays_homeworking, hr_org_chart, hr_hourly_cost, hr_work_entry_holidays

hr_address_extended, hr_calendar_go

Website and eCommerce

website_sale_wishlist, website_sale_comparison, website_sale_comparison_wishlist, website_sale_stock_wishlist, website_sale_collect_wishlist, website_sale_mondialrelay, website_sale_autocomplete

website_address_autocomplete, website_partnership, website_sale_project, website_mass_mailing_event, marketing_card_event, crm_sale_project, sale_project_margin

Point of sale

pos_restaurant_adyen, pos_restaurant_stripe, pos_self_order_adyen, pos_self_order_stripe, pos_self_order_viva_com

pos_bancontact_pay, pos_self_order_bancontact_pay, pos_partner_autocomplete, pos_self_order_event, pos_self_order_sms

Accounting and localisations

account_add_gln, account_peppol_advanced_fields, account_peppol_response, l10n_latam_base, l10n_cn_city, l10n_dk_nemhandel*, l10n_dk_oioubl, l10n_tr_nilvera*, l10n_ec_stock, l10n_hu_edi_receive, l10n_lk_invoice, l10n_pl_bank_verification, l10n_ro_cpv_code, l10n_ro_edi_stock_batch, l10n_sa_withholding_tax, l10n_uy_pos

account_payment_custom, l10n_eu_account_vies, l10n_fr_payment, l10n_in_boe, l10n_mk, l10n_mm, l10n_ph_invoice, l10n_ph_sale, l10n_pk_edi, l10n_pk_edi_pos, l10n_kr_sale, l10n_be_pos, l10n_eg_edi_pos, l10n_es_website_sale, l10n_gr_edi_delivery_note, l10n_id_pos_self_order_qris, l10n_tw_edi_ecpay_sale, l10n_vn_edi_viettel_stock


Pre-release coverage described a different release in several places, so check the next table before reusing any estimate built on it.

Preview claims checked against the release (as at 15 October 2026)

Before Odoo 20 was released, several features and changes were reported as expected in the new version. Havi checked 15 of these pre-release claims against Odoo 20.0 as shipped on 15 October 2026.

Of the 15 claims, 13 were not confirmed in the release, one shipped in part (Channex sync, without an RMS), and one shipped as reported (light users). The table below shows each claim alongside what actually shipped.

Claim seen in pre-release coverage

In the release?

What shipped instead

Native GraphQL endpoints

No

JSON-2 API

Bluetooth thermal printing for offline POS

No

Label printing via USB proxy; printer module; Obox

Payment providers PayWay, Belvo, Kueski

No

ECPay (from 19.0), Xendit expansion, Toss Payments, PayU, Pay on Invoice

Bring your own OpenAI / Gemini key

No - no own-key setting in the AI app

AI metered via IAP credits; automatic model selection

Appointments slot-deletion mode

No - nor in the release notes

-

Payroll packages FR, IT (SD Worx), US ADP, HK eMPF

No

-

Rental seasonal pricelist

No

Unified Sales/Subscription/Rental prices tab

Construction WBS, progress billing

No - not in the Construction package

General Contractor with section templates; Property Developer on MRP/Inventory

Hotel Channex channel manager + RMS

Channex sync only; no RMS

Housekeeping and bar/restaurant bill balancing

Warehouse routes by product category

No

Location-specific push routes

XML-RPC / JSON-RPC removed in 20

Still present; deprecated since 19

Removal scheduled for Odoo 22

Chromium local-network hardware discovery

No

Printer management, iot_webserial, Obox

Multi-account Outlook sync

No - Outlook sync stays single-account

Multiple Google calendars only

Owl 3 “did not ship” (a post-release claim)

Yes - Owl 3 is in the release

Shipped as an alpha build

Light users

Yes - a Light / User / Administrator role on the user record; each app defines which of its roles a light user may hold; the release notes mention only the Barcode-only restriction

Shipped; pricing is Odoo’s commercial decision


Beyond the pre-release claims, there are also Odoo 20 changes and upgrade considerations specific to Australian businesses.

Odoo 20 changes for Australian businesses

Odoo 20’s release notes include one Australia-specific update: bank synchronisation through Basiq, an open banking provider.

For Australian Peppol e-invoicing, the Australian Business Number (ABN) is used as the participant identifier, alongside the PINT A-NZ document format (l10n_anz_ubl_pint). The release notes also mention global location identifiers (GLNs), but this is not an Australia-specific change.

For Australian Payroll, the recommended approach is to move to Odoo 20 at a pay-period boundary, reconcile Single Touch Payroll (STP) year-to-date figures, and preferably schedule the change at a financial-year boundary.

Before upgrading, test Basiq bank synchronisation, PINT A-NZ e-invoicing and Australian Payroll processes in your own environment to confirm compatibility.

Odoo 20 changes by application

Odoo’s release notes list 702 changes across its applications in version 20. Website has the most listed changes (60), followed by Localisations (55), Accounting (46) and General (web client) (42).

The table below shows how these changes are distributed across Odoo applications. The number of changes does not necessarily indicate their impact on your existing system.

App

Changes

Website

60

Localisations (55 countries)

55

Accounting

46

General (web client)

42

eCommerce

38

Spreadsheet

30

Sales

27

Industries

25

Manufacturing

25

Point of Sale

24

Inventory

23

AI

21

Planning (incl. Field Service)

20

Appointments

19

Online Payments

16

Payroll

15

Sign

15

Email Marketing

14

Barcode

12

Attendances

10

Phone

10

Calendar

10


Here are some examples of Odoo 20 changes that may affect existing workflows and integrations:

  • Accounting: Changes to account structures, depreciation models, and payment statuses may affect existing integrations.
  • Manufacturing: Flexible consumption is now the default, with lot and serial numbers generated when manufacturing orders close.
  • Point of Sale: Changes to session closing and payment posting may affect accounting reconciliation.

Together with the 12 breaking changes above, these updates highlight key areas to include in your Odoo 20 upgrade testing plan.

Know what Odoo 20 changes for your database

These technical notes explain what changed in Odoo 20. But understanding how those changes affect your existing customisations, integrations and workflows requires a closer look at your setup.

Havi’s Odoo Upgrade Impact Scan helps identify potential upgrade issues, the work involved and recommended next steps before you commit to an upgrade.

Explore the Odoo Upgrade Impact Scan

Article Sources

Havi Technology requires writers to use primary sources to support their work. These include white papers, government data, original reporting, and interviews with industry experts. We also reference original research from other reputable publishers where appropriate. You can learn more about the standards we follow in producing accurate, unbiased content in our AI Content Policy:

  1. Odoo 20 Release Notes, odoo.com (“Release Notes September 2026”)
  2. Odoo 20.0 documentation: UI icons; External RPC API; Upgrade
  3. OpenPeppol: PINT A-NZ Billing specification, docs.peppol.eu


Disclaimer

All content on Havi's blog is provided for informational and educational purposes only. It does not constitute legal or financial advice. While Havi Technology strives to ensure accuracy by referencing reputable sources and industry expertise, information may not be complete, current, or applicable to every business context. Readers should seek independent professional advice before making business or operational decisions. References to third-party products or services do not imply endorsement unless explicitly stated.

Want to see how Havi can help with your ERP software implementation?

Let our dedicated team support you every step of the way.