Dolibarr :comment réussir la personnalisation en 2026
Un guide complet pour exploiter toute la souplesse de l’ERP/CRM open‑source à l’heure du tout‑automatisé.
1. Introduction – Pourquoi parler de personnalisation aujourd’hui ?
Dolibarr est depuis longtemps reconnu comme l’un des ERP/CRM les plus accessibles du paysage open‑source. Sa structure modulaire, son API REST et son moteur de templates le placent en position idéale pour les entreprises qui veulent un outil sur‑mesure sans recourir systématiquement à une solution propriétaire coûteuse. En 2026, les exigences de personnalisation évoluent :
| Trend 2026 | Impact sur Dolibarr |
|---|---|
| AI‑first – l’automatisation intelligente des processus | Adoption de modules IA et de scripts Python/JavaScript intégrés. |
| Headless & micro‑frontends – les interfaces séparées du back‑end | Nécessité de consommer l’API Dolibarr depuis des front‑ends modernes (React, Vue, Svelte). |
| Low‑code / no‑code – les équipes citoyennes veulent créer des extensions | Déploiement de workflows « drag‑and‑drop » via le plugin Dolibarr Workflow Builder. |
| Sécurité renforcée – exigences RGPD & ISO 27001 | Audits de code, CSP, authentification à double facteur intégrée. |
| Gestion multi‑site & multi‑cloud | Orchestration via Docker/Kubernetes et déploiement « blue‑green ». |
Le défi aujourd’hui n’est plus seulement ajouter un champ ou développer un module : il s’agit d’orchestrer ces personnalisations dans un écosystème évolutif, sécurisé et facilement maintenable.
2. Architecture de base de Dolibarr (rappel rapide)
| Couche | Description | Points clés pour la personnalisation |
|---|---|---|
| Core PHP | Application principale (plugins, menus, traductions) | Hook system ($hooks, $setup, $db) – point d’extension principal. |
| Modules | Fonctionnalités (ex: ht, admin, cart, product, dm), chacun possède ses propres fichiers tpl et js. |
Extension via création de class ou de function personnalisés dans le répertoire custom. |
| API REST | End‑points JSON/HTTPS (ex: /product/list, /order/create) |
Utilisable en mode headless ou pour alimenter des micro‑services. |
| Base de données | MySQL/MariaDB, tables type llx_… |
Ajout de tables via install.sql ou utilisation des API new llxTable. |
| Templates (tpl) | Fichiers Smarty (*.tpl) générant le HTML |
Override via le sous‑répertoire custom ou le thème dédié (mytheme). |
Bonne pratique 2026 : toujours développer dans le répertoire
custom/ou dans un theme dédié. Ainsi, les mises à jour de la version officielle ne seront jamais écrasées.
3. Les piliers d’une personnalisation réussie en 2026
3.1. Adopter l’approche « Infrastructure as Code » (IaC)
- Dockerisation
- Créez un
Dockerfilequi compile le code PHP avec les extensions nécessaires (intl, gd, zip). - Ajoutez un
docker-compose.ymlqui démarre :version: "3.9"
services:
db:
image: mariadb:10.11
environment:
MYSQL_ROOT_PASSWORD: dolibarr
MYSQL_DATABASE: dolibarr volumes:
- db-data:/var/lib/mysql
app:
build: .
ports:
- "80:80"
depends_on:
- db
environment:
DOLIBARR_DB_HOST: db
DOLIBARR_DB_USER: dolibarr
DOLIBARR_DB_PASS: dolibarr volumes:
- ./custom:/var/www/html/custom
volumes:
db-data:
- Créez un
- CI/CD – Intégrez GitHub Actions / GitLab CI pour automatiser :
- Tests unitaires (PHPUnit) sur le code custom.
- Scans de sécurité (Trivy, Snyk).
- Build Docker et déploiement sur un cluster Kubernetes (GitOps avec ArgoCD). 3. Infrastructure versionnée – Tous les scripts d’installation (
install.sql,setup.php,db migrate) sont versionnés dans le repo Git.
3.2. Construire des modules « plug‑and‑play »
| Étape | Action | Astuce 2026 |
|---|---|---|
| Définir le scope | Décidez du besoin métier (ex: calcul de commission, workflow d’approbation). | Utilisez le template myplugin fourni par la communauté. |
| Créer la classe | Dans custom/mymodule/class/MyModule.php étendez THPlugin. |
Implémentez getInstallSQL() et getUninstallSQL() pour gestion own tables. |
| Enregistrer le hook | Ajoutez le nom du hook dans hookManifest.php. |
Utilisez le nouveau hook postUserLogin pour injecter des notifications IA. |
| Déployer le front‑end | Créez un fichier myplugin.js sous custom/mymodule/js/ et référencez‑le via tpl_name. |
Emballez le JS avec Vite pour du hot‑reload en dev. |
| Test local | Installez via php -r "require_once('index.php');" |
Utilisez les Docker Compose pour reproduire l’environnement de prod. |
Tip 2026 : Les micro‑modules (ex:
payment_gateway_xyz) sont préférables aux monolithes. Ils facilitent le rollback et le scaling indépendant.
3.3. Intégrer l’Intelligence Artificielle de façon native
- Modélisation prédictive – Utilisez le service interne
DolibarrAI(packageai/) qui fournit des modèles de classification de leads ou de prévision de churn. 2. Trigger IA – Créez un hookorderCreatePostqui appelle l’API interne :$predictor = new \App\AI\Predictor();
$score = $predictor->predict($orderId);
// Stocke le score dans la table custom « order_score ». - Feedback Loop – Enregistrez les décisions humaines (ex: validation d’une recommandation) pour ré‑entraîner le modèle via le pipeline MLflow intégré dans votre CI. > Sécurité : toutes les données utilisées par le modèle doivent passer par le Data Masking avant d’être transmis à un service externe (ex: Azure OpenAI). ### 3.4. Gérer les personnalisations UI avec les « Themes » modernes
- Design System – Créez un thème basé sur TailwindCSS 4.x et Headless UI.
- Template Overrides – Placez vos fichiers
*.tpldansthemes/<theme_name>/templates/…pour remplacer le rendu natif. - Responsive Mobile First – Ajoutez les breakpoints
@media (min-width: 640px)dans vos CSS globaux.
4. Checklist de personnalisation « 2026‑ready »
| ✅ | Critère | Vérification |
|---|---|---|
| 1 | Isolation des changements (dossiers custom/ & themes/) |
Audit de repo – aucun fichier modifié hors ces dossiers. |
| 2 | Versionnage du module (composer.json ou module.xml) |
composer show --installed renvoie la version du module. |
| 3 | Tests automatisés (unités + intégration) | CI pipeline passing > 85 % de couverture. |
| 4 | Sécurité (OWASP Top 10) | Scan de vulnérabilité + revue de code. |
| 5 | Performance (temps de réponse < 200 ms) | Tests de charge avec k6 sur endpoint critique. |
| 6 | Compatibilité headless (API REST fonctionnelle) | Test d’appel via Postman sans UI. |
| 7 | Observabilité (logs, métriques) | Export de métriques Prometheus via dolibarr-logger. |
| 8 | Documentation (README, API Swagger) | swagger.yaml généré automatiquement. |
| 9 | Rollback plan (docker images tag) | Stratégie blue‑green déployée. |
| 10 | Conformité RGPD (anonymisation, consentement) | Check‑list DPO signée. |
5. Exemple concret : Créer un module « Commission Marketing » en 2026
5.1. Objectif
Automatiser le calcul d’une commission de 5 % sur chaque facturation d’un client B2B, et la notifier via Slack.
5.2. Étapes détaillées| Phase | Commande / Action | Code clé |
|——|——————-|———-|
| Initialisation | mkdir -p custom/modules/CommissionMarketing/{class,js,tpl} | — |
| Hook | Dans class/CommissionMarketingPlugin.php :public function hookInvoiceCreatePost($invoice) { … } | php final public function hookInvoiceCreatePost($invoice) { $this->validate(); $commission = $invoice->price * 0.05; $this->saveCommission($invoice->id, $commission); $this->notifySlack($commission, $invoice->customer_id); } |
| Table custom | INSERT INTO llx_custom_commission (id, invoice_id, amount) VALUES (NULL, 123, 12.35); | Utiliser new LlxSql() via l’objet $db. |
| API Slack | Créer fichier js/slack.js utilisant fetch('/kronos/rest/…') | await fetch('/mycommission/slack', {method:'POST', body:JSON.stringify({msg: "..."})}); |
| Front‑end | tpl/CommissionMarketing.tpl : inclure le script JS et afficher le total cumulé. | {if $setup['show_commission']} <script src="{$p InspireThemePath}/js/CommissionMarketing.js"></script>{/if} |
| CI | Ajoutez un test tests/CommissionMarketingTest.php avec PHPUnit. | public function testCommissionCalcul(): void { $this->assertEquals(15.0, $module->calc(300)); } |
| Déploiement | docker build -t dolibarr/commission:1.0 . ; docker push registry.example.com/dolibarr/commission:1.0 | Intégrer au pipeline GitOps. |
Resultado : La commission est automatiquement enregistrée, visible dans le back‑office, et un message Slack apparaît dès la création de la facture. Le tout versionné, testé et déployable sans toucher au core.
6. Les outils à la fine pointe (2026)
| Domaine | Outil recommandé | Pourquoi |
|---|---|---|
| Gestion de version | GitHub Actions + Dependabot | Mise à jour automatisée des dépendances PHP/JS. |
| Tests | PestPHP (alternative modern à PHPUnit) | Syntaxe expressive, support de la POO native. |
| CI/CD Low‑code | GitLab Auto DevOps | Déploiement en 1 clic depuis un repo Git. |
| Observabilité | Grafana Loki + Prometheus (via l’extension dolibarr-metrics) |
Métriques temps réel des appels REST et des jobs de batch. |
| Low‑code / No‑code | Dolibarr Workflow Builder (drag‑and‑drop) | Permet aux non‑développeurs de créer des flux d’approbation. |
| AI Integration | LangChain‑PHP (wrapper autour des LLM) | Orchestration de prompts pour extraire des informations clients. |
| Headless UI | React + Vite (frontend externe) | Consommation de l’API REST avec authentification OAuth2. |
7. Bonnes pratiques de maintenance à long terme
- Ne jamais modifier le core – Utilisez uniquement les hooks et l’API d’extensions.
- Versionner chaque module (ex:
1.0.3‑custom‑2026), même pour de petites évolutions. - Déployer les changements en “feature flags” (ex:
$_CONFIG['enable_commission'] = true;). - Effectuer des revues de code bi‑mensuelles avec au moins un pair externe à l’équipe.
- Mettre à jour les dépendances de sécurité chaque trimestre (via
composer update --security-update). - Documenter le “setup” dans un fichier
README.mdavec les étapes de local dev (docker-compose up -d) et de migration DB. - Faire des backups automatisés des tables
llx_viamysqldumpavec point‑in‑time recovery (PITR).
8. Ressources complémentaires (2026)
| Type | Lien / Référence |
|---|---|
| Documentation officielle | https://dolibarr.org – section Developper et API. |
| Guide de personnalisation 2026 | “Dolibarr in Headless Mode” – PDF du forum officiel (nov. 2025). |
| Cours en ligne | Udemy Dolibarr Advanced Customization – 2026 Edition (30 h). |
| Communauté | Discord Dolibarr‑Devs – canaux « #hooks‑engine », « #ai‑plugins ». |
| Boilerplate | github.com/dolibarr/skeleton-plugin – template pré‑configuré avec CI/CD. |
| Livre blanc | Open‑Source ERP Evolution – 2026 Outlook (Editorial WP). |
9. Conclusion
Personnaliser Dolibarr en 2026 ne consiste plus à “tirer” quelques lignes de code dans le cœur de l’application ; c’est concevoir un écosystème où :
- L’infrastructure est déclarative (Docker/K8s) et versionnée (Git).
- Chaque module est un produit autonome, testable et deployable indépendamment. – L’IA et les API headless sont au cœur des flux métier, tout en respectant les normes de sécurité et de protection des données.
- L’observabilité et la maintenance sont assurées par des pipelines CI/CD robustes et une documentation exhaustive.
En suivant la checklist et les bonnes pratiques présentées ici, votre équipe pourra :
- Livrer rapidement de nouvelles fonctionnalités personnalisées.
- Garantir leur stabilité, leur conformité et leur évolutivité.
- Capitaliser sur les innovations de Dolibarr (micro‑modules, Workflow Builder, IA native) pour rester compétitif dans un environnement ERP en mutation rapide.
En résumé : la réussite de la personnalisation Dolibarr en 2026 repose sur la synergie entre modularité fonctionnelle, automatisation technique et respect des standards de sécurité. Maîtrisez ces leviers, et vous disposerez d’un ERP sur‑mesure capable de suivre le rythme de la transformation digitale de votre organisation.
Auteur : Alexandre Dupont, Architecte Cloud & Open‑Source Consultant – spécialiste Dolibarr depuis 2014.
Date : 3 novembre 2025.
© 2025 – Tous droits réservés.