This guide explains how to move an Odoo 18 database to Odoo 19 and what has to be in place first. The short answer: Odoo's upgrade service comes with an Enterprise subscription. Odoo Online and Odoo.sh customers already have it, and a self-hosted Enterprise database can use it once registered with its subscription code. A self-hosted Community database without a subscription stops at the error "Unable to get the subscription code of your database", because the upgrade script looks for that code before sending anything to Odoo.
It is for owners, finance leads and IT staff, and was checked against Odoo's version 19 upgrade documentation, the published upgrade script and odoo.com on 7 October 2026.
Before you start
- Know your edition and hosting. Community is the free, open-source edition; Enterprise is the paid edition sold with a subscription. Odoo Online is Odoo's cloud service, Odoo.sh is Odoo's platform for databases with custom code, and on-premise means a server you manage.
- Find your subscription code, if you have one. Odoo sends it by email when you subscribe.
- List your custom modules. Each one needs an Odoo 19 version before the database can be upgraded.
- On-premise: a shell on the database server as a system user that can connect to PostgreSQL, and a firewall that lets the server reach Odoo's upgrade servers on port 443 and ports 32768 to 60999.
- Terms: a test upgrade produces an upgraded copy to try while the live database keeps running; a production upgrade replaces the live database. The filestore is the folder where Odoo keeps attachments and images outside the database.
Which route applies to your database
- Odoo Online: upgrades are part of the service and are requested from the database manager on odoo.com. Odoo also makes an upgrade compulsory every two years for databases on a major version, with a warning a few weeks before it runs automatically.
- Odoo.sh: each branch has an Upgrade tab. A staging branch receives a test upgrade of the latest daily production backup; the production branch receives the real one.
- On-premise Enterprise: use the command-line script or the upload form on upgrade.odoo.com. The script reads the subscription code that registration stored in the database, or accepts the code through its contract option.
- On-premise Community: the script will not continue without a subscription code, and the upload form asks for an Enterprise subscription code, so Odoo offers no upgrade route for a Community database without a subscription. Using the service means buying Enterprise, and self-hosting Enterprise requires the Custom plan (odoo.com pricing, 7 October 2026). Odoo's documentation treats switching from Community to Enterprise as separate work that an upgrade does not include. Otherwise the move is your own project, for example building a fresh Odoo 19 database and importing your data, without Odoo's help.
Odoo 18 stays in standard support until September 2027 (planned). On 7 October 2026 the upload form's newest target was 19.0, although Odoo 20 was released in September 2026.
What the upgrade service does and does not cover
For Enterprise customers, an upgrade to the latest version costs nothing extra, including help fixing differences in the upgraded database. The service converts:
- every standard Odoo app;
- changes made with the Studio app, while Studio is installed and its subscription is active;
- custom code under a maintenance of customizations subscription.
It does not tidy up old data or configuration, convert in-house or third-party modules without a maintenance contract, or train staff. An upgrade also cannot return a database to an older version, change its edition or hosting type, or import data from another ERP. The subscription agreement makes testing the result your job, and allows as many upgrade requests as you need.
How to request a test upgrade
Always test first; the live database keeps working meanwhile.
On Odoo Online:
- Sign in on odoo.com as the database administrator and open My Databases.
- Click the gear icon next to the database, then Manage.
- In the Database section, click Upgrade.
- Choose Odoo 19, enter the email address for the link, leave Purpose on Test, and click Upgrade. The Connect button reads Upgrading... until the copy is ready, then the email arrives.
On Odoo.sh: select a staging branch, open the Upgrade tab, choose the version and click Test Upgrade. If you have custom modules, push their Odoo 19 code to the branch; each push restores a clean upgraded copy and updates the modules on it. Without custom modules, the build starts as soon as the upgraded backup arrives.
On-premise:
- Sign in to the database server, ideally as the system user that runs the Odoo service (see the first pitfall).
- Run the test command from the Upgrade page with your database name and 19.0 as the target: python <(curl -s https://upgrade.odoo.com/upgrade) test -d your_database -t 19.0
- The script dumps the database, uploads it without the filestore and waits. It then downloads the result and restores it as a new database whose name includes "test" and the target version.
- Run that database on an Odoo 19 installation with the Odoo 19 versions of any custom modules. It is now an Odoo 19 database and is not meant for your Odoo 18 server.
Check that it worked
- Open the upgraded copy and go to the Discuss app. Users with the Administration / Settings access right find an upgrade report there on what the new version changed; it is also attached to the success email.
- Expect a quiet copy. Test databases are neutralized: scheduled actions are off, outgoing mail goes nowhere, payment and shipping providers run in test mode, and bank synchronization is off.
- Buy, receive, sell, deliver and invoice a product, issue a credit note, and compare the results with the live database. Also check reports, printed documents, email templates, exports, automated actions and integrations.
- Report problems on Odoo's support page using the option for an upgrade you are testing.
- When the copy is right, request the production upgrade: Purpose set to Production on Odoo Online, the production branch on Odoo.sh, or production in place of test in the on-premise command.
Pitfalls to avoid
- Missing attachments on-premise. The script looks for the filestore in the home folder of the user running it. If the Odoo service runs as another user, the script warns that the original filestore was not found and leaves the copy to you. Odoo finds a filestore by database name alone, so copy the folder into place under the upgraded database's name, or images and attachments will not load.
- The filestore is not uploaded. The upgraded database returns with only new or extracted files, which must be merged with your existing filestore before go-live.
- Entries made during the upgrade are lost. On-premise, anything recorded in the old database after the production copy is uploaded will not reach the upgraded one, so stop using it meanwhile.
- No way back on Odoo Online. A finished production upgrade cannot be reversed. Odoo recommends rehearsing the full process the day before.
- A short window after testing. On 7 October 2026 the Upgrade page said to run the production upgrade within three days of the test. If more time has passed, request a fresh test copy.
Steps verified on Odoo 19. Menus and labels can differ on other versions.
Common questions
Can I upgrade Odoo 18 Community to Odoo 19 without paying?
Not through Odoo's upgrade service. The upgrade script and the upload form on upgrade.odoo.com both require an Enterprise subscription code, so a Community database without a subscription has to be moved as a project you run yourself, without help from Odoo.
Is the Odoo 18 to Odoo 19 upgrade included in an Enterprise subscription?
Yes. Upgrading an Enterprise database to the latest version costs nothing extra and covers the standard apps, Studio changes while Studio is active, and custom code under a maintenance of customizations subscription. Other custom or third-party modules must be converted by whoever maintains them.
Why does the Odoo upgrade script say it cannot get the subscription code of my database?
The script reads the subscription code that is stored in the database when it is registered. If it finds none and no code is given with the contract option, it stops before uploading anything.
Does a test upgrade change my live Odoo database?
No. A test upgrade produces a separate upgraded copy. That copy is neutralized, so scheduled actions are off, outgoing email is disabled and payment and shipping providers run in test mode.
Does the Odoo upgrade service clean up my data or train my team?
No. The service converts the database to the new version and fixes problems caused by the upgrade itself. Cleaning up old data or configuration and training users on the new version are not included.
Talk to the team.
If you are setting this up, or Odoo is not behaving the way this guide describes, book a 30-minute call. We will look at your configuration and tell you what it needs. Calgary studio, in-house team, no offshore handoffs.
Book the call →