Odoo Enterprise
Odoo's upgrade service converts the standard data. We port your custom and third-party modules, fix what the service can't, and test the result. You get one migrated database, not two half-finished ones.
Odoo migration · Odoo 19 and 20
We upgrade Odoo databases and custom modules to Odoo 19 and 20, on Community and Enterprise. Every migration runs on a copy first, and ends with a report of record counts and checks per model.
What we hear
We're two versions behind and afraid of what the upgrade will break.
The upgrade was meant to take a month. It's been six.
Our custom modules were written by a partner who's gone.
We upgraded once before and found broken reports a week later.
What we migrate
An upgrade isn't done when the database opens. It's done when every report, integration and automation works as before.
Every standard module's data moved to the new version's structure, including history, attachments and settings.
Ported to the new version's APIs, cleaned up where the old code fights the framework, and covered by automated tests.
Upgraded to their new versions where they exist; where they don't, we port them or replace them with standard features.
Fields, views, reports and email templates checked one by one, because these are what users notice first.
Store, marketplace, bank, payment and logistics connections re-tested against the new version before cutover.
User rights, record rules, scheduled actions and server actions verified, so nothing quietly stops running.
Two editions, two paths
Odoo's upgrade service converts the standard data. We port your custom and third-party modules, fix what the service can't, and test the result. You get one migrated database, not two half-finished ones.
There is no official upgrade service for Community. We use the open-source OpenUpgrade scripts where they cover your versions, write our own where they don't, and move one version at a time when you are several behind.
Why upgrade at all? Odoo fixes bugs and security issues only in its most recent major versions. The further behind you fall, the bigger and riskier the jump becomes.
Proof, not promises
The migration report is yours to keep, and the checks can be run again.
A typical project
Week 1
Inventory
Every module, customisation, report and integration listed, with data volumes per model.
Week 2
Test migration
A full run on a copy of your database, with record counts and failed checks in a report.
Weeks 3–5
Fix and retest
Custom modules ported with automated tests, then the test migration runs again until it's clean.
Cutover
Go live
Final migration over a weekend, the same checks re-run, and a rollback plan ready if needed.
Packages
One to two weeks, a test migration on a copy of your database, and a fixed quote for the real one.
Know what breaks before you upgrade: modules, customisations, data and reports.
Evidence · Migration test report with record counts and failed checks
Our own apps
Besides client work, we publish our own Odoo apps. They're built to the same standard as your modules: tested, documented and supported by the engineers who wrote them.
FAQ
It depends on the number of custom modules, third-party apps and the size of your database. The migration assessment ends with a test run and a fixed quote with a timeline, so you know before you commit.
On Enterprise, Odoo's upgrade service can usually take you to the target version directly; custom modules still need porting to that version. On Community, the database moves one version at a time, which we script and test so it runs as one job.
Only the final migration at cutover. We time it during the test runs, then schedule it for a weekend or your quietest hours. Users keep working on the old version until then.
We check this in the first week. The options are to port it ourselves, replace it with a standard feature or another app, or wait; you choose with the effort for each in front of you.
That is what it's for. Failed checks go into the report, we fix them and run it again, until a full run is clean. The production database is never touched until then.
Usually to the newest version your critical apps support, so you don't migrate twice. If an important third-party app isn't ready for 20 yet, 19 can be the safer step. The assessment answers this for your system.
We work under an NDA, on a copy of your database, with named accounts. Copies are deleted at the end. Our Security page has the details.
If you want. Kalvy Care covers monitoring, fixes and planning the next upgrade, so it doesn't become another big project.
Not upgrading? See implementation, custom modules and integrations, or our security and data handling.
A 30-minute call with an engineer. You'll know the risks and the next step, even if it isn't us.