Playbook : mettre en place signature électronique sur Dolibarr avec des exemples concrets

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

  1. 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
  2. ActivationAdministration → Modules → FonctionnalitésCocher “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

  1. 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 PDF généré par le moteur twig).

  2. 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.

  3. 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.

  4. Envoi → DocuSign envoie un email au signataire avec le lien de signature.

  5. 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.

  6. 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

  1. Installez le module hellosign (disponible sur le repo officiel).
  2. Créez une API Key sur https://app.hellosign.com.
  3. Dans Administration → Modules → Signature → Configuration, remplissez :

    • API Key : your_hellosign_key
    • Webhook Endpoint : https://votre-dolibarr.example.com/signature/hellosign/webhook.
  4. Retournez au devis → bouton Signer → HelloSign.
  5. Le module crée un template avec les champs « Signature », « Date ».
  6. 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

  1. Création d’un devisCommercial → DevisSauvegarder.
  2. Bouton “Signer (DocSign)” → le module convertit l’ODT en PDF avec LibreOffice.
  3. Un hash du fichier (SHA‑256) est envoyé à http://localhost:8085/sign.
  4. Le serveur DocSign répond avec un token (signature_token).
  5. Dolibarr stocke le token et inscrit la date dans le champ signature_token.
  6. 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.com avec 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 ! 🎉

Publications similaires