Odoo high availability

Odoo high availability means designing the web tier, database, filestore and recovery process together. This page covers the decisions, build sequence, effort drivers and tests for a self-hosted deployment.

On this page

Why Odoo high availability is more than adding a second server

If your sales, inventory or accounting runs on Odoo and you cannot accept long outages, the first thing to understand is that Odoo high availability is a design across several layers, not a single product setting. The layers are web workers, long-polling, PostgreSQL, the filestore, backups and recovery drills, and each one can fail independently. Adding a second application server addresses only one of them. Both the Community and Enterprise editions run on Python and PostgreSQL, so the same architectural problems apply to either edition. On-premise hosting means your organization owns the cloud accounts, data center or network where Odoo runs, which means the availability design, its failure modes and its recovery steps become your responsibility to specify, build and test. DeployOpen works inside that infrastructure, so the design is built in your environment rather than handed off to a vendor-run service. The hard parts are shared state, scheduled jobs and session handling, not the number of web processes. The database and the filestore must be reachable and consistent from every node that serves users. Scheduled actions must run on exactly one node at a time, or invoices, reminders and stock updates can be processed twice or not at all. Sessions must survive a node being removed from the load balancer, so users are not silently logged out or left with half-saved records. Each of these needs a deliberate decision before you count servers. Before you commit to a topology, confirm how the design maps to the Odoo version you run. Worker handling, long-polling behavior, scheduled action configuration and the supported database replication approach can differ between versions, and your current release has its own support window. Ask your team to list the Odoo version, edition, number of companies, custom modules and the outage duration your business can tolerate. Those answers determine which layers need redundancy first. Treat the design as a set of checks you can run and repeat. Each layer needs a named owner, a recovery target that the business has agreed to, and a documented test that proves the target can be met. The sections that follow cover the individual components, but the decision that matters first is whether your organization will test failover and restore on a schedule, because a configuration that has never been exercised is not an availability design yet.

The components an Odoo high availability design must account for

A highly available Odoo deployment is a set of cooperating processes, each holding different state. Duplicating one of them without a plan can corrupt data, duplicate scheduled work or leave users with inconsistent live updates, so each component needs its own decision before the topology is drawn.

Odoo web workers

Odoo web workers serve HTTP requests and hold no business state of their own, because sessions and records live in PostgreSQL and the filestore. They are the easiest component to scale horizontally, but each worker has its own memory and request limits, and those must be sized per node. Confirm the worker count, memory and time limit keys in the Odoo documentation for the exact version you are deploying, since defaults and names change between releases.

Cron and scheduled action process

Scheduled actions run background jobs such as mail queues, stock reservations and recurring invoices, and they write to the database. If several nodes run cron without coordination, the same job can execute twice, sending duplicate emails or posting duplicate entries. Plan for a single dedicated cron process or confirm how your version isolates it, and check the cron-related configuration keys in the Odoo documentation for your version.

Long-polling service for live notifications

The long-polling service delivers live notifications such as chat messages and activity updates through a separate process from the web workers. It holds open connections and keeps its own routing, so a load balancer must send these requests to the correct backend and keep connections alive. Confirm the long-polling port and worker settings for your version, and test notifications across a failover, not only on a healthy cluster.

Load balancer and reverse proxy with TLS termination

The load balancer distributes requests across workers, and the reverse proxy usually terminates TLS and forwards traffic to Odoo. Session affinity, health checks, timeouts for long requests such as report generation, and correct forwarded headers all affect behavior. Certificates and their renewal become a single point of failure unless they are managed on every entry point, so confirm the proxy configuration Odoo expects for your version.

PostgreSQL primary and standby

PostgreSQL holds all transactional data, and Odoo expects one writable database at a time. A standby can take over after a failure, but failover must promote exactly one primary and must redirect Odoo connections, or the application will write to the wrong node or stop. Decide on the replication mode, the failover mechanism and the connection routing, and test promotion with the Odoo version you run, because the database owner and connection settings must match.

Shared filestore for attachments

Odoo stores attachments and many generated files on the filesystem rather than in the database, so every web worker and the cron process must see the same filestore. A local disk on each node will show missing documents after a failover or load balancing change. Choose a shared storage design that all nodes can mount, and include the filestore in the same recovery point as the database so records and their files stay consistent.

Backup target

Backups are the last line of recovery, and they must capture both the PostgreSQL database and the filestore at a consistent point. A backup that restores the database but not the attachments, or that is stored only on the same storage as production, does not protect the deployment. Define the backup target location, retention, encryption and restore test frequency, and confirm the database dump and filestore procedures in the Odoo documentation for your version.

Which high availability topology fits the organization

This table compares four ways to run a self-hosted Odoo, from a single host with verified backups to a managed PostgreSQL service. Read each row against your recovery expectations, team skills and data sensitivity, then check how each option shapes the filestore decision and the replication mode.

TopologyWhen it fitsOperational loadFilestore and replication effect
Single host with multiple workers and verified backupsRecovery can tolerate a rebuild from backup, the team is small, and downtime windows are acceptable to the businessPatching the host, restore drills and monitoring of worker memory and PostgreSQL health fall to one teamFilestore sits on local disk and must be included in backups; no replication is involved, so restore testing carries the weight
Active-passive pair with a standby databaseLeadership wants a faster manual switch to a standby and the team can run a documented failover runbookFailover steps are manual or semi-automated, and both nodes need matching patches, Odoo versions and custom modulesFilestore must be replicated or shared to the standby; asynchronous replication is common here, so confirm the data loss exposure the business accepts
Multi-node web tier behind a load balancer with PostgreSQL replicationSessions and long-polling must survive a node loss, and the team has load balancer and database replication skillsMost operational effort: load balancer health checks, sticky or long-polling routing, replication monitoring and failover testingA shared or network filestore is needed so every web node serves the same attachments; synchronous replication protects committed data but adds write latency
Managed PostgreSQL service with self-hosted Odoo nodesThe organization already runs managed databases and wants the provider to handle database failover and backupsDatabase patching and failover are delegated, while Odoo nodes, filestore and the load balancer remain the team's jobConfirm with the provider how replicas are placed, whether synchronous replication is offered, and how point-in-time restore interacts with the filestore

How to build an Odoo high availability setup in sequence

This sequence turns a single Odoo server into a set of web nodes backed by a replicated database, shared filestore, health-checked load balancer and tested recovery path. Each step closes with a check that proves the layer works before the next one depends on it.

  1. Confirm topology, edition and version

    Your team and the implementation partner agree in writing on the target topology: the number of web nodes, one PostgreSQL primary and one standby, shared storage, the load balancer and the node that runs scheduled jobs. Confirm whether you run Community or Enterprise, since Enterprise needs a subscription code, and confirm the exact Odoo version against the standard support dates in the Odoo documentation. Install every custom and third-party module on that version in a test environment. Done when the topology diagram, version and module list are signed off.

  2. Provision primary and standby database servers

    The infrastructure team builds two PostgreSQL servers in your cloud account, data center or air-gapped network, using the same major version, packages and locale settings on both hosts. Size storage for growth and place replication traffic on a path separate from user traffic where your network allows it. Limit database access to the replication role and the Odoo web nodes. Check: on the primary, create a test table, then confirm the standby shows the same table as a read-only copy.

  3. Configure replication and test manual switchover

    Configure streaming replication from the primary to the standby with a dedicated replication role, store its password in your secrets manager, and allow connections only from the standby address. Then run a planned switchover: stop writes, promote the standby, point the Odoo configuration at the new primary and confirm the application still logs in. Record how long the switchover takes in your own environment so recovery expectations come from measured results. Check: query the replication status view on the primary for state and replay lag, and confirm lag is near zero before the switchover starts.

  4. Share filestore across all web nodes

    Mount one shared storage layer as the Odoo data directory on every web node, so attachments and assets written by one node are available on all others. Set ownership and permissions so the Odoo service account can write on each host. Confirm with the storage vendor that the chosen type supports the file locking and latency your Odoo version expects, then test it under load before go-live. Check: upload an attachment through node A, download it through node B, and compare checksums. Done when both nodes return identical bytes.

  5. Configure load balancer with health checks

    Place a load balancer in front of the web nodes, with health checks that call the health endpoint documented for your Odoo version and remove failing nodes from rotation. Decide whether session stickiness is needed by reading the documentation for your version and testing the behavior, not by assuming it. Route long-polling requests to the separate longpolling worker on each node, following the proxy configuration for that version. Check: stop one web node during an active session, confirm the load balancer marks it down, and confirm live notifications still reach the browser.

  6. Terminate TLS at the reverse proxy

    Install certificates on the load balancer or reverse proxy tier, redirect plain HTTP to HTTPS, and configure Odoo to trust forwarded headers only from that proxy, using the proxy setting documented for your version. Restrict the web nodes so they accept traffic only from the proxy. Check: request the site over HTTP and confirm the redirect, then sign in and confirm generated links and session cookies use HTTPS.

  7. Separate cron execution onto one node

    Disable scheduled action threads on all web nodes using the setting documented for your Odoo version, then enable them on one designated node that runs the job queue. Write down which node holds this role and the runbook step for moving it if that node fails. Without this separation, scheduled actions such as email queues and automated tasks can run once per node. Check: trigger a scheduled action that changes a visible record, then confirm in the server log and the record that it ran exactly once.

  8. Back up and test restore

    Schedule PostgreSQL backups from the primary and archive the filestore on the same schedule, so the database and attachments come from a matching point in time. Restore the latest backup into an isolated test database, then create a duplicate with neutralization so outbound email and integrations stay disabled. Start the restored copy on a web node. Check: the restored database starts, a test user signs in, and a sample record and its attachment open correctly. Repeat this restore on a schedule set by your recovery objectives.

How the design changes by deployment model

This model runs Odoo worker processes and PostgreSQL on one server, often with a reverse proxy in front. It is the simplest design to build and operate, but it has no independent hardware to fail over to. Availability depends on how fast you can restore the server or rebuild it elsewhere, so the design effort goes into backups and a tested restore procedure rather than failover.

  • Shared: Everything, including the database, filestore and worker pool, sits on one host.
  • Failover: None within the host. Recovery is a manual rebuild or restore onto new infrastructure.
  • Backup that must leave the failure domain: A database dump and filestore copy stored on a separate system or location, not only on the same disk or volume.
  • Upgrade rebuild: A test environment built from a production copy, with custom modules ported and the upgraded database tested before cutover.
  • Confirm: The worker and memory settings for your hardware, and the exact backup method, with the Odoo on-premise and source installation documentation.

Before you rely on this model, confirm how long a full restore takes in your environment by running it, not by estimating it.

What drives the effort and cost of Odoo high availability

This table lists the factors that change how much design, build and testing work a resilient self-hosted Odoo needs, and how to keep each one under control. Read each row as a question to answer with your own user counts, database size and compliance obligations before asking for a quote. The main takeaway is that custom code, environment count and recovery test scope usually move effort more than raw hardware does.

DriverWhy it changes effort or costHow to keep it down
Concurrent users and business-critical appsMore concurrent sessions and more apps that must stay up need more application workers, load balancing, and tighter failover targets for each node.Limit the apps placed under the high availability requirement to those that stop revenue or compliance work when down. Confirm peak concurrency with your own logs before sizing.
Database size and attachment volumeLarge PostgreSQL databases take longer to replicate, back up and restore, and a shared filestore grows with attachments that every node must read.Archive old attachments and records, set retention rules for documents, and confirm restore time for your real database size during the design phase.
Custom and third-party modules on every nodeEach module must be identical across all nodes, tested after each change and ported at every version upgrade, which adds build and regression work.Keep custom code small, prefer configuration where possible, and review each third-party module for maintenance status before it joins the high availability build.
Number of environmentsProduction, staging and test copies each need their own database, filestore and configuration, and failover changes must be rehearsed outside production.Create test copies by duplicating the database with neutralization so outgoing email, payment and integration endpoints do not fire, and keep only the environments your change process needs.
Integrations that depend on database reachabilityECommerce, banking, logistics and reporting connections fail or duplicate records during a failover unless their retry and idempotency behavior is designed.Inventory every integration that reads or writes the database, document its retry behavior, and agree which integrations pause during failover.
Compliance requirements for backup retention and access logsRetention periods, encrypted off-site copies, and logs of who accessed the database and filestore add storage, access control and review tasks.Ask your compliance lead to state retention periods and log review obligations in writing before design, then map each one to a backup policy and a log source.
Documented recovery drill scopeA recovery drill that covers every failure mode across every environment takes far more time than one limited to a defined set of scenarios.Scope recovery testing to a written list of scenarios, such as loss of one application node, loss of the primary database and restore from backup, and repeat the drill after each major change.

How to test that Odoo fails over safely

A high availability design is only proven when each failure has been induced on purpose and the result written down. For a self-hosted Odoo deployment, the test plan should cover six behaviours: a web node stopped mid-session, the load balancer removing an unhealthy node, a PostgreSQL switchover, filestore reads from every node, scheduled actions running once, and a restore to a clean host. Each test needs a defined starting state, a single action, an expected result and a recorded outcome. Run the tests in a staging environment built from the same templates as production, and only after the team has confirmed which replication and backup tooling is in use, since the switchover steps depend on it.

Start with the web tier. While a test user is midway through a form with unsaved changes, stop one Odoo worker process or node. Odoo writes records through database transactions, so a record that was saved before the stop should still be present afterwards, and the user should be able to continue after the session is redirected to a surviving node. Record the time of the stop, the user's session behaviour, the exact fields that were saved and reloaded, and any error text shown in the browser. Repeat the test with a long-polling connection open, because the bus and presence features depend on it and failures there are easy to miss in a basic login check. Also confirm that the load balancer marks the stopped node as unhealthy using the health check configured for it, and that traffic stops reaching the node within the interval you have set.

The database test is the one most likely to expose gaps. Trigger a planned switchover from the primary to the standby, or simulate loss of the primary in staging, while a script posts a known set of transactions such as sales orders and journal entries and records each commit it receives. After the switchover, compare the committed list against the database. Every acknowledged transaction must exist, and any transaction that was not acknowledged must be absent or clearly reported as failed. Then confirm that Odoo reconnects to the new primary without a manual restart of the application. Ask your database team to state the replication mode in writing, because asynchronous replication can lose the last transactions before a failure, and that loss is a business decision, not a test pass or fail.

Two checks cover shared state. First, read attachments and generated reports from every web node and confirm that each returns the same file, using a file that was uploaded through a different node. This verifies that the shared filestore is mounted identically everywhere, and it catches stale caches. Second, check scheduled actions. Confirm that each scheduled action runs once per interval across the cluster, by looking at the logged execution history and at the side effects, such as one invoice reminder email per customer rather than one per node. If duplicates appear, the team must decide how cron workers are assigned before go-live. Record the action names, the expected run count, the observed run count and the node that ran each one.

The restore test proves the backup, not the replication. Restore the most recent backup to a clean host that has no access to production networks, apply neutralization so that outbound email and payment integrations cannot reach live systems, and then sign in with a named test user. Run a small set of key transactions, such as creating a quotation, confirming it and posting an invoice, and compare the results with the source. Record the backup timestamp, the restore duration, the Odoo and PostgreSQL versions, and the list of checks passed. Sign-off should come from the business process owner for the transaction checks and from the infrastructure owner for the restore. Repeat the full plan at least after each Odoo version upgrade, after any change to a custom module that touches models, scheduled actions or the filestore, and after changes to the load balancer or database topology. Schedule a shorter subset on a regular cadence agreed with the operations team, and ask your implementation partner to confirm how the plan maps to the support retainer, if one is in place.

Securing replication, backups and administrator access

A highly available Odoo deployment multiplies the places where credentials, data copies and privileged actions exist. The controls below cover the replication path, the backup chain and the operator accounts that can trigger a failover or restore, so that resilience does not create new routes for an attacker or accidental exposure.

Least-privilege replication credentials

PostgreSQL replication should use a dedicated role that can only replicate, with no rights to create databases or log in as application users. Keep that traffic on a separate network path from client connections, and restrict which hosts may connect in the database host-based access rules. Ask the team to confirm the replication role's exact privileges against the PostgreSQL version you run.

Encrypted backups in transit and at rest

Database dumps and filestore archives contain customer, financial and employee records, so they need encryption both while moving between hosts and while stored. Confirm which encryption method the backup tooling uses, where the keys live, and whether a restore can be performed without the operator holding long-lived key material on a workstation.

Separated backup repository credentials

The account that writes backups should not be the account that runs Odoo or administers the production database. Store backup credentials in a separate secrets store, give the repository write-once or retention-locked settings where the platform supports them, and confirm that a compromised production host cannot delete or overwrite existing backups.

Odoo master password and database manager

The master password in the Odoo configuration file controls the database manager, which can create, duplicate, back up and drop databases. Set a strong value outside version control, restrict or disable the database manager on production nodes where it is not needed, and make sure every node in the cluster uses a consistent and tightly held setting.

TLS between load balancer and nodes

Traffic from the load balancer to Odoo workers crosses a network segment that may not be trusted, especially in multi-zone or shared data center designs. Where that segment is untrusted, terminate TLS at the edge and re-encrypt to each node, validate node certificates, and confirm that long-polling connections are handled over the same encrypted path.

Operator access logging for failover and restore

Accounts that can trigger a failover, promote a replica or restore a backup have the widest impact on data integrity. Log each login, privileged command and restore action with the operator identity, send those logs off the host, and review them after every failover test. Confirm sign-in options such as LDAP, Google or Microsoft Azure and two-factor authentication on each node before a failover test, as Odoo documents them for each installation.

What to monitor, back up, patch and document after go-live

After go-live, high availability depends on the checks your team runs every day. Start with PostgreSQL replication lag between the primary and each standby, because a lagging standby is the most likely reason a failover would lose recent orders or stock moves. Track free disk space on the database volume and on the shared filestore separately, since attachments and generated reports fill the filestore while the database grows through transactions. Watch each Odoo worker's health and the length of the scheduled actions queue, since a backlog of stalled cron jobs often shows up as slow invoicing or stuck imports before anyone reports an outage. Confirm that the load balancer health checks report the correct state for every Odoo node, and track certificate expiry on the reverse proxy and any internal endpoints. Set alert thresholds with your operations team and confirm the metric names in your own monitoring tool.

Backups carry several decisions that only the client can make. Choose the frequency of full database backups and of continuous WAL archiving, the retention period for each, and whether copies live off the primary site and in a separate account or data center. Back up the filestore on the same schedule as the database so that attachments match the records that reference them. Decide who may trigger a restore, how backups are encrypted and where the keys are held, and how long each backup set can be kept before deletion, taking into account your own legal and audit requirements. Restore tests should run at a cadence you set, into an isolated environment, with the results recorded in a test log. A backup that has never been restored is an assumption, and the test log is the evidence that the procedure works.

Patching has a fixed boundary. Odoo standard support covers the first three years after a major release on Odoo Online, Odoo.sh and on-premise, and security patches are provided only during that window. Odoo 19.0 is covered by standard support until September 2028, while Odoo 17.0 standard support ended in September 2026, so a deployment still on 17.0 no longer receives security patches from Odoo. Apply Odoo minor and security updates first to a staging copy of the database and filestore, then to the nodes in a rolling order so the cluster keeps serving requests. Patching also covers the operating system, PostgreSQL, the reverse proxy and the load balancer, and these follow their own vendor schedules, so assign an owner to each in the runbook.

Major upgrades differ by hosting model. On Odoo Online and Odoo.sh, major version upgrades are mandatory every two years, so those customers should plan the next upgrade into their budget and change calendar in advance. On-premise deployments do not face that mandate, but the support dates still set the practical limit: plan each major upgrade before the current version leaves standard support, because extended support for on-premise is paid, limited, and not a substitute for planned work. Odoo's upgrade service requires an Enterprise subscription for on-premise use. Finally, hand the system over with documentation that someone other than the original builders can use: the topology diagram, configuration files with secrets removed and held in your vault, failover and restore runbooks, the restore test log, and a list of every node with its role.

Questions teams ask before building Odoo high availability

How much work is a high availability Odoo setup, and what drives the cost?

The work scales with how many components you run and how many environments must match. A resilient design usually includes several Odoo application nodes, a load balancer, a PostgreSQL primary with a replica, backups, a filestore that all nodes can read, and long-polling handling for live features. Each component adds build, configuration, testing and documentation work. The main cost drivers are the number of nodes and sites, whether you already run PostgreSQL replication and shared storage, how many custom modules and third-party apps must be verified under failover, how strict your recovery objectives are, and how much of the recovery testing must be documented for auditors. Ask for a fixed-scope quote based on a written scope that lists each component, environment and test, and separates one-time build work from recurring operations.

Can our team build Odoo high availability without an outside partner?

Yes, if your team already has Linux, PostgreSQL, networking and storage skills and can run failover tests on a schedule. Many teams do this internally. The difficult parts are rarely the initial install. They are keeping the nodes identical, making sure the filestore and sessions behave the same on every node, proving that a replica can be promoted, and repeating those tests after each Odoo upgrade or custom module change. Before you start, check whether one person owns the database end to end, whether you have a test environment that mirrors production, and whether you can book maintenance windows for failover drills. If any of these is missing, a partner can supply the build and test plan, but your team still needs to own operations after handover.

What do we need to provide for the engagement to succeed?

Four inputs matter most. First, infrastructure access: accounts, network paths, DNS, certificates and the ability to create or change load balancers, database hosts and storage in your own environment. Second, a named database owner who can approve schema, replication and backup decisions. Third, a decision on recovery objectives: how much data loss and how much downtime the business accepts for each service, because these values set the replication and backup design. Fourth, test windows: dates when failover, restore and load tests can disrupt a non-production copy and, when agreed, production. Also expect to provide a copy of your custom modules and a list of third-party apps so they can be checked under failover. Missing any of these usually extends the schedule.

How long does it take to reach a verified high availability state?

The duration depends on the scope, not on a standard number of weeks. Timing is set by how quickly you provide access and decisions, how many environments must be built, how many failover and restore tests are needed, and how long your change approvals take. Verification is the slowest phase because each test must be run, recorded, and repeated until results are consistent. Ask for a timeline in the written scope that shows dependencies on your access, decisions and test windows, plus the acceptance criteria that define a verified state. Treat any duration you hear without a written scope as a rough guess.

How do Odoo upgrades change a high availability design?

Each major Odoo upgrade can change database schema, module code and behavior, so the high availability setup must be retested afterward. In practice, you upgrade a copy of the database in a test environment that mirrors the cluster, then run failover, restore and load checks against it before scheduling production. Custom modules are often the largest source of effort because they may need porting. Odoo documents standard support for three years after a major release, and Odoo Online and Odoo.sh require major upgrades every two years. Plan your upgrade path inside the support window so that each version change includes a recovery test cycle.

Can Odoo Community edition run in this high availability design?

Community edition is open source under LGPL-3.0 and can run multiple application nodes behind a load balancer, with PostgreSQL replication and backups configured by your team. The limits are commercial and operational. Odoo's upgrade service and Enterprise features are not available on Community, and Odoo's pricing page indicates that only the Custom plan is offered for on-premise hosting with custom modules. Check which Enterprise modules your business depends on, whether you need Odoo's support for security updates, and whether your upgrade path depends on the upgrade service. Confirm these points with Odoo before choosing an edition, because they affect the cost of ownership more than the high availability design itself.

Is an implementation partner worth it for a small team?

It can be, when the team is small and cannot spare people for build work, testing and handover. A partner's value is the written scope, the tested runbooks, the failover evidence and the knowledge transfer, which reduce the risk of an untested recovery plan. The trade-off is cost against internal learning and long-term ownership. For a small team, ask for a fixed-scope quote that lists deliverables such as configuration, test scripts, documentation and training, plus the support terms after handover. DeployOpen implements, hardens, backs up, upgrades, documents and supports self-hosted open-source platforms in your own infrastructure, and most engagements are fixed-scope and agreed in writing before work starts. Ongoing support is available as a retainer.

How DeployOpen scopes, builds and hands over Odoo high availability

DeployOpen plans, builds, documents and hands over self-hosted Odoo high availability inside your own infrastructure, whether that is your cloud account, data center or air-gapped network. Engagements are fixed-scope, with scope, deliverables and timelines agreed in writing before work starts.

How we scope

  • Map the Odoo apps, user counts and peak operating periods that the availability design must protect
  • Confirm the edition, hosting model and whether the Enterprise subscription is in place for on-premise use
  • Agree in writing which failure cases are covered, such as a node loss, database failover or storage outage

How we build

  • Deploy multiple Odoo workers behind a load balancer with a shared filestore and a documented session approach
  • Configure PostgreSQL replication and scheduled backups, then test restores into a separate environment
  • Set up long-polling and reverse proxy routing, and verify behavior under node failure before handover

How we hand over

  • Deliver architecture diagrams, configuration records and runbooks for failover and restore steps
  • Document recovery test results, including measured restore points and the procedures that were actually exercised
  • Walk your operations team through monitoring, alerting and the steps to follow during an incident

How we support

  • Offer ongoing support, upgrades and recovery testing as a retainer after go-live
  • Re-run failover and restore tests after Odoo version upgrades, infrastructure changes or new custom modules
  • Confirm with your team which support responsibilities stay in-house and which the retainer covers

Sources and further reading

Talk to our team.

Tell us what you're working on, whether it's a deployment, an audit, a security test or a cyber range. You'll speak with an engineer who can help you scope it.

  • 30-minute call: free, with no obligation.
  • NDA on request: we can sign before you share details.
  • Clear next steps: a scope and plan after the call.