Skip to content
AAKoryx Consulting

Odoo Upgrade Guide

Are You Ready for Your Next Odoo Upgrade? A Practical Guide

The practical guide for business owners, technical teams and ERP leaders: when to upgrade, what changes across hosting environments, and how to reduce avoidable risk.

By Prashant Budhwant, AAKoryx ConsultingPublished

At a glance

The version upgrade

What everyone plans for.

What decides the effort — and the risk

A successful database conversion doesn't prove the business is ready.

  • Custom modules
  • Third-party apps
  • Integrations
  • Reports and automations
  • Data quality
  • Business testing (UAT)
  • Financial reconciliation
  • Cutover and rollback
Check your readiness

Odoo Upgrade Readiness Guide

An Odoo system can run reliably for years. Invoices go out, warehouses ship, and daily operations continue. That apparent stability is one reason upgrades get postponed. But when several major releases pass, a manageable upgrade can become a more complicated project involving outdated modules, integrations, infrastructure, and business processes.

An upgrade is not simply installing a newer version. It is a coordinated effort to move standard data, adapt customizations, verify operational workflows, and plan a controlled production cutover.

The quick answer

Start by identifying your current version and support status, hosting model, custom and third-party modules, integrations, and the business workflows that must remain intact. If those details are unclear, begin with an upgrade assessment rather than committing to a date or budget.

The hidden cost of staying behind

Odoo releases major versions regularly. Each brings changes to applications, interfaces, data models, and development frameworks. Waiting may feel safer when your current deployment works, but technical debt can accumulate quietly.

What changes when versions are skipped?

Version gap and typical planning implication
Version gapTypical planning implication
0–1 major versionsOften more straightforward, particularly with standard applications; testing remains essential.
2 major versionsCustom modules and third-party dependencies may require more significant review and refactoring.
3+ major versionsExpect greater compatibility and data-model investigation; some modules may need replacement or retirement.

These are practical risk indicators, not guaranteed cost or effort bands. A heavily customized one-version upgrade can be harder than a largely standard multi-version upgrade.

The consequences of waiting may include discontinued third-party modules, increased integration maintenance, aging operating-system or database dependencies, and delayed access to newer functionality. Support and patch eligibility also depend on your version and support arrangements. Check Odoo's current support policy rather than assuming all older releases have identical coverage — our guide to upgrading to Odoo 20 from 17, 18 or 19 sets out the current dates.

Business decision

Compare the cost of upgrading now with the continuing cost of maintaining customizations, integrations, and infrastructure on the current version.

When is the right time to upgrade?

An upgrade should be planned around both technology and operations. Common triggers include:

  1. Approaching the end of standard support. Allow enough time for discovery, remediation, testing, and cutover rather than starting at the deadline.
  2. Business expansion. Additional entities, warehouses, users, or transaction volume may justify reassessing the ERP platform.
  3. New standard functionality. A newer release may replace a custom feature that your team currently maintains.
  4. Integration or regulatory change. Banking, e-invoicing, payment, shipping, or reporting dependencies can require attention.
  5. A practical operating window. Avoid cutovers during year-end close, inventory counts, peak shipping periods, or other critical business events.

Where practical, I recommend targeting completion three to six months before a known support cutoff. Treat that as a planning buffer, not a universal rule.

One upgrade, two connected workstreams

A useful way to understand an Odoo upgrade is as two projects that come together before user acceptance testing.

Workstream A

Standard database and application upgrade

  • Supported Odoo data and standard modules
  • Transformed for the target release
  • Official upgrade service for eligible Enterprise databases

Workstream B

Custom code and integrations

  • Custom modules and third-party apps
  • Views, Python/ORM and JavaScript code, reports, scheduled actions
  • External integrations, inventoried and tested separately
  1. 01Staging

    The upgraded database and target-version code, tested together.

  2. 02Business validation

    Real users test end-to-end workflows; finance reconciles.

  3. 03Production cutover

    A rehearsed go-live, followed by hypercare.

An Odoo upgrade: two workstreams that converge in staging, business validation and production cutover.

Workstream A: Standard database and application upgrade

The standard upgrade process transforms supported Odoo data and standard modules for the target release. For eligible Enterprise databases, Odoo provides an official upgrade service. Community environments generally require a separately planned migration approach, often using OCA OpenUpgrade or custom migration methods.

Workstream B: Custom code and integrations

Custom modules, third-party apps, inherited XML views, Python/ORM code, JavaScript components, reports, scheduled actions, and external integrations need separate inventory and compatibility work. Some customizations may be retired if the target version now provides equivalent standard functionality.

The critical point

A successful standard database conversion does not by itself prove that your customized business system is ready for production.

Your hosting model determines the execution path

Upgrade approach by hosting model and edition
Current setupTypical upgrade approachMain consideration
Odoo OnlineOdoo-managed upgrade and test databaseRetest workflows and Studio customizations.
Odoo.sh, standard appsOdoo.sh upgrade toolingValidate the test environment and schedule production carefully.
Odoo.sh with custom modulesOdoo upgrade plus your team's or partner's code migrationTarget-version branches, dependencies, and staging tests.
On-premise EnterpriseEligible official Odoo upgrade service plus infrastructure workDatabase and filestore, target stack, backups, and deployment.
Community EditionOpenUpgrade and/or a carefully designed alternative migration pathTooling availability for the target version, module coverage, sequential compatibility work, and reconciliation.
Partner-hosted / managed cloudDepends on edition and contractual arrangementConfirm access to dumps, filestore, test servers, and rollback responsibilities.

Do not confuse hosting type with edition: a partner-hosted Enterprise database does not automatically require OpenUpgrade.

Odoo Online and Studio

Request an upgraded test copy, validate accounting and operational flows, and review custom fields, forms, automated actions, and reports created through Studio. Even where platform tooling migrates a customization, its business behavior must be tested.

Odoo.sh with custom modules

Prepare the target-version code, identify unsupported dependencies, use development and staging environments, and repeat upgrade tests on representative data. Align the final upgrade with the deployment of compatible custom code.

On-premise Enterprise

Plan for the database dump, filestore, compatible Python and PostgreSQL environment, server configuration, and restored backup testing. The official upgrade service handles eligible database transformations; it does not automatically modernize unsupported custom modules. Odoo's own upgrade documentation is explicit that a database with custom modules cannot be upgraded until a version of those modules exists for the target release.

Community and OpenUpgrade

Check OCA OpenUpgrade coverage for each relevant version and module before committing to the route. OpenUpgrade migrates one major version at a time, so a multi-version jump means running each intermediate migration in sequence. For a heavily modified or inconsistent database, a clean target installation with controlled ETL may be worth evaluating, although it can require more deliberate handling of historical records and relationships.

Availability matters as much as coverage. OpenUpgrade support for each new release is built by the community after Odoo publishes it, so the tooling for the newest version may not exist yet. At the time of writing (October 2026), OpenUpgrade's migration to Odoo 20 is still being prepared: there is no released OpenUpgrade path from Odoo 19 to Odoo 20, so a Community database cannot currently reach Odoo 20 with OpenUpgrade alone. Before committing to an upgrade path, a target version or a date, confirm that migration tooling exists for every step you need and that the modules you depend on are covered.

What actually drives upgrade cost and duration?

A realistic estimate requires more than the current and target version numbers. The major drivers are:

  • Custom modules: count, complexity, inheritance, and code quality.
  • Third-party dependencies: availability of compatible versions and replacement effort.
  • Integrations: ERP connections to commerce, payments, banking, EDI, logistics, or BI systems.
  • Data: volume, cleanliness, historical records, attachments, and accounting complexity.
  • Infrastructure: hosting, environment preparation, backup and restore, and cutover constraints.
  • Business testing: availability of finance, operations, warehouse, and sales users.

As a planning illustration only, simpler deployments can take a few weeks and complex custom environments several months. A credible estimate follows an inventory and a test-upgrade assessment.

The five-phase Odoo upgrade roadmap

Phase 1 — Audit and inventory

Inventory installed applications, custom modules, Studio changes, scheduled actions, reports, integrations, and hosting dependencies. Classify each customization as keep, port, replace with standard functionality, or retire. Identify data quality issues before migration work begins.

Phase 2 — Environment and code preparation

Prepare a target-version test environment. Refactor custom code in dependency order, check third-party compatibility, and establish automated tests for business-critical processes. Manage changes to the old production version during the upgrade project.

Phase 3 — Dry-run migration

Run the upgrade against a recent production copy. Inspect logs, resolve failures, and repeat from a controlled baseline. Measure elapsed time and rehearse the full cutover process rather than relying on a single successful test.

Phase 4 — User acceptance testing

Ask actual business users to test end-to-end workflows. A developer confirming that screens load is not enough. Finance should reconcile critical before-and-after figures, including trial balance, stock valuation, and open receivables and payables where applicable.

Phase 5 — Production cutover and hypercare

Agree on a freeze window, a verified backup and restore procedure, go/no-go criteria, a rollback decision point, and a communication plan. Disable or safely isolate outbound email and scheduled jobs on test copies. After cutover, smoke-test critical processes and provide a defined hypercare period.

Downtime reality

In-place ERP upgrades commonly require a planned period of unavailability — Odoo's documentation states that the production database is unavailable while it upgrades. The objective is predictable disruption, not an unsupported promise of zero downtime.

Know Your Odoo Upgrade Risk Before You Commit.

Understand your current version, customizations, integrations, and migration complexity before committing to an upgrade.

Schedule an Odoo Upgrade Assessment

Critical validation for manufacturing and distribution

For manufacturers and distributors, ERP success is operational — not merely technical. Extend user acceptance testing to the workflows relevant to your deployment:

Recommended validation by business area
Business areaValidation examples
ManufacturingBOMs, manufacturing orders, work centers, routing and operations, consumption, and traceability.
DistributionStock on hand, reservations, replenishment, warehouse routes, pick/pack/ship, and backorders.
FinanceTrial balance, inventory valuation, taxes, receivables, payables, and multi-currency where applicable.
IntegrationsEDI, carriers, payment gateways, eCommerce, bank feeds, and reporting connections.
Security and automationUser access, multi-company record rules, scheduled jobs, and outbound notifications.

These are recommended checks to adapt to your own deployment, not examples from a specific client engagement.

Who should execute the upgrade?

There is no single right answer for every deployment.

  • In-house team: suitable when the organization has strong Odoo technical capability, sufficient capacity, and a manageable customization footprint.
  • Official Odoo partner: useful for complex customizations, integrations, multi-entity operations, or demanding cutover requirements.
  • Independent specialist: can be effective for clearly bounded technical work, provided continuity, testing, and contractual responsibilities are explicit.
  • Hybrid approach: internal teams retain business-process ownership and UAT while a partner handles technical migration and cutover engineering.

Choose based on the specific environment and evidence of relevant experience, not partner status alone. If the current system is unstable before you even start, stabilize it first — an upgrade carries existing problems forward.

Odoo upgrade readiness checklist

Before approving a project, confirm:

  • We know our current version, target version, and support status.
  • We have inventoried custom and third-party modules.
  • We know which customizations can be replaced or retired.
  • We have mapped external integrations and API dependencies.
  • We have an appropriate test environment and recent backup.
  • Finance and Operations have named UAT owners.
  • We have rehearsed the upgrade and measured cutover time.
  • We have documented go/no-go and rollback criteria.

A note on APIs

Odoo's XML-RPC and JSON-RPC external endpoints are deprecated, but their removal schedule has changed. Odoo 20's external API documentation states that the db service was removed in Odoo 20, while the common and object services are scheduled for removal in Odoo 22 and Online 21.1. Audit your exact endpoints and plan JSON-2 compatibility where relevant; do not assume all legacy RPC endpoints disappear in Odoo 20.

The bottom line

The most predictable Odoo upgrades begin before the cutover weekend. Start with an inventory, test the standard upgrade early, address custom code and integration dependencies, and validate the workflows that keep the business running.

Planning a move to the current release? See what Odoo 20 changes, and how we approach Odoo upgrades and migration.

Sources

  • Odoo: Upgrade documentation — upgrade process by hosting type, service scope, test databases and production downtime.
  • Odoo: Standard and extended support.
  • Odoo: External RPC API — deprecation and removal schedule.
  • Odoo Community Association: OpenUpgrade documentation (oca.github.io/OpenUpgrade) — sequential multi-version migration and module coverage; Odoo 20 migration status in the OCA/OpenUpgrade repository on GitHub (issue 6044, "Migration to version 20.0", open as of October 2026).

About the author

Prashant Budhwant

AAKoryx Consulting

Not sure how complex your next upgrade will be?

AAKoryx Consulting can help evaluate your version, hosting environment, customizations, integrations, and operational risks so you can plan the right migration path.