Four Odoo services. Each with a scope, a deliverable and an end.
We take over Odoo systems, keep them running, and move them forward a version. Every engagement is written down before it starts.
Rescue and rehost
For companies whose Odoo is held by a partner, or is on Odoo Online or Odoo.sh, and who want it on a server they own. See also leaving Odoo.sh, switching Odoo partners and rescuing a stalled Odoo project.
What happens
We start with an inventory of what you actually have: database, filestore, custom code, integrations, credentials, and where each of them lives today. If a partner holds any of it, we help you request it in the right order, before you signal that you are leaving. That sequencing matters more than people expect.
Then 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), and open Backblaze B2 for your backups and send us a master key once through a secure link (about 15 minutes); we use it to create your private bucket and its keys, and you then cancel it. We build the server in it, restore a neutralized copy of your database on it, and run it in parallel with the old system, for one to four weeks depending on size, while your team checks their own work in it. Mail, integrations and scheduled jobs are switched on one at a time and documented as we go. Cutover happens on a day you pick. 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, switching it off is your decision.
If your custom code has no repository, we create one from what is on the server and commit it under your account. If integrations have no documentation, we write it.
What you get
- A cloud server (Hetzner Cloud project) owned by your company, with our access through an API token you can delete.
- A git repository of all custom modules, in your company's GitHub or GitLab account.
- Nightly encrypted backups of database and filestore to a Backblaze B2 bucket you own, with a restore test on record.
- A one-page runbook: how to start, stop, back up, restore and update your Odoo without us.
- An integrations sheet: every mail server, payment provider, shipping carrier, bank feed, OAuth login and webhook, what it connects to, and where the secret is stored.
- A credentials handover, stored in your password vault, not ours.
What it costs
- $750 per database, billed as $250 at signing, at cutover and at handover, plus $125 per additional company billed at cutover (see pricing)
- If we cannot get your database running on the new server, the start milestone is refunded (conditions)
- Managed Odoo starts at cutover (or on the day we move your production onto our interim servers, if an urgent move needs that) and is billed on that day of each month, with no proration. You pay for the move while we move you, and for managing your Odoo once it is running on your server.
- Server and backup storage billed to you directly by Hetzner and Backblaze; most companies pay them tens of dollars a month
How long
- The whole move: two to six weeks from signing to cutover, depending on size
- Inventory and written plan: within 10 business days of getting access
- Build and parallel run: one to four weeks
- Cutover: one evening or weekend
- Handover: within 30 days of cutover
- Longer if a partner is slow to release assets
Read the migration page before you decide
Moving off Odoo Online is only possible on a major version, and several things do not travel with the database. The migration page lists them plainly so nobody is surprised.
Managed Odoo
A monthly retainer for companies that want a named party responsible for their Odoo being up, backed up, patched and fixed when small things break. How the hosting is set up, and how it compares with Odoo Online and Odoo.sh.
What happens
We run the server. That means operating system and Odoo security patches on a schedule you know about, and monitoring from our own server, outside your network. Your Odoo login page and its certificate are checked every 5 minutes. Every 15 minutes we check disk space, memory, load, the Odoo and database services, the last backup, pending security updates, failed outgoing email and late scheduled actions. A problem opens a ticket for us automatically, day or night, and a server that is down or out of disk space also emails us at once. For those, you hear from us within one business hour, and on a best-effort basis outside business hours unless you add 24/7 outage response.
Backups go to your Backblaze B2 bucket: 30 daily backups, plus point-in-time recovery, so the database can be restored to a moment you choose within the last 29 days, not only to last night. Once a month we restore the latest backup onto a scratch server and tell you it worked. Outgoing mail is watched too: when emails start failing in your Odoo, we know within about 15 minutes, rather than when a customer asks where their invoice is.
Each month includes a block of small-fix hours for the things that make Odoo annoying day to day: a report column, a required field, a wrong default, a stuck scheduled action, a bank statement that will not import. You open a ticket in the portal and we work it, with an AI agent doing the legwork, and the ticket shows what was looked at and what changed. Small fixes are usually done in days, not weeks.
What you get
- Server operations: security patching, monitoring (your site every 5 minutes, the server every 15), capacity, and a monthly summary of uptime, incidents, backups, restore tests and updates.
- 30 daily backups in your B2 bucket, point-in-time recovery of the database to any moment in the last 29 days, and a monthly documented restore test.
- A staging copy, on servers with 8 GB of memory or more: a neutralized copy of production on your own server, refreshed when you ask, for testing changes on real data, with outgoing mail, scheduled actions, payment providers and Odoo's in-app services switched off. Setting it up and refreshing it count against your included hours.
- An uptime target of 99.9% on cloud servers we manage, reported in the monthly summary. It is a target, with no service credits, and the exclusions in the service agreement apply.
- Failed outgoing email alerting, and a check on your mail setup (SPF, DKIM, bounce handling) when you join.
- Small-fix hours each month, sized by your companies and users. Hours used are taken automatically from the time logged on your tickets, which you can see on each ticket in the portal; hours you do not use carry forward one month (they have no cash value), and larger work is quoted separately.
- The support portal, where every ticket keeps a record of what was done.
- Version point-release updates within the same major version, rehearsed on a copy first.
- Allodi Print on Odoo 19: printing from Odoo straight to the printers in your building, at no extra charge.
What it costs
- $75 a month for the first company, $37.50 for each additional company, $12.50 for each branch and $15 for each internal user; portal users are free (see pricing)
- Includes 2 fix hours per company plus 15 minutes per internal user each month, pooled
- Companies, branches and users are counted automatically every day; each invoice is billed on the highest daily count in the period and lists those counts next to the prices
- Work beyond the included hours at $150 per hour; we warn you before going over.
- Optional 24/7 outage response with your own direct emergency line: $150 a month per subscription, or $7.50 per internal user if that is more (see pricing)
How long
- Month to month
- Thirty days' notice to cancel
- Onboarding usually takes one to two weeks when your Odoo already runs on a server your company owns that meets our specification; if it is on Odoo Online, Odoo.sh or a partner's server, the move comes first (see service 1)
Not included
- Major version upgrades (service 3)
- New module development beyond the fix-hours block
- Bookkeeping itself. We keep the reconciliation tools working; your team or accountant does the reconciling
- Odoo Enterprise or third-party license fees
On your own hardware
Prefer a server in your own building or data center? We install and run Odoo on it the same way, as long as it runs Ubuntu 24.04 (on bare metal or as a virtual machine), meets our minimum specification and sits behind a UPS. The same goes for a virtual server in your own AWS, Azure, Google Cloud or other cloud account. We connect over SSH with keys only; if your IT prefers, we can agree on a connection your server opens outward. The hardware, power, network and building stay yours, and response times cover Odoo and the server software, not the hardware. Backups still go offsite to your own Backblaze account, and if the hardware fails we can restore your latest backup onto a cloud server in a few hours and run you there until it is fixed. Same monthly price, plus a one-time $375 onboarding fee for the site assessment and install.
Response times, stated plainly
These targets apply to tickets opened in the support portal or sent by email to support@allodi.us from a registered customer contact. Server down or data at risk: we respond within one business hour. A core function such as invoicing or orders broken for several people: within one business day. Everything else: within three business days. Outside business hours monitoring keeps running and we respond to a down server on a best-effort basis, without a time promise, unless you have 24/7 outage response. These are targets we report against, not marketing.
24/7 outage response, optional
For $150 a month per Managed Odoo subscription, or $7.50 per internal user if that is more ($150 covers up to 20 internal users), a server that is down or data at risk gets a first response within one hour at any time of day, any day of the week, and monitoring alerts reach us around the clock.
Your own direct emergency line to the person who fixes it. Every 24/7 customer gets a private phone number of its own, given to you at onboarding, or when you add 24/7, and not published, that rings the on-call person directly, day or night. It is for priority 1 outages, and the first response target is the same one hour.
To report an outage, open a ticket in the portal marked P1, email support@allodi.us with P1 at the start of the subject line, or call your direct emergency line or +1 515-644-1400 (if we miss the call, a voicemail with your name, company and a call-back number counts). It covers priority 1 only; everything else keeps the business-hours targets above. Internal users are counted the same way as for Managed Odoo (the highest daily count in the billing period), and it is billed monthly with Managed Odoo, with no proration, plus Iowa sales tax where it applies. Added later, it starts as soon as we switch it on and is first billed on your next monthly invoice. To end it, open a ticket; it comes off your next monthly invoice.
Upgrade to Odoo 19 and de-Enterprise
A fixed-scope project for companies on any earlier version of Odoo, back to Odoo 8, with custom modules, who want to be on the current version and, usually, off the Enterprise license. For Odoo 14 and later the free scan counts what the price depends on; for Odoo 8 to 13 we prepare the quote by hand from a backup of your database. More on the Odoo 19 upgrade and on Enterprise to Community.
What happens
We inventory every installed module and sort it three ways: standard Odoo, community (OCA) modules with a 19.0 branch, and custom code that has to be ported. The custom port is where the cost is, and where AI-assisted work changes the arithmetic. An agent does the mechanical parts of the port (view syntax, renamed fields, removed APIs, list and form changes) module by module, and a human reviews every diff before it goes on the staging server.
If you are leaving Enterprise, we map each Enterprise app you actually use to its OCA or Community replacement, or to "you will not miss it", and show you the difference on a copy of your data before anything is uninstalled. Full accounting, reconciliation, financial reports, quality, field service, document management and e-signature all have community replacements. Studio customizations and marketing automation do not; those are rebuilt as code or dropped, and we tell you which before quoting.
The upgrade itself is rehearsed on a copy of your production database until it runs clean end to end, with your team testing on the copy. Only then do we schedule the real one. The rehearsal script is committed to your repo, so the same thing runs on cutover night.
What you get
- A module inventory and a written plan: keep, replace, port or drop, with the reason for each.
- Custom modules ported to Odoo 19, committed to your repo with one commit per module and a short note on what changed.
- Enterprise apps replaced with OCA or Community equivalents where you chose that, with data carried over.
- A tested, scripted upgrade run on a staging copy, with your team's sign-off before production.
- Production upgrade on a scheduled night, with a rollback point and a documented go/no-go check.
- Two weeks of post-upgrade fixes included.
- No subscription needed: the upgrade is a one-off project. You can take the handover and go; see using us for the upgrade only.
What it costs
- Published price from three counts: custom modules to port (from $0 for none to $4,500 for 16 to 40), $500 per major version jumped and $250 per Enterprise app replaced (see pricing)
- The free scan counts your modules and Enterprise apps, and the project fees in its quote are binding for what the scan counts
- Get an instant estimate from your own module list on the pricing page
How long
- Inventory and plan: one to two weeks
- Port and rehearse: two to eight weeks depending on module count
- Team testing on staging: one to two weeks
- Production upgrade: one scheduled night
- In all: four to twelve weeks, depending on module count
Not included
- Process redesign. The upgrade preserves how you work today
- Rebuilding the Studio customizations you keep as a module, which is part of customization cleanup
- Hosting moves are scoped as service 1; we do them in sequence, never at the same time
On Odoo 20
Odoo 20 is now available, and it brings real improvements. As with every new major version, it will take a few months of maintenance releases before it is ready for day-to-day business. Until then we recommend Odoo 19 for production. 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. Your modules are ported and tested on 19, and when 20 has settled, moving from 19 to 20 is a much shorter step than the one you are taking now. If you want to be on 20 as soon as possible, we will rehearse it on a copy of your data and tell you plainly what we find.
On the Enterprise question
Odoo's Standard plan is sold for Odoo Online only. Keeping Enterprise on your own server needs the Custom plan, whose per-user list price on odoo.com/pricing-plan is about twice Standard's (as of September 2026). That is why many companies who leave Online also look at leaving Enterprise (what the switch involves). It is a real trade: you give up some apps and Odoo's upgrade service, which the Enterprise subscription includes (Enterprise Subscription Agreement, section 4.3), and gain a fixed cost and full control. We show you the trade on your own data before you commit.
Customization cleanup
A fixed-scope project for Odoo systems that have accumulated years of customizations: Studio fields and views, custom and app-store modules, automated actions, server actions, scheduled jobs and report tweaks, many of them added by people who have since moved on.
What happens
The free read-only scan counts your modules and the customizations in your database: Studio models, fields and views, automated and server actions, scheduled actions, reports, view inheritance, access rights and record rules. In the project, we then read the code and check each one: whether it is used, whether it still works, whether something else already does the same job, and whether it carries risk, such as server actions running Python code with elevated rights.
You get a written plan that sorts every item into keep, fix, consolidate or remove, with the reason and the evidence: the field that has been empty for three years, the automation that has errored on every run since the last upgrade, the three reports that print the same thing. Nothing changes until you approve the plan.
The cleanup runs on a copy of your production database first, with your team testing on it. Then it is applied to production in approved batches, each one logged and reversible. Studio customizations you keep can be converted to a proper module in your repository, so they survive upgrades and can be reviewed like any other code.
What you get
- A complete customization inventory with usage evidence for each item.
- A keep, fix, consolidate or remove plan, approved by you before any change.
- Broken automations and views repaired, duplicates consolidated, dead items removed, all on a copy first.
- Kept Studio customizations converted to a versioned module, where you choose that.
- A plain-language document of every customization that remains: what it does, who uses it, why it exists.
- Two weeks of post-cleanup fixes included.
What it costs
- The scan is free, and it counts your customizations for you
- Published tiers by customization count: $750 up to 50, $1,750 up to 150, $3,500 up to 400, and over 400, $3,500 plus $7.50 per customization over 400 (see pricing)
- The price is fixed once the scan runs; a customization that existed on the scan date and the scan missed is our cost
How long
- Free scan, then the cleanup plan: one to two weeks
- Cleanup on a copy and team testing: one to four weeks
- Production changes: approved batches over a few days
Why this matters
Customizations are where upgrades break, where performance quietly degrades and where knowledge walks out the door with the person who built them. A system you can explain line by line is cheaper to run, safer to change and far easier to upgrade.
Things we also do inside those services
These are not separate products. They come up in nearly every engagement, so we name them.
-
Reconciliation forensics
Finding why the bank balance and the ledger disagree: duplicate statement imports, payments with no journal entry behind them, receivables that were collected in the old system. We find and document the cause; your bookkeeper or we fix it under your approval.
-
Performance
Slow list views and reports are usually missing database indexes, a bad domain in a custom module or an undersized worker configuration, not the hosting. We measure first, then fix the actual thing.
-
Mail plumbing
Outgoing SMTP, incoming aliases, bounce handling, SPF and DKIM. For Managed Odoo customers, failed outgoing email is checked every 15 minutes, so a failure reaches us within about 15 minutes, not weeks later.
-
Change log you can read
Point releases change behavior quietly. We keep a plain-language log of what changed in your system and when, so "it worked last week" has an answer.
-
Security hygiene
Multi-factor login for administrators, SSH keys instead of passwords, no shared credentials in spreadsheets, and a firewall in front of the database. The basics, actually done.
-
EU hosting region
As of September 2026, Hetzner Cloud has locations in Germany (Falkenstein and Nuremberg), Finland (Helsinki), the US (Ashburn, Virginia and Hillsboro, Oregon) and Singapore (Hetzner's list). We set servers up in the German, Finnish and US locations, the ones our data processing agreement names. EU/EEA, UK and Swiss companies can keep their Odoo in the EU, under that agreement.
Not sure which one you need?
Enter your companies and users and your price is on screen. The free scan then counts what each service depends on, and you get a report and a quote from the published prices. No sales call is needed, and we are a phone call away if you want one.
- 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. How to start.