Odoo 20 Technical Notes for IT Leads and Integrators
Marcie Nguyen
Marcie is a skilled writer at Havi Technology focusing on creating content for marketing, eCommerce, point of sales, and ERP solutions. With over 8 years of experience in the retail, eCommerce and ERP technology sectors, Marcie is dedicated to providing insightful answers to business owners of all scales.
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:
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:
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.