Short answer: moving Odoo to a new host safely comes down to three things. Test the move on a copy first, freeze the old system during a short cutover window, and move the database and the filestore together. Done this way, the actual downtime is usually the time it takes to copy the final backup, which for most small and medium databases is well under an hour.
Before you start: take an inventory
Most failed migrations fail because something was forgotten, not because the move itself was hard. Write down:
- The exact Odoo version and edition, Community or Enterprise.
- Every custom and third-party module, with its source repository.
- Any extra Python packages or system libraries those modules need.
- The size of the database and of the filestore.
- Every integration: online stores, payment gateways, email servers, ZATCA and anything that calls the Odoo API.
- Scheduled actions that send emails or talk to external systems.
Step 1: prepare the new environment
Set up the new server with the same Odoo version and edition as the old one. A migration and a version upgrade are two different projects. Doing both at once makes it impossible to tell which one caused a problem. Install your custom modules and their dependencies before restoring any data.
Step 2: run a trial restore
Take a full backup of the database with its filestore and restore it on the new server as a test copy. Before anyone logs in, stop the copy from contacting the outside world: disable outgoing email servers and scheduled actions, or use the database neutralization option available in recent Odoo versions. Otherwise the test copy may send emails to customers or post data to your integrations.
Step 3: test what matters
- Users can log in and the main screens open at a normal speed.
- Attachments and product images appear, which confirms the filestore was moved.
- Key reports and printed documents render correctly.
- Custom modules load without errors in the server log.
- Points of sale can open a session.
Fix anything that fails here, then repeat the trial restore if needed. Problems found on a test copy cost nothing. Problems found after the cutover cost a working day.
Step 4: plan the cutover
Choose a quiet time, such as the end of the working day or a weekend, and tell users in advance. A day or two before, lower the time-to-live of your domain's DNS record so the change spreads quickly when you switch.
Step 5: the cutover itself
- Stop users from working on the old system so no new invoices or orders are created.
- Take the final backup of the database and the filestore.
- Restore it on the new server, this time as the live database.
- Point your domain to the new server and confirm the SSL certificate is active.
- Re-enable email servers and scheduled actions on the new live database.
- Run a quick check: log in, open an invoice, print a document, open a point of sale session.
Step 6: after the move
Keep the old server available, but switched off for users, for a few days in case something needs to be compared. Watch the server log and the integrations for the first days. Once you are confident, cancel the old hosting.
A note on ZATCA e-invoicing
The ZATCA settings and certificates are stored in the database, so they move with it. The critical rule is that only one system may issue invoices at any time. Never let the old system and the new one both send invoices to the Fatoora platform, because the invoice sequence and chain must stay continuous.
Common mistakes
- Moving the database without the filestore, so every attachment and image is missing.
- Restoring on a different Odoo version and discovering broken modules on the live system.
- Forgetting a Python dependency that a custom module needs.
- Leaving a test copy connected to email or integrations.
- Switching DNS without lowering its time-to-live first, so some users keep reaching the old server.
Frequently asked questions
How long will Odoo be unavailable?
Roughly the time needed to take the final backup and restore it. For most small and medium databases that is under an hour. Very large filestores can take longer, and can be copied in advance with only the latest changes synced during the cutover.
Can I move from Odoo Online or Odoo.sh?
Yes. Both let you download a backup of your database with its filestore. Odoo Online sometimes runs intermediate versions, which may need upgrading to a standard release before they can run elsewhere.
Do you migrate for free?
Yes. At Sadeem Cloud we move your database and custom modules at no cost, including the trial restore and the cutover.
Related reading
Types of Odoo hosting explained