Financial TimesAmericas' Fastest-Growing 2025
Certified PartnerOdoo Gold · Adobe Solution · Shopify Plus partnershipsOdoo Gold · Adobe · Shopify Plus partnerSee all
One business dayA senior architect replies to every inquiry · +1 (631) 897-7276Architect reply within one business dayLet's talkCall us
Inc. Regionals 2025Fastest-growing private companies in AmericaInc. Regionals 2025 honoreeSee awards
Americas' Fastest-Growing Companies 2025Recognized by the Financial TimesFT Fastest-Growing Companies 2025See the rankingRanking
4.8 / 5 on Clutch265 verified client reviews4.8/5 on Clutch · 265 reviewsRead the reviews
4.8 · 265 Clutch reviews
US United States

Odoo 16 to Odoo 19 migration: what changes and how we move you

Three releases of change in one upgrade. Odoo’s platform converts the standard database; everything built on top has to clear what 17, 18 and 19 altered. That part is ours.

OdooGold Partner
2,000+Brands served
95%Client retention
14+Years of experience
What it is

Moving a live database from Odoo 16.0 to Odoo 19.0 in one pass. Odoo’s upgrade platform performs the technical conversion of the standard modules and data. Making three releases’ worth of custom code run on 19 is the customer’s or partner’s job.

Who it is for

Teams still running Odoo 16.0 in production, especially those carrying custom modules, Studio changes or third-party apps nobody has inventoried.

Typical timeline

Brainvire plans a straight version upgrade at 3 to 8 weeks, and a three-version jump sits at the top of that band. These are our own planning figures, not Odoo published ones. With new scope, our implementation bands apply instead.

Typical team

A technical consultant who ports the modules, a functional consultant who owns the test script, a solution architect on the upgrade posture, and your application owner as counterpart.

/ Three versions behind

Why is the Odoo 16 upgrade still waiting?

Four reasons we hear, and none of them is the upgrade itself.

Support

The window on 16 has already closed

Odoo supports each major version for three years and publishes the dates. Odoo 16 is past the end of its standard support window, and waiting does not pause a clock that was never yours to set.

Distance

Three releases of change, in one pass

Everything Odoo altered in 17, 18 and 19 arrives together. Odoo’s own note is that the smaller the version gap, the easier the upgrade should be, which is exactly what keeps this one deferred.

Unknowns

Nobody has listed what sits above the standard

Studio changes, custom modules, third-party apps, things edited in place. Odoo will not upgrade a database with custom modules until a version of them exists for the target release.

Data

Models were merged and removed along the way

Across three releases, standard models and fields were renamed, merged or dropped. Odoo warns that data from a removed standard model may have to be recovered from the old table with an upgrade script.

Odoo Gold PartnerBest Partner North America 2025 FinalistOutstanding Customer SatisfactionOdoo 19

Trusted by enterprise Odoo teams worldwide

Bay Alarm MedicalTentAndTableFood Bank SingaporeAmerican Tire DepotEden TextileCadarPuma EnergySuper Asia FoodsUltimate ToysAjmal PerfumesPan HomeNike

/ Three releases at once

What actually changed between Odoo 16 and Odoo 19?

Each row names the release that made the change and cites Odoo’s own notes for Odoo 17, Odoo 18 or Odoo 19. The third column is our reading.

AreaWhat changedWhat it means for your upgrade
ConnectorsOdoo 18 removed the eBay Connector, and removed the Alipay, PayU Latam and PayUmoney payment providersA replacement is chosen and built before cut-over. The row that most often moves a date
Fiscal positionsOdoo 19 removed tax mappings from fiscal positions. Each tax now declares where it applies and which taxes it replacesTax determination is re-tested first if you run several regimes
Units and packagingsOdoo 19 merged product units and product packagings into one model and removed unit of measure categoriesProduct data is reviewed before the upgrade, not after
Bank reconciliationOdoo 17 removed the manual reconciliation widget; lines reconcile silently unless a write-off entry is neededThe daily bank flow behaves differently. Finance re-tests it first
ReceiptsOdoo 19 merged purchase and sales receipts with invoices and bills. Sales receipts are switched on in the settingsFilters, reports and automations pointing at the old receipt models are rebuilt
Transfers and routesOdoo 17 dropped the planned versus immediate transfer distinction. Odoo 18 fires push rules when a transfer is validated and redesigned every default multi-step route around thatWarehouse flows are re-tested end to end. The pair most likely to surprise operations
Approvals and APIsOdoo 17 moved approval rules from client-side to server-side enforcement, so they now apply to API calls tooAn integration can meet a rule it never saw. Test connectors, not only screens
Taxes and lock datesOdoo 17 put codes in every localization’s tax names and added a Tax Description field. Odoo 18 made standard sales taxes follow a company setting defining them as price-included or price-excluded, and added a lock dates wizard with a Hard Lock dateOne decision at company level, then a check that every tax overriding it still behaves as it did. A Hard Lock date cannot be changed once saved
Budgets and statementsOdoo 18 rebuilt budget management around analytic budgets, with no dates on budget lines and no budgetary positions, and merged the Follow-up and Customer Statement views into a revamped Partner Ledger. Odoo 19 added an Annual Statements report printing the balance sheet, profit and loss and trial balances togetherBudget structure is redesigned, not carried across. Reports finance built by hand are standard now, and cheaper to delete than to port forward
Inventory valuationOdoo 17 set the cost of FIFO products to the average price of the remaining quantities. Odoo 18 gave each lot or serial number of the same product its own separate valuationCosting behavior moves in 17 and gains an option in 18. Both are verified against your closing figures on a copy
Employees, payroll and expensesOdoo 19 merged employees and contracts and introduced a versioning mechanism, renamed payroll Batches to Pay Runs with a guided interface, and removed expense reports so several expenses are submitted, approved and posted together from the list viewHR customizations, payroll integrations and expense approval flows reading the old models need the closest look on this list
Views, reports and spreadsheetsOdoo 17 shipped a redesigned user interface and technically overhauled the accounting reports. Odoo 18 renamed ODOO.PIVOT formulas to PIVOT and removed the Link to Odoo menu option in spreadsheets. Odoo 19 lets Studio open from any viewView and report code written for 16 is the most common source of tracebacks, and some of it can retire into Studio

/ Responsibilities

Who does what in an Odoo 16 to 19 upgrade?

The boundaries are published, not negotiable. Both are stated in Odoo’s upgrade documentation and its guide to upgrading a customized database.

OdooRuns the upgrade

Odoo converts the standard database

Odoo’s upgrade platform performs the technical conversion of standard modules and data to the target version. Its Enterprise agreement covers standard applications, Studio customizations while Studio stays installed and subscribed, and developments under a maintenance of customizations subscription. Brainvire does not perform Odoo’s upgrade step.

Where it leads: What Odoo 19 actually changedTalk it through →
BrainvirePorts the code

Your custom modules are our job

That same agreement expressly excludes “the upgrade of additional modules not covered by a maintenance contract that are created in-house or by third parties, including Odoo partners.” So we do it, against three releases of change rather than one: each module made installable on an empty Odoo 19 database first, then on the upgraded copy.

Where it leads: How we build upgrade-safe codeTalk it through →
Nobody, by defaultOutside the SLA

Three things no upgrade includes

Odoo lists what its upgrade service does not cover: cleaning pre-existing data and configurations while upgrading, upgrading additional modules without a maintenance contract, and training people on the upgraded version’s features. Skipping two versions makes that last one bigger: your team meets three releases of interface change at once.

Where it leads: Training on the new versionTalk it through →
Both of usProves it works

Testing is shared, and it is the point

Odoo is explicit: if a change in a new version breaks a customization, making it compatible is the responsibility of whoever maintains that module. We test on an upgraded copy against your real flows, you confirm the outcomes, and what fails is fixed before a date is agreed.

Where it leads: Book an upgrade rehearsalTalk it through →

/ Delivery

How does a 16 to 19 upgrade actually run?

Odoo publishes a six-step path; we run it as four stages. Brainvire plans a straight version upgrade at 3 to 8 weeks. With new scope, our implementation bands apply instead:

01020304

Freeze and challenge

Development stops: anything built during the upgrade has to be upgraded and tested again. Every customization is argued against what 17, 18 and 19 now do as standard. Three releases is where the most redundant code is found.

Request an upgraded test database

Odoo delivers a converted copy. How you request it depends on hosting: the Upgrade platform, the Odoo Online database manager, your Odoo.sh project, or the command line on-premise. This stage only proves the conversion completes.

Make every module installable on 19

Each module goes on an empty Odoo 19 database first, so tracebacks come from the module rather than your data, then on the upgraded copy. Three generations of renamed models and fields are handled with upgrade scripts.

Test, rehearse, cut over

Your flows run end to end on the upgraded copy, including integrations, server actions and exports. If time has passed we request a fresh copy, rehearse the day before, then take production down in the quietest window you have.

/ Scope

What makes a 16 to 19 upgrade bigger or smaller?

Four things decide it, and only one is Odoo. Two Odoo 16 databases of the same size can sit weeks apart; Odoo consulting is where yours gets sized.

Custom modules

How many, and how they were built

Odoo names what breaks first: invalid dependencies, changed asset declarations, references to fields, models or views that no longer exist, xpaths that moved. A module that extends by inheritance moves forward; one that edited a standard file has three releases to survive.

Renamed data

What the standard upgrade takes with it

Models, fields and external identifiers renamed along the way need upgrade scripts so nothing is lost. Records flagged noupdate are not refreshed, and any view broken during conversion is disabled and listed on the upgrade report.

Integrations

What talks to the database

EDI feeds, APIs, connectors and scheduled jobs sit on Odoo’s own do-not-forget-to-test list, alongside automated actions, exports and server actions. A connector removed in 17, 18 or 19 needs a replacement chosen before the date.

Hosting

Where the database lives

Odoo Online, Odoo.sh and on-premise each request the upgrade differently and each carries its own obligation to move. On Odoo.sh the upgraded copy is restored and your modules updated on every commit.

/ Version moves, on the record

Have we moved a customized Odoo database across several versions?

Three multi-version moves, two across three major releases. We claim no delivered Odoo 19 upgrade here, because no published Brainvire case study reports one yet.

/ The target decision

From Odoo 16, go straight to 19 or land on 18 first?

Dates come from Odoo’s standard and extended support table, which marks future end dates as planned. Straight to 19 if your customization surface is light; 18 first if the module list needs a project of its own.

CriterionStraight to Odoo 19Odoo 18 first
Version gap in one passThree major versionsTwo now, one later
Support window Odoo publishesReleased September 2025. Standard support listed to September 2028 (planned)Released October 2024. Standard support listed to September 2027 (planned)
Release notes your code absorbsThe Odoo 17, 18 and 19 notes, togetherThe 17 and 18 notes now, 19 at the second move
Full test cyclesOneTwo, because the whole script runs again
Odoo’s own guidanceOdoo notes that the smaller the version gap, the easier the upgrade should be, and one pass stretches that guidance furthestThe same note, applied twice with a shorter gap each time, and two cut-over windows instead of one
What comes afterNothing further until the next major version, on a window Odoo publishes to 2028A second upgrade, from Odoo 18 to 19, whenever you choose it

/ Questions we are asked

Odoo 16 to 19 migration FAQs.

What is an Odoo 16 to 19 migration?

It is a version upgrade: a live Odoo 16.0 database moved onto Odoo 19.0. Odoo's own upgrade platform performs the technical conversion of the standard modules and data. The work that takes the time sits above that line — making every custom module installable on 19, proving your flows still run on an upgraded test copy, and planning the cut-over with you.

Can you upgrade from Odoo 16 straight to Odoo 19?

Yes. Odoo defines an upgrade as moving a database from an older version to a newer supported version, and states that you can upgrade from any version to supported versions only. Its table lists Odoo 19.0 as supported, so there is no requirement to stop on 17 or 18 first. What the distance changes is the volume of work on your custom code, not the shape of it.

What makes a three-version jump harder than a single one?

Your custom code meets three releases of standard change in one pass, and so does your test script. Odoo's own note is that the smaller the version gap, the easier the upgrade should be. Renamed models and fields need upgrade scripts, and Odoo warns that data from a standard model removed in a newer version may have to be recovered from the old table.

Is Odoo 16 still supported?

Not on every hosting type. Odoo gives each major version three years of standard support, and its table lists Odoo 16.0 as released October 2022 with standard support ending September 2025 — printed without the planned marker later versions carry. It shows 16.0 as no longer supported on Odoo Online and in extended support on Odoo.sh and on-premise. Odoo 17.0 runs to September 2026, 18.0 to September 2027, 19.0 to September 2028.

What changed between Odoo 16 and Odoo 19?

Three releases arrive together. Odoo 17 removed the manual reconciliation widget, dropped the planned versus immediate transfer distinction and enforced approval rules server-side. Odoo 18 removed the eBay Connector, rebuilt budgets around analytic budgets and redesigned the default multi-step routes. Odoo 19 removed tax mappings from fiscal positions, merged units with packagings, merged receipts into invoices and bills, and removed expense reports.

Who performs the upgrade, Odoo or the partner?

Odoo runs the database upgrade. Its platform converts standard modules and data to the target version, and its service level agreement covers standard applications, customizations created with the Studio app while Studio stays installed and the subscription is active, and developments covered by a maintenance of customizations subscription. Brainvire does not perform Odoo's upgrade step; everything outside that line is the work we take.

Will our custom modules work on Odoo 19?

Not automatically. Odoo states that a database containing custom modules cannot be upgraded until a version of those modules is available for the target version, and its service level agreement excludes the upgrade of additional modules not covered by a maintenance contract that are created in-house or by third parties, including Odoo partners. Brainvire installs each module on an empty Odoo 19 database first, then on the upgraded copy.

How long does an Odoo 16 to 19 upgrade take?

Brainvire plans a straight version upgrade at three to eight weeks, and a three-version jump sits at the top of that band. Those are our own planning figures, not numbers Odoo publishes, and they assume a code freeze and one full rehearsal before go-live. Where new scope travels with the upgrade, our implementation bands apply instead.

Should we go to Odoo 18 first and 19 later?

It depends on how much sits above the standard. One pass to 19 means one conversion, one port of the custom modules, one test cycle. Stopping on 18 halves the standard change your code meets at once, but the whole test script runs twice and 19 still comes later, against a shorter runway. We size both routes before you choose.

What happens to our Studio customizations?

Studio work is carried by Odoo's upgrade service, with conditions. The service level agreement covers customizations created with the Studio app for as long as Studio is still installed and the subscription is still active. Studio stores changes as data rather than code, so they are reviewed against the new standard views instead of rewritten.

How is the upgrade tested before go-live?

On an upgraded copy, never on production. Odoo neutralizes a test database: scheduled actions are disabled, outgoing mail servers are archived, payment providers and delivery carriers are reset to test, and bank synchronization is switched off. We run your real flows on that copy, including integrations, server actions and exports, then rehearse the whole upgrade the day before production moves.

What does Odoo's upgrade service not cover?

Odoo lists three exclusions: cleaning pre-existing data and configurations while upgrading, upgrading additional modules not covered by a maintenance contract that are created in-house or by third parties including Odoo partners, and training people on the upgraded version's features and workflows. An upgrade also does not downgrade, switch editions, change hosting type or migrate another ERP into Odoo.

/ Next step

Let’s find out what is really sitting on top of your Odoo 16.

  • A senior architect replies within one business day
  • Your details are never shared or sold
  • An NDA can be signed before we hear any detail

US +1 (631) 897-7276 · Gulf +971-54-737-4253 · Singapore +65-9086-0319 · India +91-22-6116-3300.

Fox SportsSouthwestNikeDisneyMcAfeeUnder ArmourSesame WorkshopInsomnia CookiesPan Emirates Home

Trusted by 2,000+ brands worldwide

“Brainvire has helped our business grow. We feel like it’s a true partnership. They’re always present. It’s been seven great years, looking forward to more.”
Mr. Kevin ClorCIO - Tent and Table

Book a working session

Tell us which Odoo version you run and what has been built on top of it.

    Ten characters minimum. An NDA can be signed before we hear any detail.