Pourquoi Odoo pour mon ERP
1. Quoi ? — Définition et contexte
Section intitulée « 1. Quoi ? — Définition et contexte »Odoo est un ERP/CRM horizontal : un logiciel généraliste conçu pour être utilisé par tous les secteurs d’activité. Le même socle technique sert des entreprises très différentes, l’adaptation se faisant via paramétrage, modules additionnels ou développements spécifiques.
Contexte personnel
Section intitulée « Contexte personnel »En tant que développeur solo gérant plusieurs projets, j’avais besoin de centraliser :
| Besoin | Outil précédent | Problème |
|---|---|---|
| Projets et tâches | GitHub Issues + Trello | Données éparpillées |
| Suivi des commits | GitHub seul | Pas de lien avec les tâches business |
| Contacts et leads | Tableur + notes | Pas de CRM structuré |
| Temps passé | Rien | Estimation des devis au doigt mouillé |
Caractéristiques d’Odoo Community
Section intitulée « Caractéristiques d’Odoo Community »| Caractéristique | Valeur |
|---|---|
| Licence | LGPL v3 (gratuit, self-hosted) |
| Langage | Python 3 + PostgreSQL |
| Architecture | MVC avec ORM propriétaire |
| API | XML-RPC (natif) + REST (module) |
| Extensibilité | Système d’addons hérités |
2. Pourquoi ? — Enjeux et motivations
Section intitulée « 2. Pourquoi ? — Enjeux et motivations »Comparaison des alternatives
Section intitulée « Comparaison des alternatives »| Critère | Odoo 18 | ERPNext | Dolibarr | Notion/Trello |
|---|---|---|---|---|
| Open-source | Oui (Community) | Oui | Oui | Non |
| Self-hosted | Oui | Oui | Oui | Non |
| API native | XML-RPC + REST | REST | REST | REST |
| Modules intégrés | 30+ apps | 13 modules | 20+ modules | Apps tierces |
| Extensibilité | Python (addons) | Python/JS | PHP | Limité |
| Interface | Moderne | Moderne | Datée | Moderne |
| Ressources | 1.5 GB RAM | 2+ GB RAM | 512 MB RAM | Cloud |
Critères de décision pour Odoo
Section intitulée « Critères de décision pour Odoo »1. ERP complet et intégré
Odoo Community inclut gratuitement les modules essentiels :
- Projets — Kanban, Gantt, tâches, sous-tâches
- CRM — Pipeline, leads, opportunités
- Contacts — Entreprises, individus, tags
- Timesheets — Suivi du temps par tâche
Tous ces modules partagent la même base de données et sont liés naturellement.
2. Intégration N8N native via XML-RPC
L’API XML-RPC d’Odoo est stable et bien documentée. N8N parle directement à Odoo sans Zapier ni intégrations payantes :
// Créer une tâche depuis un webhook GitHub{ "model": "project.task", "method": "create", "args": [{ "name": "Issue #123: Fix login bug", "project_id": 1, "github_issue_id": 123, "github_issue_url": "https://github.com/..." }]}3. Self-hosted = souveraineté des données
| Avantage | Détail |
|---|---|
| Propriété | Données sur mon VPS, pas chez un tiers |
| Pas de limites | Lignes, utilisateurs, API calls illimités |
| Résilience | Fonctionne même hors ligne |
| RGPD | Conforme par design |
4. Extensibilité Python (addons custom)
Le système d’héritage Odoo permet d’étendre n’importe quel modèle :
class ProjectTask(models.Model): _inherit = 'project.task'
github_issue_id = fields.Integer(string='GitHub Issue ID') github_issue_url = fields.Char(string='GitHub Issue URL') github_state = fields.Selection([ ('open', 'Open'), ('closed', 'Closed') ], string='GitHub State')3. Comment ? — L’addon project_github_sync
Section intitulée « 3. Comment ? — L’addon project_github_sync »Pour répondre au besoin de centralisation GitHub, j’ai créé un addon custom.
Fonctionnalités
Section intitulée « Fonctionnalités »| Fonction | Description |
|---|---|
| Sync bidirectionnelle | Issues GitHub ↔ Tâches Odoo |
| Commits liés | Chaque commit référençant une issue est enregistré |
| États synchronisés | Fermer une issue GitHub ferme la tâche Odoo |
| Mapping configurable | Associer chaque repo à un projet Odoo |
Modèles de données
Section intitulée « Modèles de données »project.project├── github_repo (char): "owner/repo"├── github_enabled (boolean)└── task_ids → project.task
project.task├── github_issue_id (integer)├── github_issue_url (char)├── github_state (selection)└── commit_ids → project.task.commit
project.task.commit (nouveau modèle)├── task_id → project.task├── sha (char)├── message (text)├── author (char)├── url (char)└── date (datetime)Architecture d’intégration
Section intitulée « Architecture d’intégration »┌─────────────────────────────────────────────────────────┐│ GitHub ││ ├─ Issues (opened, closed, edited, labeled...) ││ ├─ Pull Requests ││ └─ Push events (commits) │└─────────────────────┬───────────────────────────────────┘ │ Webhooks ▼┌─────────────────────────────────────────────────────────┐│ N8N (github-project-sync) ││ ├─ Parse event type ││ ├─ Lookup mapping (Data Table) ││ ├─ Transform data ││ └─ Call Odoo XML-RPC │└─────────────────────┬───────────────────────────────────┘ │ XML-RPC ▼┌─────────────────────────────────────────────────────────┐│ Odoo 18 ││ ├─ project.project (repos liés) ││ ├─ project.task (issues synchro) ││ └─ project.task.commit (historique) │└─────────────────────────────────────────────────────────┘4. Et si ? — Limites et évolutions
Section intitulée « 4. Et si ? — Limites et évolutions »Ce qu’Odoo fait bien
Section intitulée « Ce qu’Odoo fait bien »| Point fort | Détail |
|---|---|
| Gestion de projets | Interface Kanban/Gantt native |
| UI moderne | Responsive, intuitive |
| API stable | XML-RPC documenté, peu de breaking changes |
| Écosystème | Milliers d’addons communautaires |
Ce qu’Odoo fait moins bien
Section intitulée « Ce qu’Odoo fait moins bien »| Limite | Impact | Alternative si critique |
|---|---|---|
| Pas de collaboration temps réel | Pas d’édition simultanée | Notion, Outline |
| Courbe d’apprentissage | Formation nécessaire | Trello, Plane |
| Enterprise payant | Marketing automation, signatures | Budget ou contournement N8N |
| Overhead mémoire | ~1.5 GB RAM mini | Dolibarr si ressources limitées |
Le coût caché de la personnalisation
Section intitulée « Le coût caché de la personnalisation »Odoo est rapide à déployer (time-to-market court) mais la personnalisation peut être coûteuse :
| Type d’adaptation | Effort | Exemple |
|---|---|---|
| Paramétrage | Faible | Changer les champs affichés |
| Module existant | Moyen | Installer un addon OCA |
| Développement spécifique | Élevé | Créer project_github_sync |
Grille de décision : Odoo ou autre ?
Section intitulée « Grille de décision : Odoo ou autre ? »| Si votre besoin prioritaire est… | Choisissez… |
|---|---|
| Collaboration docs temps réel | Notion, Outline |
| ERP léger + facturation simple | Dolibarr |
| Manufacturing / production | ERPNext |
| Juste gestion de tâches | Plane, Focalboard |
| ERP complet self-hosted + API | Odoo Community |
Évolutions futures envisagées
Section intitulée « Évolutions futures envisagées »| Évolution | Module/Action | Bénéfice attendu |
|---|---|---|
| CRM complet | Module natif | Pipeline de ventes structuré |
| Devis automatiques | Timesheets + Templates | Estimation basée sur l’historique |
| Marketing automation | Enterprise ou N8N | Séquences de nurturing |
Pages liées
Section intitulée « Pages liées »Infrastructure
Section intitulée « Infrastructure »- Odoo 18 sur Docker — Guide de déploiement
- Architecture VPS — Vue d’ensemble
Workflows
Section intitulée « Workflows »- GitHub-Odoo Sync — Workflow de synchronisation complet
- N8N en mode Queue — Automatisation
Référence
Section intitulée « Référence »- Glossaire — ERP, XML-RPC, Addon