Odoo 18 to Odoo 19 migration: what changes and how we move you
Odoo 19 arrived in September 2025 and reworked how taxes, product units, receipts and employee records behave. Brainvire inventories your Odoo 18, makes each module installable on 19, then proves it on a copy before a date is agreed.
Moving a live database from Odoo 18.0 to Odoo 19.0. Odoo’s own upgrade platform performs the technical conversion of the standard modules and data. Making custom modules work on 19 is the customer’s or partner’s responsibility, and that is where the real work sits.
Teams running Odoo 18.0 in production, especially those carrying custom modules, Studio changes or third-party apps nobody has inventoried since they were built.
Brainvire plans a straight version upgrade at 3 to 8 weeks, assuming a code freeze and one full rehearsal. These are our own planning figures, not Odoo published ones. Where new scope travels with the upgrade, our implementation bands apply instead.
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.
/ Before the next version lands
Why does the Odoo 18 upgrade keep getting postponed?
Four reasons we hear, and none of them is the upgrade itself.
The window on 18 is published, not negotiable
Odoo supports each major version for three years and prints the end date. On Odoo Online the upgrade is mandatory on a schedule and runs automatically once the deadline passes.
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.
Odoo 19 may already ship what you paid to build
A year-end statements pack printed in one action, duplicate bill detection at two warning levels, a Gantt view for manufacturing orders. Odoo’s guidance is to challenge every customization against what 19 added.
The only test on the calendar is go-live
Without an upgraded test database and a run through the real flows, the first time anyone sees Odoo 19 holding your data is the morning it has to work.




Trusted by enterprise Odoo teams worldwide












/ Version to version
What actually changed between Odoo 18 and Odoo 19?
Twelve changes that alter how a working Odoo 18 database behaves on 19, each taken from Odoo’s own Odoo 19 release notes. Entries Odoo marks as available from an earlier version are left out; the third column is our reading, not theirs. More on what is new in Odoo 19.
| Area | What Odoo 19 changed | What it means for your upgrade |
|---|---|---|
| AI | An AI application: agents built from topics and sources, AI fields, and Ask AI, which turns a natural-language query into an Odoo domain | Optional, and configuration work rather than a switch. Planned after the upgrade, not inside it |
| Fiscal positions | Tax mappings were removed from fiscal positions. Each tax now declares the position it applies in and which taxes it replaces | Tax determination is re-tested first if you run several regimes. Most often the row that moves a date |
| Units and packagings | Product units and product packagings merge into one model, and unit of measure categories were removed | Product data is reviewed before the upgrade, not after |
| Receipts | Purchase and sales receipts were merged with invoices and bills. Sales receipts are switched on in the settings | Filters, reports and automations pointing at the old receipt models are rebuilt |
| Expenses | Expense reports were removed. Several expenses are now submitted, approved and posted together from the list view | Any approval flow or report built on the expense report object gets redesigned, not patched |
| Turning AI on | API keys are required for Odoo.sh and on-premise databases to use AI features; Odoo Online users may add their own but need not. Gemini and OpenAI are the supported providers, and Odoo’s own edition comparison marks AI for Enterprise and crosses it for Community | If you self-host, upgrading does not switch AI on. Provider choice belongs in your security review, because your data leaves Odoo |
| Employees | Employees and contracts were merged and a versioning mechanism introduced, remote work is enabled by default, and certifications gained their own tab on the employee form | HR customizations and payroll integrations that read the contract model need the closest look on this list |
| Payroll | Batches were renamed Pay Runs with a guided interface, an employee’s net salary can split across several bank accounts, and one master payroll report covers all localizations | Payroll output leaves the building, so it is tested against a real period rather than a sample record |
| Replenishment | Reordering rules gained a horizon setting, 365 days by default, and a deadline field. Default virtual locations that were not needed were removed and location configuration simplified | Replenishment behaves differently with a horizon in place, so it is re-checked against your real demand history |
| Manufacturing | A Gantt view for manufacturing orders, several serial or lot numbers from a single order, a default batch size on bills of materials, and manual consumption removed from BoM configuration | Bills of materials are reviewed first: some planning customizations can be retired rather than ported forward |
| Accounting controls | A default Annual Statements composite report prints the balance sheet, profit and loss and trial balances together, and duplicate bill detection now warns at two levels and excludes duplicates from automatic posting | Controls finance teams often built by hand are standard now. Cheaper to delete than to carry across |
| Studio and platform | Studio opens from any view, sets fixed list column widths, adds button tooltips and updates HTML fields in actions. Browsed data and translations are cached, and the search bar renders before the data loads | Report and view code can sometimes be retired in favor of Studio, which the upgrade service carries while Studio stays installed |
/ Responsibilities
Who does what in an Odoo 18 to 19 upgrade?
The boundaries are published, not negotiable. All of it is stated in Odoo’s upgrade documentation and its guide to upgrading a customized database. We name them here so nobody finds the boundary in week five.
Odoo converts the standard database
Odoo’s upgrade platform performs the technical conversion of standard modules and data. 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 this step.
Your custom modules are our job
That same agreement expressly excludes additional modules without a maintenance contract, built in-house or by third parties, including Odoo partners. So we do it: each module made installable on an empty Odoo 19 database first, then on the upgraded copy.
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 new version. It also will not switch editions or change hosting type.
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 a copy against your real flows, and what fails is fixed before a date is agreed.
/ Delivery
How does an 18 to 19 upgrade actually run?
Odoo publishes a six-step path for a customized database; 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:
Freeze and challenge
Development stops: anything built during the upgrade has to be upgraded and tested again. Every customization is argued against what Odoo 19 does as standard, and the redundant ones retired here.
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.
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. Renamed models and fields need 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 an 18 to 19 upgrade bigger or smaller?
Four things decide it, and only one of them is Odoo. Two databases on the same version, size and hosting can sit weeks apart on this list.
How many, and how they were built
Odoo names what breaks first: invalid dependencies, changed assets, 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 to be found.
What was changed without code
Studio work is carried by the upgrade service while Studio stays installed and the subscription is active. Configuration, saved filters, mail templates and translations are still re-checked by hand.
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, data exports and server actions run from list selections.
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 before?
Three version-to-version moves, each with the case study behind it. We claim no delivered Odoo 19 upgrade here, because no published Brainvire case study reports one yet.
Accelerated Solutions Group
ASG manufactures automotive accessories. Its Odoo 13 setup had turned complex under customization, so Brainvire moved it to Odoo 16: analytical accounts attach to order lines automatically, work orders are approved in bulk, and manufacturing orders post labor cost.
Read the case →
CURE International
A non-profit running children’s hospitals across several countries. The Odoo 16 upgrade put eight sites on one centralized inventory and purchase system, replaced manual stock adjustments with automated records, and structured the approval workflows.
Read the case →
AMASCO LLC
AMASCO runs repairs and maintenance across oil and gas, maritime and Gulf shipping. Brainvire moved its Odoo backend from 14 to 16 and rebuilt the customizations: a project created when a quote is accepted and linked to procurement, plus requisitions that pass approval first.
Read the case →
/ The timing decision
Should you upgrade to Odoo 19 now, or wait?
Both are real answers, and we size both before you decide. Dates come from Odoo’s published standard and extended support table, which marks future end dates as planned; the obligation to move comes from its upgrade documentation, which differs per hosting type. Move now if your customization surface is light; wait if the module list needs a project of its own.
| Criterion | Upgrade to Odoo 19 now | Wait |
|---|---|---|
| Support runway Odoo publishes | Odoo 19.0 was released September 2025, with standard support listed to September 2028 and marked planned | Odoo 18.0 is listed to September 2027, also planned, and that window only narrows |
| Who picks the date | You do, inside your own release calendar | On Odoo Online a major upgrade is mandatory every two years and runs automatically if no action is taken before the due date |
| Version gap for your custom code | One major version. Odoo notes that the smaller the gap, the easier the upgrade should be | Two versions once the next release lands, absorbed in one test cycle |
| Release notes to absorb | The Odoo 19 release notes, one set | Those plus the next release’s, arriving together |
| What arrives on day one | The AI application, the reworked fiscal positions, merged units and packagings, and the rest of the 19 list | The same list later, with more standard change to work through in one pass |
| What comes after | Nothing further until the next major version, on a support window Odoo publishes to 2028 | The same project, later, against a shorter runway on the version you are still running |
/ Questions we are asked
Odoo 18 to 19 migration FAQs.
What is an Odoo 18 to 19 migration?
It is a version upgrade: a live Odoo 18.0 database moved onto Odoo 19.0. Odoo's own upgrade platform converts the standard modules and data. The work that takes the time sits above that line, in making every custom module installable on 19 and proving your flows still run on a test copy.
What changed in Odoo 19?
Odoo 19 added an AI application, removed tax mappings from fiscal positions so each tax declares where it applies, merged product units with packagings, merged purchase and sales receipts into invoices and bills, removed expense reports, merged employees with contracts under a versioning mechanism, and renamed payroll batches to Pay Runs.
Who runs the upgrade, Odoo or Brainvire?
Odoo does. Its upgrade platform performs the technical conversion of standard modules and data to the target version, and Brainvire does not perform that step. Odoo's service level agreement covers standard applications, Studio customizations while Studio stays installed and subscribed, and developments under a maintenance of customizations subscription. The rest is ours.
Will our custom modules run on Odoo 19?
Only after somebody ports them. Odoo warns that a database with custom modules cannot be upgraded until a version of those modules exists for the target release, 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. We install each one on an empty Odoo 19 first, then on the upgraded copy.
How long does an 18 to 19 upgrade take?
Brainvire sizes a straight version upgrade at three to eight weeks. That band is ours, not something Odoo publishes, and it assumes development is frozen and one full rehearsal happens before go-live. If new scope rides along with the upgrade, our implementation bands apply instead: eight to twelve weeks small, twelve to twenty-four mid-market.
How long is Odoo 18 supported?
Odoo gives every major version three years of standard support, meaning helpdesk support, bug fixing and security updates. Its published support table lists Odoo 18.0 as released in October 2024 with standard support ending September 2027, and Odoo 19.0 as released in September 2025 with standard support ending September 2028. Both end dates are marked planned.
Is upgrading to Odoo 19 mandatory?
That depends on where the database is hosted. Odoo states that on Odoo Online a major-version upgrade is mandatory every two years and is carried out automatically if no action is taken before the due date. Odoo.sh allows two further years after the initial three. On-premise databases may stay put indefinitely, which Odoo does not recommend.
Do Odoo 19's AI features work as soon as we upgrade?
No. Odoo documents that API keys are required for Odoo.sh and on-premise databases to use AI features, while Odoo Online users may add their own but are not required to. Odoo supports Gemini and OpenAI as providers, and its own edition comparison marks AI as an Enterprise feature rather than a Community one.
Can Odoo 19 AI change data in our database?
Not on its own. Odoo documents that the standard Ask AI agent cannot make changes to the database: it can open views and display reports, but it cannot create leads or alter data. An agent with no topics assigned can only provide information. Anything that writes is an agent somebody configured deliberately, with tools attached.
How is an Odoo 19 upgrade tested before go-live?
Against a neutralized copy of your own data. Odoo disables scheduled actions on a test database, archives the outgoing mail servers, resets payment providers and delivery carriers to test, and switches off bank synchronization. We work through your real flows on that copy, including integrations and exports, then rehearse the full upgrade the day before.
Will there be downtime during the upgrade?
Yes, and anyone promising otherwise is guessing. Odoo states that the production database is unavailable for as long as the upgrade takes, which is why the move is scheduled for your quietest window. On Odoo.sh the platform reverts automatically if the upgrade fails and keeps a backup taken beforehand. On Odoo Online a finished upgrade cannot be undone.
What sits outside Odoo's upgrade service?
Three things, in Odoo's own words: cleaning up pre-existing data and configurations while upgrading, upgrading additional modules without a maintenance contract whether built in-house or by a third party including Odoo partners, and training people on the new version's features and workflows. An upgrade also will not switch editions or change hosting type.
/ Next step
Let’s find out what is really sitting on top of your Odoo 18.
- 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.









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.”
Book a working session
Tell us which Odoo version you run and what has been built on top of it.