First hour: stop the damage
- Find out which kind of failure it is. A server or hosting failure (nothing loads) needs a restore. An application error (Odoo loads but an action fails) usually needs a configuration fix, not a restore.
- Do not let people keep working around it. Invoices typed into spreadsheets during an outage have to be reconciled later. Agree one temporary process and write it down.
- Name an owner. In one incident we handled, the hardest problem was not technical: nobody was sure who owned the system. Settle that first.
If the server failed: restore and measure
- Locate every backup and note its date. The newest backup sets the best case for what can be recovered.
- Restore to a separate instance first. Never restore over the only copy you have.
- Measure the gap. Compare the last entries per journal with what finance knows was posted. After one hardware failure we restored an Odoo instance and found the newest usable backup was more than a year old, with thousands of journal entries missing.
- Put the cut-off date in writing. Finance needs an exact date to rebuild from, and leadership needs to know what was lost.
- Decide how to rebuild. Re-enter, import from bank statements, or accept the old system as the record for that period.
If an action fails: read the error
Odoo errors look alarming but often point to one bad record. In one case, invoice creation failed with an RPC error. The cause was an analytic distribution rule with empty conditions, which matched every invoice line. Deleting that one record restored invoicing. When a similar error later returned on one user's account, the cause was an incomplete analytic distribution left on that account, and it was fixed the same way.
Afterwards: make it boring
- Keep backups in a second location and test a restore at least every quarter.
- Choose hosting deliberately. Odoo Online is simplest but allows no custom modules; Odoo.sh supports custom code with managed hosting; self-hosting gives control and makes backups your job.
- Watch subscriptions. A lapsed Odoo subscription can leave you running an unsupported instance just to keep access to statutory records.
- Write the incident up: what failed, what was lost, what changed. It protects everyone involved.
This guide is general information from an engineering perspective, not legal or financial advice.
