Aller au contenu

Pourquoi Odoo pour mon ERP

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.

En tant que développeur solo gérant plusieurs projets, j’avais besoin de centraliser :

BesoinOutil précédentProblème
Projets et tâchesGitHub Issues + TrelloDonnées éparpillées
Suivi des commitsGitHub seulPas de lien avec les tâches business
Contacts et leadsTableur + notesPas de CRM structuré
Temps passéRienEstimation des devis au doigt mouillé
CaractéristiqueValeur
LicenceLGPL v3 (gratuit, self-hosted)
LangagePython 3 + PostgreSQL
ArchitectureMVC avec ORM propriétaire
APIXML-RPC (natif) + REST (module)
ExtensibilitéSystème d’addons hérités

CritèreOdoo 18ERPNextDolibarrNotion/Trello
Open-sourceOui (Community)OuiOuiNon
Self-hostedOuiOuiOuiNon
API nativeXML-RPC + RESTRESTRESTREST
Modules intégrés30+ apps13 modules20+ modulesApps tierces
ExtensibilitéPython (addons)Python/JSPHPLimité
InterfaceModerneModerneDatéeModerne
Ressources1.5 GB RAM2+ GB RAM512 MB RAMCloud

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,
"x_github_issue_id": 123,
"x_github_url": "https://github.com/owner/repo/issues/123"
}]
}

3. Self-hosted = souveraineté des données

AvantageDétail
PropriétéDonnées sur mon VPS, pas chez un tiers
Pas de limitesLignes, utilisateurs, API calls illimités
RésilienceFonctionne même hors ligne
RGPDConforme par design

4. Extensibilité Python (addons custom)

Le système d’héritage Odoo permet d’étendre n’importe quel modèle. Tous les champs custom utilisent le préfixe x_ qui n’entre jamais en collision avec les champs natifs Odoo :

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',
)

Pour répondre au besoin de centralisation GitHub, j’ai créé un addon custom.

FonctionDescription
Sync bidirectionnelleIssues GitHub ↔ Tâches Odoo
Commits liésChaque commit référençant une issue est enregistré
États synchronisésFermer une issue GitHub ferme la tâche Odoo
Mapping configurableAssocier chaque repo à un projet Odoo
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 (nouveau modèle)
├── task_id → project.task
├── sha (char)
├── sha_short (char)
├── message (text)
├── author (char)
├── url (char)
└── commit_date (datetime)

L’addon ajoute également 13 champs x_claude_* pour la télémétrie Claude Code, 2 champs x_ai_*_triaged_at pour le double-triage AI, et 2 champs x_estimated_hours / x_complexity pour l’estimation. Voir Odoo 18 sur Docker pour le détail.

Webhooks

XML-RPC

Odoo 18

project.project · repos liés

project.task · issues synchro

project.task.commit · historique

N8N · github-project-sync

Parse event type

Lookup mapping · Data Table

Transform data

Call Odoo XML-RPC

GitHub

Issues · opened, closed, edited, labeled…

Pull Requests

Push events · commits


Point fortDétail
Gestion de projetsInterface Kanban/Gantt native
UI moderneResponsive, intuitive
API stableXML-RPC documenté, peu de breaking changes
ÉcosystèmeMilliers d’addons communautaires
LimiteImpactAlternative si critique
Pas de collaboration temps réelPas d’édition simultanéeNotion, Outline
Courbe d’apprentissageFormation nécessaireTrello, Plane
Enterprise payantMarketing automation, signaturesBudget ou contournement N8N
Overhead mémoire~1.5 GB RAM miniDolibarr si ressources limitées

Odoo est rapide à déployer (time-to-market court) mais la personnalisation peut être coûteuse :

Type d’adaptationEffortExemple
ParamétrageFaibleChanger les champs affichés
Module existantMoyenInstaller un addon OCA
Développement spécifiqueÉlevéCréer project_github_sync
Si votre besoin prioritaire est…Choisissez…
Collaboration docs temps réelNotion, Outline
ERP léger + facturation simpleDolibarr
Manufacturing / productionERPNext
Juste gestion de tâchesPlane, Focalboard
ERP complet self-hosted + APIOdoo Community
ÉvolutionModule/ActionBénéfice attendu
CRM completModule natifPipeline de ventes structuré
Devis automatiquesTimesheets + TemplatesEstimation basée sur l’historique
Marketing automationEnterprise ou N8NSéquences de nurturing