Documentation / Moving to calmo.cloud
Migrating from Odoo Online
Move an Odoo Online (SaaS) database to calmo.cloud: check the version, download the backup, set up server and service, restore, point your domain.
Odoo Online is Odoo's own SaaS. Moving away from it brings your database and your filestore (attachments, images, documents) to a server you control. There is no custom code to move, because Odoo Online does not allow any; Studio customisations live in the database and come along with it.
Before you start #
Make sure you have:
- Administrator access to the Odoo Online database and to the database manager on odoo.com
- S3-compatible storage (e.g. AWS S3, Backblaze B2, MinIO) for a backup destination
- A server to migrate to, or a cloud provider connected so calmo.cloud can order one
- An SSH key registered with your team, so you can push the backup archive to the server
Check the version first. Odoo Online runs on intermediary versions (for example saas~18.4) that do not exist for self-hosted Odoo. calmo.cloud runs Odoo 18.0, 19.0 and 20.0. A database on an intermediary version has to be upgraded to the next major version with Odoo's upgrade service before it can be restored; a database already on 18.0, 19.0 or 20.0 can be restored as it is. You find the version under Settings → About in your Odoo.
An Odoo Online subscription includes hosting. When you leave, ask Odoo or your Odoo partner to switch your Enterprise subscription to self-hosting, so your subscription code stays valid on calmo.cloud. Self-hosting needs Odoo's Custom plan.
Step 1: Download a backup from Odoo Online #
Open the database manager, open the menu of your database and choose Download. The download is a standard Odoo backup archive (.zip) with the database dump and the filestore, the format calmo.cloud imports.
Do this right before the switch, so the archive holds the freshest data. Ask your users not to work in Odoo Online between the download and the go-live.
Step 2: Set up your backup storage #
Under Infrastructure Settings → Backup Destinations, create a destination pointing at your S3-compatible storage. See Multiple Backup Destinations.
The import in step 4 stores the archive at the service's backup destination. Without one configured, you cannot import your backup.
Step 3: Add a server and create the Odoo service #
- Add a server: register it under Servers, check reachability, install Docker, and enable Postgres and Traefik.
- Create the Odoo service: under Projects → Odoos, create a new Odoo on that server. The version must match your database, so if you upgraded to 19.0, create a 19.0 service.
- In the service's Backup Settings, add the backup destination from step 2 and mark it as Primary.
A provisioning template does all of this in one click: it orders the server from your cloud provider, sets up Postgres and Traefik, creates the Odoo service and attaches your backup destinations.
Step 4: Import and restore the backup #
Push the archive from step 1 to your new server and import it. Importing Backups describes the full flow:
- Copy the archive to the server, e.g.
scp backup.zip root@203.0.113.10:/tmp/import_backup.zip. The Import Backup dialog shows this command prefilled for your server. - On the service, open the Backups tab and click Import Backup.
- Enter the path and choose Restore into this service after import. The freshly created service holds no data yet, so you can enable skip safety backup.
calmo.cloud stops the service, replaces the database and filestore with your Odoo Online data, starts the service again and stores the archive at your backup destination. web.base.url is set to the service's URL automatically.
Step 5: Verify and go live #
- Log in via the service's platform domain with your existing Odoo users; accounts and passwords come along with the database.
- Open Settings → Apps and check that the apps you use are installed. Odoo Online includes every Enterprise app; self-hosted Odoo behaves the same way once your subscription code is in place under Settings → General Settings.
- Check outgoing e-mail: Odoo Online sends mail for you, a self-hosted Odoo needs an outgoing mail server of your own.
- Add your custom domain and update its DNS record. calmo.cloud issues the SSL certificate automatically. If you used a
*.odoo.comaddress, tell your users the new one. - Set up an automatic backup schedule so the new instance is backed up from the start.
Keep the Odoo Online database until the migrated instance has run without problems for a few days. Odoo keeps inactive databases for a while before deleting them; check the current retention in the database manager.