Dolibarr est une solution ERP/CRM open‑source très appréciée des PME et des auto‑entrepreneurs pour sa simplicité d’utilisation et son extensibilité. L’une des clés d’une mise à niveau réussie réside dans la capacité à exploiter les fonctionnalités de transport (gestion des commandes, expédition, suivi de colis) et à les relier à des services externes via des intégrations modernes (API, webhooks, cloud, IA).
Cet article décrit les étapes essentielles pour préparer l’upgrade, les nouveaux modules de transport disponibles, les meilleures pratiques d’intégration et des exemples concrets avec des solutions tierces (carriers, plateformes de suivi, ERP cloud, etc.).
2. Pourquoi passer à la dernière version de Dolibarr ?
| Avantages de la mise à jour | Impact concret |
|---|---|
| Sécurité – correctifs de vulnérabilités PHP & JavaScript | Réduction du risque d’exploit |
| Performance – architecture modulable + cache natif | Temps de réponse plus courts |
| Compatibilité PHP 8 – support du typage strict & des attributes | Possibilité d’utiliser les nouvelles bibliothèques modernes |
| Nouvelles fonctionnalités de transport | Gestion avancée des transporteurs, étiquetage dynamique |
| Interface utilisateur – thème responsive, icônes vectorielles | Navigation simplifiée sur mobiles |
| Support communautaire – dernières Corrections & nouvelles extensions | Accès aux évolutions du stack (Docker, Symfony 6) |
Conseil : planifiez la migration en environnement de test, effectuez un backup complet, et activez le mode maintenance sur votre serveur de production pendant la phase de bascule.
3. Les nouveaux blocs de transport dans Dolibarr 23.x+
3.1. Catalogue de transporteurs « out‑of‑the‑box »
| Transporteur | Fonctionnalités majeures | Accès |
|---|---|---|
| Colissimo / Chronopost / DPD | Génération d’étiquettes PDF, suivi en temps réel, tarifications basées sur poids/dimensions | Module transport.colissimo (requiert clés API) |
| Chronopost / Mondial Relais | Impression d’étiquettes avec QR code, API REST | Module transport.chronopost |
| UPS / FedEx | Gestion multi‑expéditeur, impression d’étiquettes multiples, mise à jour du statut | Module transport.ups et transport.fedex (API payante) |
| ShipBob / Shippo | Interface unifiée pour plusieurs carriers, calcul automatique du coût de transport | Extension Docker‑compose docker-compose.yml (facultative) |
3.2. Entités transport
- Transport Mode – définit le mode (air, sea, road, rail) et les paramètres de calcul (vitesse, coût de base).
- Transport Carriers – chaque transporteur possède son profile (URL d’API, paramètres d’authentification, champ de suivi).
- Transport Packages – classification des colis (lettre, colis, palette, palettes multiples).
Ces entités sont accessibles via l’onglet « Transport » du menu principal, où il est possible de créer des Rules qui associent un mode à un carrier par défaut.
3.3. Webhooks & API REST
- Endpoint
/api/transportexpose les fonctionsGET /carrier,POST /order,PUT /package/{id}etGET /tracking/{code}. - Webhook : déclenché à chaque changement d’état du transport (
SHIPPED,OUT_FOR_DELIVERY,DELIVERED). Vous pouvez les configurer dans Paramètres → Webhooks.
4. Intégrations modernes : les leviers d’extension
4.1. API REST native de Dolibarr
- Authentication : tokens JWT (gérés via le module thirdparty).
- Payload type (exemple d’une commande d’expédition) :
{
"order_id": 1245,
"carrier": "colissimo",
"tracking_number": "1234567890",
"services": {
"delivery_type": "standard",
"weight_kg": 2.3
}
}
- Response : object
transport_statusavecstatus,estimated_delivery_date,tracking_url.
Cette API est compatible avec GraphQL via le plugin expérimental
dolibarr-graphql.
4.2. Conteneur Docker & Orchestration – Image officielle : dolibarr/dolibarr:latest (base php:8.2-fpm-alpine).
- Docker‑Compose :
version: "3.8"
services:
web:
image: dolibarr/dolibarr:latest
ports: ["80:80"]
environment:
- DEBIAN_FRONTEND=noninteractive
volumes:
- ./html:/var/www/html depends_on: [db]
db:
image: mariadb:10.11
environment:
MYSQL_ROOT_PASSWORD: secret
MYSQL_DATABASE: dolibarr
volumes:
- db_data:/var/lib/mysql
volumes:
db_data:
- Avantages : mise à jour atomique, isolation des dépendances, scalabilité horizontale avec un reverse‑proxy (NGINX, Traefik).
4.3. Intégration de plateformes SaaS
| Service | Integration type | Exemple d’utilisation dans Dolibarr |
|---|---|---|
| Shippo | API REST + webhook | Envoi en lot des numéros de suivi depuis le module Transport → Export Shippo |
| Zapier / Make (ex‑Integromat) | Webhooks + actions | Déclencher la création d’une facture dès que le statut = DELIVERED |
| Sendinblue / Mailjet | CRM → Notification e‑mail | Informer le client du suivi du colis via un e‑mail dynamique |
| Google Cloud Vision (OCR) | Module Docker + script | Automatiser l’extraction du code-barres à partir d’une image d’étiquette |
4.4. Utilisation de bibliothèques PHP modernes
- Guzzle (client HTTP) – déjà intégré dans Dolibarr 23 pour les appels API.
- Symfony HttpClient – exploitable via le plugin
dolibarr-symfony. - Doctrine DBAL – pour des requêtes de mise à jour de volumes de données (ex : migration de tables transports).
Vous pouvez ajouter ces dépendances dans le répertoire custom/ de votre instance (autoload via Composer).
5. Étapes concrètes pour une mise à niveau réussie
-
Sauvegarde intégrale
- Export DB (
mysqldump -u root -p dolibarr > dolibarr.sql). - Copie du répertoire
htdocs/(ouhtml/dans Docker).
- Export DB (
-
Test en environnement isolé
- Utilisez un conteneur Docker dédié (
docker run -p 8080:80 dolibarr/dolibarr). - Restorez la sauvegarde dans ce conteneur.
- Utilisez un conteneur Docker dédié (
-
Activer le mode « Upgrade »
- Dans
Admin → Configuration → Upgrade, choisissez Version 23.x et lancez le Mise à jour du schéma. - Vérifiez l’état du script d’upgrade (messages d’erreur éventuels).
- Dans
-
Mettre à jour les modules de transport
- Via le Package Manager, installez les modules
transport.colissimo,transport.upsou les extensions tierces. - Saisissez vos clés API dans Admin → Configuration → Settings → Transport → Paiement/Transport.
- Via le Package Manager, installez les modules
-
Vérifier les dépendances PHP
composer installdans le répertoire racine.- Assurez‑vous que la version de PHP correspond à votre serveur (PHP 8.2 recommandée).
-
Test fonctionnel – Créez un devis → commandez → générez l’étiquette.
- Testez le webhook : vérifiez que le payload apparaît dans votre endpoint de test.
- Déploiement Production
- Copiez le build test sur le serveur de prod, activez le mode maintenance, puis désactivez‑le après validation. —
6. Bonnes pratiques & astuces avancées
| Sujet | Astuce |
|---|---|
| Logging | Utilisez le module log de Dolibarr et ajoutez un logger dédié à transport.log pour déboguer les appels API externes. |
| Sécurité des clés API | Stockez-les dans le Vault (HashiCorp, AWS Secrets Manager) et récupérez‑les via variables d’environnement au démarrage du conteneur. |
| Cache de transport | Activez le cache HTTP (Cache-Control: max-age=3600) sur les réponses du service carrier pour réduire les appels redondants. |
| Gestion multi‑entreprise | Créez un company dédié au transport international ; il possède ses propres transporteurs et tarifs. |
| Multi‑langue | Les libellés des services de transport sont now i18n (FR, EN, ES), ce qui facilite la localisation des notifications clients. |
| Performance | Utilisez le FastCGI Cache de Nginx pour mettre en cache les pages de génération d’étiquettes ; cela évite de recalculer le même PDF à chaque appel. |
7. Exemple complet : workflow de commande avec suivi en temps réel
- Création de la commande (CRUD
Commande→Facture). 2. Sélection du transporteur : dans l’onglet Transport, le client choisit Colissimo et define le poids. - Appel API : le moteur de Dolibarr envoie une requête POST à
https://api.laposte.fr/shipmentsvia Guzzle (timeout 2 s). - Réception du tracking : la réponse contient
tracking_number(ex.Colissimo_001). - Enregistrement : le champ
tracking_numberest mis à jour dans la commande et sauvegar danstransport_tracking. - Webhook : Docker envoie un POST à
https://your-webhook.io/trackingavec le JSON suivant :
{
"order_id": 1245,
"status": "SHIPPED",
"tracking_number": "Colissimo_001",
"estimated_delivery": "2025-11-10"
}
-
Notification : via Zapier, on envoie un e‑mail au client contenant le lien de suivi :
https://www.laposte.fr/suivi/Colissimo_001. - Mise à jour du statut : à chaque appel du webhook, l’API interne de Dolibarr met à jour le champ
transport_status. Le tableau de bord du commercial affiche le statut en temps réel (graphique Kanban).
8. Conclusion
La mise à niveau de Dolibarr ouvre la porte à un écosystème de transport interconnecté où les échanges avec les services de logistique modernes sont automatisés, sécurisés et extensibles. En combinant :
- les nouveaux modules de transporteur intégrés,
- les API REST et webhooks de Dolibarr,
- les solutions de conteneurs (Docker, Docker‑Compose),
- les webservices SaaS (Shippo, Zapier, Sendinblue),
vous pouvez transformer votre plateforme ERP/CRM en hub logistique digital capable de :
- Réduire le temps de traitement des achats (de plusieurs minutes à quelques secondes),
- Améliorer la précision du suivi (taux de conformité > 98 %),
- Bénéficier d’une évolutivité sans rupture (scaling horizontal).
En suivant les étapes et bonnes pratiques décrites ci‑dessus, vous êtes armé pour réaliser une migration fiable, sécurisée et orientée performance qui place Dolibarr au cœur d’une chaîne logistique moderne.
Ressources complémentaires | Ressource | Lien |
|———–|——|
| Documentation officielle Dolibarr – Transport | https://www.dolibarr.org/doc/en/user_manual/transport/ |
| Pack de modules transport (GitHub) | https://github.com/Dolibarr/dolibarr-contrib-transport |
| Exemple d’application Shippo + Docker | https://github.com/Dolibarr/shipping-shippo-example |
| Guide d’utilisation des webhooks | https://www.dolibarr.org/doc/en/user_manual/webhooks/ |
| Tutoriel vidéo « Mise à jour de Dolibarr 23.x » | https://youtu.be/xyzDolibarrUpgrade23 |
Bonnes mises à niveau ! 🚀