Call +1 515-644-1400Call any time. 24/7 outage response is an add-on.hello@allodi.us
Migration

Migrate Odoo from Online, Odoo.sh or a partner's server to one you own.

This page says what is possible, what it costs you in licensing, and what breaks along the way. We would rather you read it now than discover it in week three.

Or call us: +1 515-644-1400, any time. How to start.

Where you are coming from changes the plan

Migration starting points and their main constraints
Starting pointHow you get your data outThe main constraint
Odoo Online Self-service download from your Odoo account: a zip with the SQL dump, the filestore and a manifest of installed modules and their versions. You can only leave on a major version (18.0, 19.0, 20.0). Online often runs intermediate versions such as 19.2 that cannot be hosted anywhere else. If you are on one, you upgrade to the next major version on Online first.
Odoo.sh Daily, weekly and monthly backups with filestore from the project's backups tab, plus your git repository, which you already own. Leaving Odoo.sh has the details. Usually already on a major version. The work is reproducing the build: submodules, Python requirements, worker and cron settings that Odoo.sh set for you, and the mail and domain setup.
Partner-hosted Whatever your contract says. Often a database dump on request, sometimes with the filestore, sometimes with the code, sometimes with a fee. Getting everything before the relationship changes. Inventory what you own first: dump, filestore, code repository, credentials, domain and mail. Ask for it in that order and do not announce you are leaving until you have it. See switching Odoo partners.
Your own server or another host You or your IT person take a full backup, the database and the filestore, from Odoo's database manager or with a few commands, and upload it to your backup bucket. The onboarding guide has the steps. Usually the easiest. The work is documenting what nobody wrote down and making the backups real.

The caveats, plainly

These are not reasons not to move. They are the things a quote has to account for, and the things people are most often not told.

Odoo Online: major versions only

Odoo Online databases are frequently on intermediate versions (for example 19.3) that exist only on Odoo's own hosting. A database on one of those cannot be restored on a normal Odoo install. Leaving Online means being on a major version first, which means upgrading on Online to the next one. Odoo 20.0 was released in September 2026, so for a database on 19.1 to 19.4 that next major is 20.0. As of September 30, 2026, Odoo's own upgrade service does not yet offer 20.0 as a target (upgrade.odoo.com lists 19.0, 18.0 and 17.0), and Odoo's September 2026 announcement to its customers expects it by the end of November 2026. So a database on 19.1 to 19.4 may have to wait for that upgrade before it can leave. A database on 19.0 can move now and stay on 19, which is where we recommend running production while Odoo 20 settles. We check this on day one, because it sets the calendar. More on the intermediate-version trap.

Enterprise can cost more per user off Online

Odoo's Standard plan is sold for Odoo Online only. Running Enterprise on your own server needs the Custom plan, and on odoo.com in September 2026 its per-user list price is about twice Standard's. If you are on Standard today, that difference is what keeping Enterprise costs you. This is why many companies leaving Online also look at leaving Enterprise: move to Odoo Community with community (OCA) replacements for the Enterprise apps you actually use (see Enterprise to Community). It is a real trade, and we show it to you on your own data before you choose. If you keep Enterprise, the subscription transfer is arranged with Odoo and we set the license up on the new server; that is fine too.

Do not move and upgrade in the same step

If you need both, we do them in sequence: move first on the version you are on, run there for a few weeks, then upgrade. Doing both at once means that when something breaks, nobody knows which change caused it.

What does not travel with the database

  • Email. Odoo Online and Odoo.sh send mail for you. On your own server, outgoing mail needs an SMTP provider and your domain's SPF and DKIM records; incoming aliases need a mailbox and MX or forwarding. We set it up; you or your IT person will need to add DNS records.
  • In-app purchase credits (IAP). Services like SMS, document digitization and partner autocomplete are tied to the database identity. They are re-linked after the move and, for testing copies, disabled so a test does not spend your credits.
  • Single sign-on (OAuth). Google and Microsoft sign-in are registered against your old address. They need new redirect URLs on the new domain.
  • Payment provider webhooks. Stripe, Authorize.net, PayPal and similar call back to a URL. That URL changes, so each provider's settings are updated, and each is tested with a real small transaction after cutover.
  • Website domain and certificate. If Odoo runs your website, DNS moves to the new server and a certificate is issued there.
  • Bank feeds. Odoo's built-in bank synchronization is an Enterprise service. Off Enterprise, bank statements come in by file import or through a community connector; on Enterprise, feeds are re-authorized on the new server.
  • Scheduled actions. Crons are reviewed before the first start on the new server so a job that ran on the old one does not run twice.

How a move runs

Timings are typical for a company with a handful of custom modules; larger databases and more integrations add time to the parallel run. Most moves take two to six weeks from signing to cutover. A partner who is slow to hand over assets stretches the first week.

  1. Free scan and quote before you sign

    The free scan checks the version (major or intermediate) and edition, and sorts the installed modules into standard, Enterprise, OCA and custom: the quote from the published prices comes from that, with project fees that are binding for what the scan counts. You run the scan file yourself, or upload a backup and we run it, before you sign anything.

  2. Inventory and plan within 10 business days of access

    Once you have signed, we list with you the integrations in use, where every asset lives, and what your current contract says about getting it, and write the plan.

  3. Your server, in your name week 1

    You open a Hetzner Cloud project in your company's name and send us an API token for it through a secure link (about 20 minutes, with a step-by-step guide). You also open Backblaze B2 for your backups and send us a master key once through a secure link (about 15 minutes, with a guide too); we use it to create your private bucket and its keys, and you then cancel it. We build the server with our tested build script: firewall, SSH keys, security updates and the nightly backup job to a Backblaze B2 bucket you also own. The runbook in your repository records every setting.

  4. Restore a neutralized copy week 1 to 2

    Your database and filestore are restored as a copy with mail, crons, bank sync, payment providers and IAP all switched off. We confirm every module loads, then, if you are leaving Enterprise, uninstall Enterprise apps on this copy and install their replacements, scripting each step so it can be repeated exactly.

  5. Plumbing week 2

    Outgoing and incoming mail, the web address, certificate, OAuth, payment webhooks and any carrier or bank connections are set up on the new server, each one documented in the integrations sheet as it is done.

  6. Parallel run one to four weeks, by size

    Your team uses the copy for real work, in parallel with the old system, and reports anything that differs. During this time we freeze changes on the old system so nothing is lost at cutover. Issues found here are fixed before cutover.

  7. Cutover one evening

    Users stop, a final backup is taken from the old system, restored on the new one with the scripted steps used for the copy, DNS and mail are switched, and a go/no-go checklist is run: login, create a quote, post a test invoice, send a test email, print a report, run a small test payment where you take payments online. Then users start again.

  8. Handover within 30 days of cutover

    You get the runbook, the integrations sheet, and the credentials list, and we confirm in writing that we can be removed from everything and it still runs. You keep the old system available and unchanged for at least thirty days after cutover as a fallback, as your statement of work sets out; after that, cancelling it is your decision. The last export is kept cold in your backup bucket.

Before you tell your partner you are leaving

If your Odoo is with a partner, do this first, quietly, and ideally with us on the call:

  1. Ask for a full database backup with filestore "for your own records". This is a normal request.
  2. Ask for read access to the code repository, or a zip of the custom modules, "for your auditor" or "for your insurance". Also normal.
  3. Confirm you control the domain registrar and the DNS for your Odoo address and your mail.
  4. List every third-party account (mail provider, payment provider, shipping, bank feed, SMS) and check who is the owner on each.
  5. Read the contract for notice periods, data-return terms and any fee for handover.

Once those are in hand, the conversation about leaving is a conversation, not a negotiation.

What we need from you

  • A contact who can create accounts (Hetzner, Backblaze, GitHub) in the company's name and add us to them.
  • Someone who can change DNS records, or permission for us to do it.
  • Two or three people who will actually use the parallel system and report what differs.
  • A decision on Enterprise versus Community before the copy is built.
  • An evening for cutover when nobody is invoicing.

Questions people ask

Can we move from Odoo Online to our own server?

Yes, once the database is on a major version such as 19.0. Odoo Online often runs intermediate versions that cannot be hosted anywhere else, and a database on one has to be upgraded on Online to the next major version first. The free scan tells you which case you are in.

How do we get our data out of Odoo Online?

The database administrator downloads a backup from the Odoo account: a zip with the SQL dump, the filestore and a manifest of installed modules and their versions. It includes your attachments, so a large database takes a while.

Can we keep Enterprise when we self-host?

Yes. Running Enterprise on your own server needs the Custom plan, whose per-user list price on odoo.com is about twice the Standard plan's, which is sold for Odoo Online only. The subscription stays with Odoo S.A., and we set the license up on the new server.

How long does a migration take?

Usually two to six weeks from signing to cutover, depending on size, most of it a parallel run in which your team checks its own work on the new server. The cutover itself is one evening you choose.

Should we upgrade to Odoo 19 at the same time?

No. We move first on the version you are on, run there for a few weeks, then upgrade as a separate step, so that when something differs, everyone knows which change caused it.

What does the move cost?

Our rescue and rehost service is $750 per database, billed as $250 at signing, at cutover and at handover, plus $125 for each additional company. The server and backup storage are billed to you directly by Hetzner and Backblaze.

Is self-hosting cheaper than Odoo.sh?

It depends on the license more than the hosting. Our Odoo.sh vs self-hosted cost comparison works through three company sizes with published prices, including where Odoo.sh comes out cheaper.

Can we add custom modules once we leave Odoo Online?

Yes. On a server you own you install custom modules and OCA modules from your own code repository, and Allodi's prices do not depend on lines of code. New modules are quoted before work starts, and small changes come out of the Managed Odoo fix hours each month. The version limit above still applies: the database has to be on a major version before it can leave Online.

Sources, as of September 2026: Change hosting solution (intermediate versions must be upgraded to the next major version before leaving Online), Odoo Online database management (backup download, custom modules not supported on Online), Standard and extended support (version table, Odoo 20 release), Odoo pricing plans (Standard plan for Odoo Online only, Custom plan prices). Odoo changes its terms and documentation from time to time; the linked pages are the current word.

Find out if you can move, and when

Get your price in the calculator. The free scan then checks your version and gives a straight answer about whether you can leave Odoo Online yet, with a quote from the published prices. It is free and needs no contract.

  • Plans, add-ons and hourly rates are published; larger projects are quoted up front, and the project fees in the free scan's quote are binding for what the scan counts.
  • On a move, the start milestone is refunded if your database cannot run on the new server, unless the cause is on your side or a third party refuses to release your data (conditions).
  • Managed Odoo is month to month: thirty days' notice, no minimum term.
  • Your server, code, backups and credentials are in your company's name.

Or call us: +1 515-644-1400, any time, or write to us. How to start.