Running an unsupported version
Older versions stop receiving fixes from Odoo, and newer apps, localizations and Odoo Apps Store modules no longer target them.
Odoo ERP · Version migration
We upgrade the database, port your custom modules, rehearse the whole process on a copy, and only switch over when your team has signed off on the result.
Odoo migration services upgrade an existing Odoo database from one major version to a newer one, for example from Odoo 15 or 16 to a current release. The work has two parts: transforming the data and schema so it fits the new version's models, and porting every custom or third-party module so it runs on the new codebase. A migration is only finished when daily workflows, reports and integrations behave correctly on the upgraded system.
Each Odoo release changes models, field names, views and the JavaScript framework, and Odoo supports only recent major versions. Companies that postpone upgrades end up several versions behind, with custom modules that nobody has touched in years and integrations that rely on fields which no longer exist. The longer the gap, the more the upgrade feels like a reimplementation. Planning the move carefully is what keeps it an upgrade.
Older versions stop receiving fixes from Odoo, and newer apps, localizations and Odoo Apps Store modules no longer target them.
Code written for the old version references renamed models, removed fields or old-style JavaScript widgets that the new version has replaced.
Journal entries, reconciliations, taxes and stock valuation must come through intact, and a mistake there is expensive to unwind.
Warehouses, shops and finance can't stop for days, so the final switch has to fit into a short, planned window.
Inventory of installed modules, custom code, Studio changes, integrations and database size, with a recommendation on target version and upgrade path.
For Enterprise databases, we work with Odoo's official upgrade service; for Community, we use OpenUpgrade scripts where coverage exists and write our own where it doesn't.
Each custom module rewritten for the target version's APIs, views and OWL frontend, with data migration scripts for any changed fields.
Apps Store modules checked for a supported version from their vendor, replaced with standard features where the new version now covers them, or ported if needed.
At least one full rehearsal on a recent copy of production, followed by structured testing of sales, purchasing, stock, accounting and reports.
A timed cut-over plan, final upgrade of the live database, smoke tests before users return, and close support in the days after.
Fixes, localization updates and compatible third-party apps become available again.
Improvements in each release often replace custom code you were paying to maintain.
Rehearsed upgrades expose problems on a copy, not in front of your users.
Cleaned-up modules and a documented codebase make the next upgrade a shorter project.
A company still on an old release with heavy customization moves to a supported version in one planned project instead of stalling indefinitely.
A business outgrows Community and moves to Enterprise during the upgrade, gaining apps such as Studio and full Accounting features along the way.
Custom modules that duplicated features now present in standard Odoo are retired during the migration, shrinking the codebase.
The version upgrade is combined with a move to Odoo.sh so future upgrades and staging are easier to manage.
The live database is touched only once, at the end, after at least one full rehearsal has passed.
List every module, customization and integration, and measure the database.
Choose the target version and decide which custom modules to port, replace or retire.
Rewrite custom modules for the target version and add migration scripts for changed data.
Upgrade a copy of production and fix errors until it completes cleanly.
Compare balances, stock levels and key reports between old and new databases.
Your team runs its real daily scenarios on the upgraded copy and signs off.
Freeze the old system, upgrade the live database, run smoke tests and reopen to users.
Monitor logs and user feedback closely and resolve remaining issues quickly.
| Criterion | Odoo Online | Odoo.sh / Enterprise self-hosted | Community self-hosted |
|---|---|---|---|
| Standard data upgrade | Handled by Odoo | Odoo's upgrade service | OpenUpgrade or custom scripts |
| Custom Python modules | Not applicable | Must be ported by a developer | Must be ported by a developer |
| Studio changes | Upgraded by Odoo, review advised | Upgraded with the database, review advised | Not applicable |
| Test environment | Test database from Odoo | Staging branch or copy server | Copy server |
All trial upgrades run on copies; the live database is changed only during the agreed cut-over.
A full backup of database and filestore is taken and test-restored before the final upgrade.
Trial balance, receivables, payables and stock valuation are compared before and after migration.
Security groups and record rules are reviewed, since group structures can change between versions.
Custom modules are adapted properly to the new version's APIs instead of being forced to install with workarounds.
We don't upgrade a live database that hasn't been successfully upgraded and tested as a copy first.
If a custom module is no longer needed in the new version, we recommend removing it rather than porting it.
We handle Enterprise upgrades through Odoo's service and Community upgrades with OpenUpgrade and custom scripts.
Fixed-price packages with the scope written down, paid stage by stage. Your project goes live once it's fully paid.
Official documentation and guidance if you want to read more about this topic.
It depends mostly on the number and complexity of custom modules, the version gap and the size of the database. A lightly customized database moving one version is a much smaller job than a heavily customized one several versions behind. We give a realistic estimate after the readiness audit.
Yes, the database can move to a much newer version in one project, but the data still passes through each intermediate version's migration steps. Custom modules are ported directly to the target version, which is usually more efficient than porting them version by version.
No, a properly run upgrade keeps your records, history and attachments. We verify that by comparing balances, stock and record counts between the old and upgraded databases before go-live.
Yes, but Odoo's official upgrade service covers Enterprise databases, so Community upgrades usually rely on the open-source OpenUpgrade project plus custom scripts. Coverage varies by version and module, which is why the audit comes first.
No. A version migration upgrades an existing Odoo database, while data migration imports data into Odoo from another system such as spreadsheets, QuickBooks or Tally. Our Odoo data migration service covers the second.
Downtime is limited to the final cut-over, and its length depends on database size and the number of post-upgrade checks. The rehearsals tell us how long the live upgrade will take, so the window can be planned around your business hours.
Next step
Tell us your current Odoo version, edition and hosting. We'll audit the modules and give you a clear upgrade path before any work starts.