How to Rescue a Failed Odoo Implementation: A Consultant's Triage Playbook
The call usually comes about eleven months in. Go-live happened, sort of. Finance is still closing the month in a spreadsheet, the warehouse team keeps a parallel notebook, and someone has quietly stopped using the CRM entirely. The system technically works. Nobody trusts it. Odoo rarely fails because Odoo is bad software. It fails because the implementation encoded somebody's misunderstanding of the business into 40 custom modules, and now every fix breaks two things. Panorama Consulting's 2026 ERP Report still puts cost overruns and schedule slippage among the most persistent problems across ERP projects of every size — and in our experience the overrun is almost never in licensing. It's in the rework. Here's the triage sequence we actually run when we inherit a broken deployment, in the order we run it. Step 1: Read the database before you read the code Skip the codebase for a day. Open PostgreSQL and ask the system what people are really doing. A few queries tell you more than a week of stakeholder interviews: Row counts per model over time. If crm.lead stopped growing in March, sales abandoned the module in March. Nobody will volunteer this in a meeting. ir.model.fields where state = 'manual' . Every field created through Studio or a quick patch. A healthy mid-size deployment has a few dozen. We've opened databases with 900. That number is a direct measure of how much undocumented business logic is floating outside version control. stock.quant versus what the warehouse counts. Any gap here means inventory valuation is wrong, which means the P&L is wrong, which is usually the real reason finance went back to Excel. ir_cron last-run timestamps and failure counts. Silently dead crons are behind a surprising share of "the system doesn't update" complaints. Direct SQL writes. Grep the custom modules for self.env.cr.execute with UPDATE or INSERT . Every one of those bypasses the ORM, so computed fields never recomputed and stored values are now lying to you. This ste