Version : 1.0 – novembre 2025
1. Pourquoi la signature électronique dans Dolibarr ?
| Besoin | Bénéfice apporté par la signature électronique |
|---|---|
| Conformité légale (eIDAS, loi française) | Traçabilité, validité juridique et non‑répudiation des documents. |
| Gain de productivité | Élimination des processus papier, signatures à distance, automatisation des workflows. |
| Réduction des coûts | Économies d’impression, d’envoi postal ou de scannage. |
| Valorisation de l’entreprise | Image « digital‑first », satisfaction client/partenaire qui peut signer depuis son smartphone. |
Dolibarr, plateforme ERP/CRM open‑source, possède plusieurs extensions natives ou tierces qui offrent la signature électronique sans exigences complexes de développement.
2. Architecture globale
+----------------------+ +----------------------+ +-------------------+
| Dolibarr (core) | ---> | Ext. "Signature" | ---> | Service externe |
| (Factures, PO, ...) | | ou "DocumentSign" | | (DocuSign, |
| + base de données) | | ou "HelloSign") | | Yousign, etc.) |
+----------------------+ +----------------------+ +-------------------+
Flux typique (PDF/ODT) :
1. Utilisateur crée/modifie un document (ex. facture).
2. Bouton « Signer » déclenche l’appel API vers le service externe.
3. Le service crée un en‑veloppe, renvoie un URL ou un hash.
4. Dolibarr stocke le token/URL dans la base (champ « signature_ref ») et met la pièce à « Signée ».
5. Le PDF signé est récupéré via l’URL et affiché/archivé.
Astuce : pour les PME qui veulent rester 100 % sur‑site, choisissez « DocumentSign » (solution open‑source) ou intégrez « Nextcloud » + « OnlyOffice » avec un module de signature interne.
3. Prérequis avant d’installer
| Point | Action | Détails |
|---|---|---|
| Version Dolibarr | ≥ 10.0 | Les fonctionnalités de signature sont supportées à partir de la branche 10.x (et compatibles 11). |
| PHP | ≥ 7.4 (recommandé 8.2) | Compatible avec les dépendances de la librairie de signature. |
| Base de données | MySQL 5.7 / MariaDB 10.4 ou PostgreSQL 13 | Aucun champ supplémentaire n’est créé, sauf si vous utilisez la table llx_signature. |
| Modules PHP | curl, openssl, json |
Utilisés par les appels API vers les services externes. |
| Compte externe | Ouvrir un compte sur le service choisi | Ex. : DocuSign (plan Free pour tests), Yousign (plan développeur), Signaturit, etc. |
| SSL | HTTPS obligatoire sur votre instance Dolibarr | Pour éviter les erreurs CORS et sécuriser les échanges. |
| Permissions | Créer un User API + API Key | Le service doit autoriser les appels depuis votre IP ou domaine. |
4. Installation et configuration du module « Signature » (exemple avec DocuSign‑Dolibarr)
4.1. Installez le module
- Téléchargement
cd /var/www/dolibarr/htdocs/
wget https://github.com/Dolibarr/dolibarr-modules-contrib/archive/refs/heads/master.zip
unzip master.zip -d modules
mv modules/dolibarr-modules-contrib/contrib/signature/ htdocs/custom/signature - Activation → Administration → Modules → Fonctionnalités → Cocher “Signature électronique (Dolibarr Signature)” → Valider.
4.2. Créez le compte DocuSign
| Étape | Action |
|---|---|
| 1 | Rendez‑vous sur https://demo.docusign.net (ou production). |
| 2 | Créez un Intégrateur → obtenez Client ID et Integration Key. |
| 3 | Ajoutez une Redirect URI : https://votre‑dolibarr.example.com/signature/docusign/callback. |
| 4 | Copiez Client Secret. |
4.3. Configuration dans Dolibarr
| Champ | Valeur à saisir |
|---|---|
| Client ID | xxxxxxxxxxxxxxxxxxxx |
| Client Secret | yyyyyyyyyyyyyyyyyyyy |
| Base URL | https://demo.docusign.net |
| API Endpoint | /restapi/v2.1 |
| User Agent | DolibarrSignature/1.0 |
| Mode | Test (pour dev) ou Production. |
Sauvegardez → Test de connexion : le système doit retourner “OK”.
4.4. Exemple concret : Signature d’une facture fournisseur
-
Création de la facture
- Menu Factures → Entrées de commandes → Créer.
- Remplissez le formulaire (fournisseur, article, montant, etc.).
- Sauvegarder (la facture est sous forme
PDFgénéré par le moteurtwig).
-
Activation du bouton “Signer”
- Ouvrez la fiche de la facture → onglet Signature → cliquez sur Signer.
- Le module crée une enveloppe DocuSign contenant le PDF de la facture.
-
Configuration de l’enveloppe
{
"emailSubject": "Facture #{$id} – Signature requise",
"status": "sent", // envoie immediate
"recipients": [
{
"emailSubject": "Signature du fournisseur",
"email": "signataire@fournisseur.com",
"name": "M. X",
"role": "Signer",
"routingOrder": "1"
}
],
"documents": [
{
"documentId": "1",
"name": "Facture_1234.pdf",
"fileExtension": "pdf",
"documentBase64": "BASE64_ENCODED_PDF"
}
]
}- Ce JSON est généré automatiquement par le module.
-
Envoi → DocuSign envoie un email au signataire avec le lien de signature.
-
Suivi → Dans Dolibarr, le statut de la facture passe à « En attente de signature ».
- Le signataire signe → le statut passe à « Signée » et le PDF signé est récupéré via l’URL retournée.
- Archivage → Le PDF signé se retrouve dans l’onglet Documents de la facture (champ
signature_file).- Vous pouvez le télécharger, le convertir, ou le partager.
4.5. Exemple 2 : Signature d’un devis client avec HelloSign
- Installez le module
hellosign(disponible sur le repo officiel). - Créez une API Key sur https://app.hellosign.com.
- Dans Administration → Modules → Signature → Configuration, remplissez :
- API Key :
your_hellosign_key - Webhook Endpoint :
https://votre-dolibarr.example.com/signature/hellosign/webhook.
- API Key :
- Retournez au devis → bouton Signer → HelloSign.
- Le module crée un template avec les champs « Signature », « Date ».
- Après la signature, le webhook notifie Dolibarr → le devis se met à jour en « Signé » et le PDF signé est stocké.
5. Exemple concret : Flux « Signature ODT → PDF » via DocumentSign (open‑source)
DocumentSign utilise LibreOffice + rest‑api interne, aucun contrat externe. Idéal si vous ne voulez pas dépendre d’un service tiers.
5.1. Installation
cd /var/www/dolibarr/htdocs/
git clone https://github.com/julienbourgeois/dolibarr-module-documentsign.git custom/signature/documentsign
php custom/signature/documentsign/scripts/install.php
5.2. Configuration
| Paramètre | Exemple |
|---|---|
| LibreOffice Path | /usr/bin/soffice |
| Port interne | 8085 |
| URL Callback | https://votre-dolibarr.example.com/signature/documentsign/callback |
| Clé API interne | super_secret_key |
5.3. Processus de signature
- Création d’un devis → Commercial → Devis → Sauvegarder.
- Bouton “Signer (DocSign)” → le module convertit l’ODT en PDF avec LibreOffice.
- Un hash du fichier (SHA‑256) est envoyé à
http://localhost:8085/sign. - Le serveur DocSign répond avec un token (
signature_token). - Dolibarr stocke le token et inscrit la date dans le champ
signature_token. - Le PDF signé peut être récupéré via :
https://votre-dolibarr.example.com/signature/download.php?token=ABC123
5.4. Gestion du workflow
- Statut :
En attente de signature → Signée (Date). - Notification : email automatisé à
signataire@exemple.comavec le lien de signature (via Mailjet ou SendinBlue intégré dans Dolibarr). - Historique : Tous les tokens sont archivés dans la table
llx_signature(date, utilisateur, type, statut).
6. Bonnes pratiques à adopter
| Pratique | Pourquoi | Mise en œuvre |
|---|---|---|
| Versionner les modèles | Garder une trace des modèles de factures qui ont été signés | Dans Configuration → Documents → Modèles, activez le Versionnage et conservez le v1.0‑signed.pdf. |
| Séparer les environnements | Test des signatures sans impacter la production | Créez un sous‑domaine test.example.com avec un compte API dédié (sandbox). |
| Conserver les preuves d’audit | En cas de litige, disposer de l’horodatage et du token | Activez SignatureStamp (ex. : Timestamp authority via RFC 3161) dans le service externe. |
Limiter les droits d’accès à la table llx_signature |
Sécurité des métadonnées | Créez un rôle “Signature Manager” avec uniquement SELECT/UPDATE sur cette table. |
| Automatiser la relance | Si le signataire ne signe pas sous 48 h | Utilisez le cron de Dolibarr (cron.php) pour envoyer un rappel via l’API du service. |
| Sauvegarder les PDF signés en lecture seule | Empêcher la modification post‑signature | chmod 444 sur le fichier stocké, et règle READ‑ONLY dans le dossier. |
| Test de charge | Si le volume de signatures augmente | Simulez 500 signatures simultanées avec JMeter sur l’endpoint /signature/callback. |
7. Checklist de mise en production
| ✅ | Action | Responsable | Délai |
|---|---|---|---|
| 1 | Vérifier la version Dolibarr ≥ 10.0 | Admin infra | 1 jour |
| 2 | Créer un compte API sur le service choisi (DocuSign/Yousign) | Équipe juridique | 2 jours |
| 3 | Déployer le module « Signature » et activer les droits | DevOps | 1 jour |
| 4 | Configurer les variables d’environnement (DS_CLIENT_ID, HS_API_KEY) |
SysAdmin | 0,5 jour |
| 5 | Tester le flux complet (création → signature → archivage) en sandbox | QA | 1 jour |
| 6 | Configurer le webhook de callback et le tester via Postman | Dev | 0,5 jour |
| 7 | Mettre en place le script cron php /var/www/dolibarr/cron.php (vérifier le mail de rappel) |
Ops | 0,5 jour |
| 8 | Documenter le processus interne (procédure SOP) | PM | 1 jour |
| 9 | Effectuer le go‑live avec monitoring (logs + Prometheus) | Ops | 1 jour |
| 10 | Plan de continuité : procédure de retrait de signature si erreur | juridique | 1 jour |
8. Exemple de code PHP minimal (module « Signature »)
NOTE : Ce fragment montre comment appeler l’API DocuSign via cURL et mettre à jour le statut de la facture.
<?php
// Located in htdocs/signature/docusign/action.php
require_once('/var/www/dolibarr/htdocs/inclure/generic_menus.php');
require_once('/var/www/dolibarr/htdocs/inclure/éch Tor/llx_const.php');
require_once('/var/www/dolibarr/htdocs/inclure/class/sql.class.php');
require_once('/var/www/dolibarr/htdocs/inclure/class/html.form.php');
global $db, $conf, $langs;
// 1️⃣ Récupérer l'ID du document (facture)
$fact_id = $_GET['id']; // ex: /action.php?id=123
$fact = new Facture($db);
$fact->fetch($fact_id);
// 2️⃣ Générir le PDF (Dolibarr le crée déjà)
$pdf_path = $fact->getFilePath('pdf');
$base64 = base64_encode(file_get_contents($pdf_path));
// 3️⃣ Construire le payload JSON
$payload = [
'emailSubject' => "Signature de la facture #{$fact_id}",
'status' => 'sent',
'recipients' => [
[
'emailSubject' => 'Signature du client',
'email' => $conf->global->SIGNER_EMAIL,
'name' => $conf->global->SIGNER_NAME,
'role' => 'Signer',
'routingOrder' => '1'
]
],
'documents' => [
[
'documentId' => '1',
'name' => $fact->label(),
'fileExtension' => 'pdf',
'documentBase64' => $base64
]
]
];
// 4️⃣ Appel API DocuSign
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $conf->global->DS_API_URL . '/envelopes');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer '.$conf->global->DS_ACCESS_TOKEN,
'Content-Type: application/json'
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($http_code !== 201) {
dol_header('Location: /sign?error=api');
exit;
}
// 5️⃣ Récupérer l’URL de la signature
$result = json_decode($response, true);
$envelopeId = $result['envelopeId'];
$statusUrl = $result['statusUrl']; // URL pour récupérer le PDF signé
// 6️⃣ Mettre à jour la facture
$fact->signature_ref = $envelopeId; // champ personnalisé dans la table llx_facture
$fact->signature_date = $db->idate('now');
$fact->status = 'SIGNED';
$fact->update();
echo "Signature en cours – vous recevrez un email de confirmation.";
?>
9. Documentation et ressources complémentaires
| Ressource | Lien | Description |
|---|---|---|
| Dolibarr – Modules “Signature électronique” | https://github.com/Dolibarr/dolibarr-modules-contrib/tree/master/signature | Code source, notes d’installation, paramètres. |
| DocuSign API – Quickstart | https://developers.docusign.net/docs/esign-rest-api/how-to/authenticate/ | Guide d’authentification, génération du token. |
| Yousign API Docs | https://www.yousign.com/api/ | Exemple d’enveloppe création via POST. |
| LibreOffice + Restful Signing (DocumentSign) | https://github.com/julienbourgeois/dolibarr-module-documentsign | Fork open‑source, Dockerfile fourni. |
| Article officiel eIDAS | https://eur-lex.europa.eu/eli/reg/2014/910/eu | Cadre juridique de la signature électronique. |
| Webinar “Signature électronique et ERP” (2024) | Disponible via le portail partenaires Dolibarr | Démonstration en live + Q&A. |
10. Conclusion
La signature électronique dans Dolibarr est accessible, sécurisée et très configurable grâce aux modules communautaires et aux API tierces.
- Pour les petites structures qui souhaitent rester 100 % open‑source, DocumentSign + LibreOffice constitue une solution autonome.
- Pour les grands comptes avec exigences de conformité et de traçabilité forte, l’intégration avec DocuSign ou Yousign offre une charge de travail minimale et un audit complet.
En suivant ce playbook — prérequis, installation, configuration, exemples concrets et bonnes pratiques — vous pourrez déployer rapidement des processus de signature électronique entièrement intégrés à Dolibarr, améliorer la productivité de vos équipes et garantir la validité juridique de vos documents.
Prochaine étape : planifier une session de test avec votre service juridique et vos clients signataires afin de valider le flux de signature et d’ajuster les modèles de courrier. Bonne implémentation ! 🎉