Upgrading Odoo 16 to Odoo 19: What It Really Costs a UAE Business

"Upgrading Odoo 16 to Odoo 19" sounds like one project. It is really three: three annual major-version jumps stacked into one migration, each with its own breaking changes underneath. I get asked about this by UAE businesses that went live on Odoo 16 and are now watching their support window close. The question is always what this will cost, and the honest answer is that the version jump itself is close to free. What actually costs money is everything you built on top of standard Odoo since go-live. Here is the distinction I walk every client through, and how I think about timing it.

Two upgrades hiding inside one project

Odoo's own documentation defines an upgrade simply: moving a database from an older version to a newer supported one, "e.g., from Odoo 16.0 to Odoo 18.0." That covers exactly one thing — your standard applications and your data. Odoo's Upgrade Team converts both automatically, and under Odoo Enterprise that conversion is free, "including any support required to rectify potential discrepancies in the upgraded database."

Your customisations are a separate matter. Odoo defines a custom module as "any module that extends the standard code of Odoo and that was not built with the Studio app," and splits responsibility accordingly. Studio work is covered by the SLA as long as Studio is still installed and subscribed; work under an active maintenance-of-customisations contract is covered too. Everything else — modules built in-house or bought from a third party without that contract — is excluded, and the database "cannot be upgraded until a version of your custom modules is available for the target version of Odoo." That is a hard technical gate, not a formality: no compatible custom code, no upgrade.

Why the version jump usually isn't the hard part

The mechanical half is well handled: request a test database, and Odoo's platform rebuilds a copy on the new version. The same six drivers that size a fresh Odoo implementation in the UAE — module scope, customisation depth, data, integrations, training and industry complexity — size an upgrade too, and the database conversion barely moves that needle.

What does move it is the gap. Odoo says it plainly: "the smaller the version gap, the easier the upgrade should be." Every major release touches fields, views and methods; Odoo's own guidance for customised databases names the breakage — renamed or removed fields, moved views, methods that no longer exist. Cross three major releases at once, as a 16-to-19 project does, and custom code survives three rounds of that, not one. An industry-specific build like the 18-module university management system I designed carries far more of that weight than a close-to-standard trading company, because more of it is custom by design. Odoo also supports each major version for three years, plus a grace period to finish a mandatory upgrade after — so staying on 16 has a shelf life.

The test-upgrade workflow

Request, then port your own code

Odoo's process is consistent regardless of hosting: request an upgraded test database, and if you carry custom modules, freeze new development on them and get their source code installable and tested on an empty copy of the target version before touching real data. Only once that baseline works do you test the custom code against the upgraded copy of your database.

The Odoo upgrade path, and where cost actually enters it Flowchart. Step one, request an upgraded test database: free and repeatable, Odoo converts standard apps and data automatically. If custom modules exist, step two is to port and test those custom modules and third-party apps against the new version: this is the cost, since it is not covered by Odoo's upgrade SLA unless it falls under a maintenance-of-customisations contract. Step three, validate on the test database: business flows, reports, views and integrations, still free to repeat as many times as needed. A decision point asks whether issues were found: yes loops back to fix the custom code and request a new test database; no continues forward. Step four, rehearse the full cutover once more the day before go-live. Step five, the production upgrade: the database goes offline for the duration and cannot be reverted once complete, after which the business is live on Odoo 19. THE UPGRADE PATH — AND WHERE COST ENTERS IT Request an upgraded test database Free and repeatable — Odoo converts standard apps and data automatically if custom modules exist Port & test custom modules and third-party apps Your cost — outside Odoo's SLA unless covered by a maintenance-of-customisations contract Validate on the test database Business flows, reports, views, integrations — repeat as often as needed, still free Issues found? Yes fix & re-test No Rehearse the full cutover Once more, the day before go-live Production upgrade Database offline for the duration No reverting once it's complete Live on Odoo 19
Odoo's own database conversion is free and repeatable at every stage. The cost sits in the branch most projects underestimate: porting and testing everything you built on top of it.

Validate, rehearse, then go live

The test database is deliberately neutered so nothing leaks out while you work: scheduled actions are switched off, outgoing mail is disabled, and payment providers and delivery carriers are reset to their test modes. That is your space to break things safely. Odoo's own checklist is a good baseline — reports, views, mail templates, saved filters, data exports, plus every integration and cross-app workflow you rely on — and I extend it with end-to-end runs: quote to cash, purchase to payment, the reports finance signs off on every month. Request a fresh test database and repeat as often as needed; it costs nothing. Only when confident do you request the production upgrade, which takes the live database offline for the duration and, once finished, cannot be reverted — why a full rehearsal the day before matters most.

The rule I give every client before we set a date: audit every custom module and third-party app against the target version first. If that list comes back clean, 16 to 19 is mostly a scheduling exercise. If it doesn't, you have found the real project — before booking a go-live date, not after.

Data cleanliness — the cheapest step nobody does

Cleaning is explicitly outside the upgrade SLA: Odoo's list of excluded services names "the cleaning of pre-existing data and configurations." Dead contacts, disused fields, half-finished automations and years of configuration nobody remembers the reason for all carry through the conversion faithfully, because that is what an upgrade does — move what is there. The cheapest point to deal with any of it is before you request the first test database, not after. Same advice I give on fresh implementations: clean data is quick, dirty data becomes a project of its own.

Third-party apps: who is actually maintaining them

Every marketplace or OCA app in your database needs its own version-compatible release before your upgrade can complete, and Odoo's SLA is explicit that modules "created in-house or by third parties, including Odoo partners" are not covered. If the developer behind an app has moved on, or hasn't kept pace with Odoo's yearly release cycle, you inherit a rebuild, not an upgrade. Before agreeing to any date, I list every installed app and check whether the target version exists for it. An app with no roadmap for Odoo 19 is a budget line, not an assumption.

Retraining and UAT

Training is the third item the SLA leaves out by name. Even a mechanical conversion changes views, defaults and small behaviours your team has muscle memory for, and Odoo's own warning is direct: skip real testing and you risk users failing to adjust to the changes, not just bugs. The fix is the one I give on every implementation — get real users clicking through their real daily work on the test database, not just IT confirming the data migrated. The software rarely fails at this stage; adoption does.

Should you upgrade now, or stay on 16?

The right trigger is not "19 is the newest number." It is whether a version between here and there solves a problem you actually have. In my experience, legitimate reasons to move now include a specific feature your team needs — what's actually new in Odoo 19 is where I would start checking that against your own list — a support window that is closing, or heavy customisation that gets more expensive to carry the longer you wait. For UAE businesses, add your compliance calendar to that list: aligning the move with your VAT configuration or your e-invoicing readiness timeline is a legitimate reason to move now, so you are not reconfiguring tax logic and a new Odoo version in the same month.

None of that applies to every business. If your Odoo 16 system is stable, your team is productive, and nothing on the Odoo 19 feature list addresses a gap you feel, there is no obligation to move this quarter. Just do not mistake that for an indefinite pass — the support clock is still running, and the longer you wait, the larger the eventual version gap gets.

This article explains how Odoo's upgrade mechanics work and the factors that drive cost, based on Odoo's official upgrade documentation and my own project experience — it is not a quote. Every database's customisation footprint is different; an audit of your specific system is the only way to turn this into a real number and timeline.

Frequently asked questions

Is upgrading from Odoo 16 to Odoo 19 one upgrade or three?
Technically it runs as a single database upgrade request, but it crosses three of Odoo's annual major releases in one move. Odoo's own documentation notes that the smaller the version gap, the easier the upgrade should be, because each major release changes fields, views and methods that any custom code has to be re-tested against. Treat a multi-version jump like this one as a bigger project than a single-version upgrade, even though Odoo processes it as one request.
Does Odoo charge for the database upgrade itself?
Under Odoo Enterprise, upgrading a database to the most recent version is free, including the support needed to fix discrepancies the conversion introduces, per Odoo's own service-level agreement. What that SLA does not include is cleaning your existing data and configuration, upgrading in-house or third-party modules that are not under a maintenance-of-customisations contract, or training your team on the new version. In most projects, those excluded items are where the real cost sits, not the version jump.
Will our custom modules and third-party apps just carry over?
Not automatically. Per Odoo's documentation, a database that contains custom modules cannot be upgraded until a version of those modules exists for the target release, and it is the responsibility of the module's maintainer, whether that is you, your developer or your partner, to make it compatible again. Before agreeing to any upgrade date, I check every installed custom and third-party app against the target version, because an app its author has stopped updating becomes a rebuild, not an upgrade.
How long does an Odoo 16 to 19 upgrade actually take?
There is no fixed timeline, and in my experience anyone who gives you one before auditing your database is guessing. A close-to-standard database with little customisation can be tested and cut over in a matter of weeks. A heavily customised system carrying three major versions of accumulated custom code and third-party apps can run considerably longer, once every module is ported, retested and signed off by real users on real workflows. The custom-code audit is what turns that range into a real number for your business.
Should a UAE business upgrade to Odoo 19 now, or wait?
Upgrade when a version solves a problem you actually have, not because it is the newest number. Reasons I see hold up: a specific Odoo 19 feature your team needs, a support window on Odoo 16 that is genuinely closing, or lining the move up with your VAT or e-invoicing compliance calendar so you are not reconfiguring tax logic and a new version in the same month. If your Odoo 16 system is stable and none of those apply, there is no obligation to move immediately, though version support is time-bound, so it is worth knowing your own timeline rather than assuming you can wait indefinitely.

Related reading

Sitting on Odoo 16 and weighing the move?

I'm Muhammad Salman Ali Khan, an Odoo Techno-Functional Consultant in Dubai and Head of Projects at Techbot Information Technology LLC, a UAE Odoo partner — 10+ years, 100+ implementations, certified across Odoo v13, v14, v15, v16, v18 and v19, and I presented Odoo 19's new features at Odoo Experience 2025 in Brussels. Tell me about your current database and customisations, and I'll give you an honest view of what moving it to 19 actually involves — at no cost.

Get a free business evaluation