Module install failures show in server logs as XML parse errors, missing dependencies, Python ImportError, or database constraint violations. Read traceback from odoo-bin shell, verify depends in __manifest__.py, upgrade dependency chain with -u, fix inherited views with invalid xpath, and clear orphaned ir.module.module states only after understanding root cause—not by deleting module rows casually.
Steps
- Reproduce with odoo-bin -i module -d db --stop-after-init --log-level=debug.
- Read traceback for KeyError on model, xpath view not found, or NOT NULL constraint.
- Confirm module path on addons_path and correct branch for Odoo version.
- Install dependencies first; resolve version pins on OCA repos.
- For update errors, open offending XML in data files and match target view structure.
- Use Settings → Technical → Views to identify broken inherited views and reset if needed.
- After fix, update module list and upgrade with -u from maintenance window.
Common mistakes
- Setting module state to installed manually in SQL without fixing code.
- Mixing Enterprise modules on Community database.
- Duplicate XML IDs from copied modules.
- Skipping asset bundle rebuild after JS module errors.
- Updating production without --stop-after-init test on staging.
Odoo version notes
Module mechanics are identical on Odoo 16–18; view inheritance broke most on 16→17 jumps. Odoo.sh build logs show install failures on deploy. Enterprise apps require valid subscription on database. Community OCA modules need branch 16.0/17.0/18.0 explicitly checked out.
When to bring in help
If the fix touches custom modules, regulated traceability, or production outages, a focused rescue sprint beats months of trial and error. See our Odoo service.