Odoo 20 introduces changes across its user interface, accounting functionality, development framework, and application workflows. For businesses running Odoo 19, the upgrade is not simply a matter of moving to a newer version. Existing custom modules, integrations, reports, and user processes must continue to work with the updated system.
Odoo 20 was released in September 2026. Its release notes include improvements to activities, chatter, accounting, website tools, project management, and other applications. Some changes affect everyday users, while others require developers to update existing code. A successful upgrade also requires a structured review of custom modules, integrations, data, and business workflows. Our Odoo upgrade services cover these areas, from compatibility assessments and test upgrades to workflow validation and production cutover.
This guide covers the important Odoo 19 to 20 upgrade considerations, highlights technical changes that developers should review, and provides a practical testing checklist for businesses preparing to move to the new version.
1. What Is New in Odoo 20?
Odoo 20 introduces changes across several applications. The following updates are particularly relevant when reviewing existing workflows.
Activities and Chatter Improvements
Odoo 20 improves activity scheduling, management, and tracking.
Users can assign new activities to an individual or a role. Meeting activities also provide more information before and after a meeting. These changes affect how teams assign work and review activity history.
The chatter also includes additional controls:
CC email recipients: Users can add CC recipients when sending emails from Odoo. Chatter messages display the recipients included in the email.
Chatter filters: Users can filter chatter content to focus on conversations or tracked changes.
Activity scheduling: The activity scheduling interface includes usability improvements.
What to test: Review custom activity workflows, email templates, automated notifications, and any custom views that extend the chatter. Confirm that email recipients, activity assignments, and tracked changes appear as expected.
Calendar Scheduling
Odoo 20 adds a calendar side panel that allows users to unscheduled records by dragging them into the panel when scheduling is enabled in the calendar view.
Businesses using calendar-based scheduling should review how this interaction affects their existing processes.
What to test: Create and schedule activities, move records between dates, unscheduled records, and confirm that custom calendar views and scheduling rules still behave correctly.
Currency and Number Entry
Odoo 20 adds more context to currency conversions by displaying the exchange rate date when amounts are converted between currencies.
It also allows users to enter decimal numbers with either a comma or a period, regardless of the decimal separator selected in their user profile.
These changes are relevant to businesses working with multiple currencies, financial reports, and localized data-entry processes.
What to test: Enter decimal values using both separators, review multi-currency transactions, and compare converted amounts and exchange rate dates in relevant screens and reports.
Accounting Improvements
Odoo 20 introduces several accounting changes that businesses should review before upgrading.
Parent accounts replace account groups
Account groups have been replaced by parent accounts as the method for structuring charts of accounts. Account codes are now optional.
Businesses with custom financial reports, account hierarchy logic, or integrations that depend on account groups should review those dependencies.
PAIN version setting moves
The PAIN version setting for outgoing payments moves from the journal level to the payment method level. This provides more flexibility when configuring payment methods.
Multi-ledger consolidation
Journals are now included instead of excluded in multi-ledger consolidation.
Pay bills from Odoo
A new payment initiation interface allows supported businesses to pay bills individually or in batches through a payment initiation service provider (PISP), using a single signature.
What to test: Review chart-of-accounts structures, financial reports, payment methods, outgoing payment files, multi-ledger consolidation, and bill payment workflows. Confirm that the relevant banking and payment providers support the required connections.
Availability and behavior of financial services depend on the applicable country localization and provider support.
Website and eCommerce Changes
Odoo 20 includes improvements to website editing, search, SEO, and content management.
Notable changes include:
Improved search results with category-based layouts and fuzzy matching.
Improved mobile performance through adaptive image sizing.
Refined SEO handling for paginated pages.
Structured data added to website pages by default.
Improved website editor controls and mobile block previews.
Additional options for translated page URLs on multilingual websites.
Improvements to social media links and website configuration.
What to test: Review website navigation, search behavior, product pages, checkout, multilingual pages, page metadata, structured data, and custom website templates. Check mobile layouts and confirm that custom JavaScript and frontend assets still load correctly.
2. Odoo 19 to 20 Technical Changes Developers Must Review
Application improvements are only part of the upgrade. Odoo 20 also introduces framework changes that can affect custom modules and third-party applications.
These changes deserve attention because a module can contain code that no longer works even when its business purpose remains unchanged.
Access Rights and Record Rules Use a New Structure
One of the most significant framework changes is the consolidation of access rights and record rules.
Odoo 19 uses ir.model.access for access control lists and ir.rule for record rules. Odoo 20 replaces these with a unified ir.access model.
This affects more than Python methods. Custom modules that define security records in CSV or XML files must also be reviewed.
For example, older modules commonly use a file named:
security/ir.model.access.csv
The target-version structure uses:
security/ir.access.csv
The new CSV structure also combines operation permissions, and the domain used to restrict records.
What developers should do:
Review every custom module's access-control definition.
Check XML records that reference ir.rule.
Review the converted access definitions and their domains.
Confirm that group permissions produce the intended access.
Test read, create, write, and delete permissions with the appropriate user roles.
Do not assume that a successful automatic conversion guarantees the original security behavior. Test the resulting permissions using actual user accounts.
Python and Framework Compatibility
Odoo 20 requires Python 3.12 or later. Businesses running on-premise environments should check their Python runtime and deployment dependencies before moving to the new version.
Developers should also review Python libraries and framework methods used by custom modules.
Examples of changes to check include:
Timezone handling: Odoo 20 uses
zoneinfo-based timezone objects through the environment. Code that relies onpytzmethods such as.localize()and.normalize()needs review.
Access-checking methods: Older methods such as
check_access_rights()andcheck_access_rule()have been replaced by newer access-checking APIs. Review custom overrides and calls that depend on the previous methods.
Domain expressions: Code using
odoo.osv.expressionshould be reviewed against the newerodoo.fields.DomainAPI.
Aggregation fields: The
group_operatorfield attribute has been replaced byaggregator. Review custom fields that define aggregation of behavior.
Grouping methods: Custom code using the
older read_group()interface should be reviewed and updated for the target-version grouping APIs.
These changes can affect module installation, computed fields, access checks, reports, and custom business logic. Developers should verify each affected method against the Odoo 20 developer documentation and source code rather than applying broad search-and-replace changes. When existing custom modules require code-level changes, choosing the right technical expertise matters. Our guide on how to hire an Odoo developer explains the skills and experience to assess before engaging a developer.
Web Client and View Changes
Odoo 20 also changes parts of the web client and view framework.
For example, the old selection_badge widget has been replaced by badges_selection for selection fields and badges_many2one for many-to-one fields.
Custom modules that use older widget names should be reviewed. A widget that no longer renders as expected can change how users interact with records, even when the underlying data remains intact.
Review:
XML view definitions and inherited views.
Custom field widgets.
JavaScript and OWL components.
Frontend asset declarations.
Custom icons and web client styling.
Search filters and date range attributes.
Odoo 20 also removes older date filter range attributes such as start_month, end_month, start_year, and end_year from view definitions. Check custom XML files for these attributes.
3. What to Test After Upgrading From Odoo 19 to 20
A successful database conversion does not prove that every business process works correctly. Testing should cover the complete workflows your employees depend on, including custom functionality and connected applications.
Use the following checklist to organize your validation.
Accounting and Finance
Accounting changes deserve particular attention because errors can affect financial statements, payments, and reconciliation.
Test:
Chart-of-accounts structures and parent account relationships.
Customer invoices and vendor bills.
Payment registration and reconciliation.
Credit notes and refunds.
Multi-currency transactions and exchange rate dates.
Payment methods and outgoing payment files.
Multi-ledger consolidation.
Custom financial reports and account mappings.
Tax calculations and fiscal positions.
Compare key report totals with the corresponding Odoo 19 figures. Investigate differences rather than assuming they are caused by normal version changes.
Sales and CRM
Test the complete sales process, from lead creation to customer invoicing.
Check:
Lead creation and conversion.
Customer and contact records.
Quotations and sales order confirmation.
Price lists, discounts, and taxes.
Approval rules and automated actions.
Email templates and chatter messages.
Delivery creation and invoice generation.
Custom fields and reports.
If your sales process uses custom approval logic, test it with users who have different access levels.
Inventory and Purchasing
Inventory errors can affect stock availability, fulfillment, and purchasing decisions.
Test:
Product records and variants.
Warehouse locations and internal transfers.
Receipts and delivery orders.
Reservations and backorders.
Lot and serial number tracking.
Reordering rules and replenishment.
Purchase orders and vendor receipts.
Inventory valuation and stock reports.
Barcode operations, where used.
Check that stock quantities and valuation figures remain consistent with the agreed migration results.
Manufacturing and Quality
For businesses using Odoo Manufacturing, test the production process rather than checking whether manufacturing orders simply open.
Review:
Bills of materials and component availability.
Manufacturing order creation.
Work orders and work center scheduling.
Material consumption and finished product quantities.
By-products and scraps.
Quality control points and quality alerts.
Manufacturing costs and valuation reports.
Include custom production workflows and integrations with external equipment where they are part of your environment.
Website and eCommerce
A website that loads successfully can still contain broken checkout steps, missing content, or frontend errors.
Test:
Website pages and navigation.
Product listings and product variants.
Shopping cart and checkout.
Payment provider connections.
Shipping methods and delivery charges.
Customer accounts and order history.
Multilingual content and translated URLs.
Search results and product filters.
Custom themes, JavaScript, and frontend components.
Mobile layouts and page performance.
Complete a test purchase from product selection through payment and order confirmation using the appropriate test environment.
Custom Modules and Integrations
Review every non-standard module and connected application that supports business operations. When testing reveals problems with data synchronization, API connections, or third-party applications, our Odoo integration services can help address the underlying connection and data-flow requirements.
Test:
Module installation and updates.
Custom models and fields.
Computed fields and constraints.
Access rights and record rules.
Automated actions and scheduled jobs.
Server actions and custom buttons.
Custom reports and document templates.
API endpoints and external data exchange.
Data imports and exports.
Custom dashboards and reporting tools.
For integrations, validate the data received and sent, not just whether the API returns a successful response. For a deeper look at API aut/hentication, data exchange, error handling, and integration testing, read Odoo API integration developer guide. If an integration fails during validation, our guide to common Odoo integration errors and how to fix them covers common causes and practical troubleshooting steps.
4. Build a Practical Odoo 20 Test Plan
A test plan helps teams turn the version changes into measurable checks. It also gives business users a clear way to report defects and approve the updated system.
Use this structure to record your results:
Test area | Scenario | Expected result | Status |
Accounting | Register and reconcile a payment | Correct payment and reconciliation records | Pending |
Sales | Confirm a quotation with approval rules | Correct approval and order status | Pending |
Inventory | Validate a delivery | Correct stock movement and quantity | Pending |
Manufacturing | Complete a manufacturing order | Correct component consumption and output | Pending |
Website | Complete a test purchase | Correct order, payment, and confirmation | Pending |
Security | Access a restricted record as a regular user | Access follows the assigned permissions | Pending |
Integration | Send an order to an external platform | Correct data reaches the connected system | Pending |
Reporting | Generate a custom financial report | Expected figures and fields are displayed | Pending |
For each test, record:
The user role and permissions used.
The records and data involved.
The steps performed.
The expected result.
The actual result.
Any error message or supporting evidence.
The person responsible for resolving the issue.
Run the same critical scenarios after each round of fixes. This helps identify regressions introduced while correcting another part of the system.
5. How to Decide Whether Your Odoo 20 Upgrade Is Ready
Do not approve the upgraded environment based solely on successful installation or database conversion.
Use evidence from both technical and business testing.
Your upgraded environment should meet these conditions:
Custom and third-party modules install and update successfully.
User access and record restrictions work as intended.
Critical workflows complete without errors.
Financial and inventory figures meet agreed reconciliation criteria.
Reports, exports, and document templates produce the required information.
Integrations exchange the correct data.
Scheduled actions and automations execute as expected.
Business users have completed their assigned acceptance tests.
Critical defects have been resolved and retested.
Upgrade readiness should also form part of your wider system maintenance routine. Our Odoo maintenance checklist covers custom modules, integrations, automated actions, reporting, and other areas that need regular review. Keep a record of outstanding issues and their severity. A cosmetic issue in a non-critical view is not equivalent to an incorrect payment calculation or a failed inventory transaction.
The final decision should reflect the impact of unresolved issues on business operations.
Planning Your Odoo 19 to 20 Upgrade?
Moving from Odoo 19 to Odoo 20 involves more than converting your database. Custom modules, security permissions, accounting configurations, integrations, and business-critical workflows all need to work correctly in the upgraded environment.
A structured testing process helps identify compatibility issues, validate important business operations, and resolve defects before the new version reaches production. Documenting test results and involving the relevant process owners also gives your team a clear basis for approving the upgrade.
We help businesses assess their existing Odoo environments, adapt custom modules, review integrations, and validate upgraded systems against their operational requirements. contact us to discuss your upgrade requirements.
