--- title: Why Odoo for my ERP url: https://blog.guigpap.com/en/infrastructure/why-odoo/ url_md: https://blog.guigpap.com/en/infrastructure/why-odoo.md category: case-studies date: '2026-01-20' maturite: production techno: - odoo application: - business --- # Why Odoo for my ERP > Comparing open-source ERPs and explaining the choice of Odoo 18 for project management ## 1. What? — Definition and context **Odoo** is a **horizontal** ERP/CRM: a generalist piece of software designed to be used across every industry. The same technical foundation serves very different companies, with adaptation through configuration, extra modules or custom development. > **Note - Horizontal vs vertical ERP** > > A **horizontal ERP** ships with cross-cutting standard features (CRM, projects, invoicing). A **vertical ERP** is specialised for a sector (healthcare, construction, retail). Odoo is horizontal but can be verticalised through modules. ### Personal context As a solo developer running several projects, I needed to consolidate: | Need | Previous tool | Problem | |------|---------------|---------| | Projects and tasks | GitHub Issues + Trello | Scattered data | | Commit tracking | GitHub alone | No link to business tasks | | Contacts and leads | Spreadsheet + notes | No structured CRM | | Time spent | Nothing | Quote estimates done by guesswork | ### Odoo Community at a glance | Property | Value | |----------|-------| | **License** | LGPL v3 (free, self-hosted) | | **Language** | Python 3 + PostgreSQL | | **Architecture** | MVC with proprietary ORM | | **API** | XML-RPC (native) + REST (module) | | **Extensibility** | Inheritance-based addon system | --- ## 2. Why? — Stakes and motivations ### Comparing the alternatives | Criterion | Odoo 18 | ERPNext | Dolibarr | Notion/Trello | |-----------|---------|---------|----------|---------------| | **Open-source** | Yes (Community) | Yes | Yes | No | | **Self-hosted** | Yes | Yes | Yes | No | | **Native API** | XML-RPC + REST | REST | REST | REST | | **Built-in modules** | 30+ apps | 13 modules | 20+ modules | Third-party apps | | **Extensibility** | Python (addons) | Python/JS | PHP | Limited | | **UI** | Modern | Modern | Dated | Modern | | **Resources** | 1.5 GB RAM | 2+ GB RAM | 512 MB RAM | Cloud | ### Decision drivers for Odoo **1. Complete and integrated ERP** Odoo Community ships the essential modules for free: - **Projects** — Kanban, Gantt, tasks, sub-tasks - **CRM** — Pipeline, leads, opportunities - **Contacts** — Companies, individuals, tags - **Timesheets** — Time tracking per task Every module shares the same database and is naturally interconnected. **2. Native N8N integration via XML-RPC** The Odoo XML-RPC API is stable and well documented. N8N talks to Odoo directly without Zapier or paid integrations: ```javascript // Create a task from a GitHub webhook { "model": "project.task", "method": "create", "args": [{ "name": "Issue #123: Fix login bug", "project_id": 1, "x_github_issue_id": 123, "x_github_url": "https://github.com/owner/repo/issues/123" }] } ``` **3. Self-hosted = data sovereignty** | Benefit | Detail | |---------|--------| | **Ownership** | Data on my VPS, not at a third party | | **No limits** | Unlimited rows, users, API calls | | **Resilience** | Works even offline | | **GDPR** | Compliant by design | **4. Python extensibility (custom addons)** Odoo's inheritance system lets you extend any model. Every custom field uses the `x_` prefix, which never collides with Odoo's native fields: ```python # addons/project_github_sync/models/project_task.py class ProjectTask(models.Model): _inherit = 'project.task' x_github_issue_id = fields.Integer(string='GitHub Issue Number') x_github_url = fields.Char(string='GitHub URL') x_github_repo = fields.Char(string='GitHub Repo (owner/repo)') x_github_commit_ids = fields.One2many( 'project.task.github.commit', 'task_id', string='Linked Commits', ) ``` > **Tip - Odoo inheritance** > > `_inherit` extends existing models without changing Odoo's source. Customisations survive upgrades. --- ## 3. How? — The project_github_sync addon To address the GitHub centralisation need, I built a custom addon. ### Features | Feature | Description | |---------|-------------| | **Two-way sync** | GitHub issues ↔ Odoo tasks | | **Linked commits** | Every commit referencing an issue is recorded | | **Synced states** | Closing a GitHub issue closes the Odoo task | | **Configurable mapping** | Map each repo to an Odoo project | ### Data models ``` project.project ├── x_github_sync_enabled (boolean) ├── x_github_repo (char): "owner/repo" └── task_ids → project.task project.task ├── x_github_issue_id (integer) ├── x_github_url (char) ├── x_github_repo (char) ├── x_github_commit_ids → project.task.github.commit ├── x_github_commit_count (integer, compute) ├── x_github_milestone_id (integer) └── x_github_parent_issue_id (integer) project.task.github.commit (new model) ├── task_id → project.task ├── sha (char) ├── sha_short (char) ├── message (text) ├── author (char) ├── url (char) └── commit_date (datetime) ``` The addon also adds 13 `x_claude_*` fields for Claude Code telemetry, 2 `x_ai_*_triaged_at` fields for AI double-triage, and 2 `x_estimated_hours` / `x_complexity` fields for estimation. See [Odoo 18 on Docker](/en/infrastructure/odoo-18-setup/) for the full list. ### Integration architecture ```mermaid flowchart TD subgraph GH["GitHub"] direction TB G1["Issues · opened, closed, edited, labeled…"] G2["Pull Requests"] G3["Push events · commits"] end subgraph N8N["N8N · github-project-sync"] direction TB N1["Parse event type"] N2["Look up mapping · Data Table"] N3["Transform data"] N4["Call Odoo XML-RPC"] end subgraph Odoo["Odoo 18"] direction TB O1["project.project · linked repos"] O2["project.task · synced issues"] O3["project.task.commit · history"] end GH -->|Webhooks| N8N N8N -->|XML-RPC| Odoo ``` --- ## 4. What if? — Limits and evolutions ### What Odoo does well | Strength | Detail | |----------|--------| | **Project management** | Native Kanban/Gantt UI | | **Modern UI** | Responsive, intuitive | | **Stable API** | XML-RPC is documented with few breaking changes | | **Ecosystem** | Thousands of community addons | ### What Odoo does less well | Limit | Impact | Alternative if critical | |-------|--------|------------------------| | **No real-time collaboration** | No simultaneous editing | Notion, Outline | | **Learning curve** | Training needed | Trello, Plane | | **Paid Enterprise** | Marketing automation, signatures | Budget or N8N workaround | | **Memory overhead** | ~1.5 GB RAM minimum | Dolibarr if resources are tight | ### The hidden cost of customisation Odoo is **fast to deploy** (short time-to-market) but **customisation can be expensive**: | Type of adaptation | Effort | Example | |--------------------|--------|---------| | **Configuration** | Low | Change displayed fields | | **Existing module** | Medium | Install an OCA addon | | **Custom development** | High | Build `project_github_sync` | > **Caution - Business specifics** > > A horizontal ERP covers generic needs. Business specifics always require custom development. Plan that budget when picking the tool. ### Decision grid: Odoo or something else? | If your top need is… | Pick… | |----------------------|-------| | Real-time collaborative docs | Notion, Outline | | Lightweight ERP + simple invoicing | Dolibarr | | Manufacturing / production | ERPNext | | Pure task management | Plane, Focalboard | | Full self-hosted ERP + API | **Odoo Community** | ### Future evolutions under consideration | Evolution | Module/Action | Expected benefit | |-----------|---------------|------------------| | Full CRM | Native module | Structured sales pipeline | | Automatic quotes | Timesheets + templates | History-based estimation | | Marketing automation | Enterprise or N8N | Nurturing sequences | --- ## Related pages ### Infrastructure - [Odoo 18 on Docker](/en/infrastructure/odoo-18-setup/) — Deployment guide - [VPS Architecture](/en/infrastructure/architecture-vps/) — Overview ### Workflows - [GitHub-Odoo sync](/en/workflows/github-odoo-sync/) — Full sync workflow - [N8N in queue mode](/en/infrastructure/n8n-queue-mode/) — Automation ### Reference - [Glossary](/en/reference/glossary/) — ERP, XML-RPC, addon ## Metadonnees agent - Cet article est issu du blog GuiGPaP Lab. - Contexte global du blog: https://blog.guigpap.com/llms.txt - Contact auteur: https://odoo.guigpap.com/mon-cv - Licence: CC-BY-SA 4.0