Audit

Le journal d'audit répond à trois questions : qui a fait quoi, quand, et ce qui a changé. Chaque création, modification ou suppression effectuée dans l'ERP y laisse une trace consultable, filtrable et exportable.

/audit /api/audit /api/audit/retention audit.view audit.export audit.manage

À quoi sert ce module

Tous les modules de l'ERP (clients, factures, devis, documents, paramètres…) enregistrent leurs actions dans un journal commun. Le module Audit est l'écran qui permet de le consulter : il affiche les entrées les plus récentes, retrouve l'historique d'une fiche précise et montre, pour une modification, la valeur de chaque champ avant et après.

Il s'adresse aux administrateurs, aux responsables de la conformité et à toute personne chargée de vérifier « qui a touché à quoi ». Le journal est en lecture seule : personne, pas même un administrateur, ne peut modifier ou supprimer une entrée depuis l'écran. Seule la purge automatique liée à la durée de conservation retire les entrées anciennes.

Installation et accès. Le module se met en service depuis Paramètres → Modules : il passe de disponible à installé (bouton Installer), puis à activé (interrupteur). Il n'a aucune dépendance et ne crée aucune table : il lit le journal du socle, qui est alimenté même quand le module n'est pas installé. Aucune permission n'est donnée par défaut aux rôles : seuls les administrateurs y ont accès, sauf si vous attribuez les permissions audit.* à un rôle. L'entrée Audit apparaît dans la section Administration de la barre latérale.

Vue d'ensemble de l'écran

https://erp.entreprise.fr/audit
Journal d'auditExporter CSV

Rétention : 365 jours (purge automatique chaque jour) · IP pseudonymisée (HMAC), jamais stockée en clair · journal en lecture seule.

DuAuAuteur : TousAction : ToutesEntitéIdentifiantFiltrerRéinitialiser
DateAuteurActionEntitéIdentifiantChangements
17/10/2026 14:32Marie Laurentclient_updateclientCLI-00422 champs
17/10/2026 11:05Paul Martininvoice_createinvoiceFAC-2026-0118-
16/10/2026 18:47Système / anonymedocument_signeddocumentdoc_mgz3k8…-
16/10/2026 09:12compte suppriméclient_deleteclientCLI-0007-
15/10/2026 16:20Adminaudit_exportaudit_log-1 champ

Le journal, du plus récent au plus ancien, 50 entrées à la fois (bouton Charger plus en bas de liste). Un clic sur une ligne la déplie pour afficher le détail des changements.

Filtrer le journal

La barre de filtres restreint le journal à une période, une personne ou une fiche. Les filtres se combinent.

  1. Du / Au — période à examiner ; les deux bornes sont incluses. La date de début doit précéder la date de fin.
  2. Auteur — un compte précis parmi tous les comptes de l'ERP.
  3. Action — une action exacte (invoice_update) ou une famille (invoice_* regroupe toutes les actions qui commencent par invoice_).
  4. Entité — le type d'objet concerné (client, invoice, quote…), avec suggestions à la saisie.
  5. Identifiant — l'identifiant exact d'une fiche, ex. CLI-0001.
  6. Cliquez sur Filtrer. Les sélecteurs Auteur et Action s'appliquent dès qu'on les change ; Réinitialiser vide tous les filtres.
Un lien qui garde les filtres. L'adresse de la page se met à jour à chaque filtrage, par exemple /audit?entity=client&entity_id=CLI-0001. Copiez-la pour partager avec un collègue l'historique complet d'une fiche : il retrouvera la même vue filtrée (sous réserve d'avoir la permission audit.view).

Lire une entrée

Chaque ligne indique la date, l'auteur, l'action, le type d'objet et son identifiant, ainsi que le nombre de champs modifiés. Cliquez sur la ligne pour la déplier :

La colonne Auteur affiche le nom de la personne (son e-mail au survol). Deux libellés particuliers : compte supprimé quand le compte n'existe plus (l'entrée est conservée), et « Système / anonyme » pour une action faite sans session ouverte, comme une tâche automatique ou une signature en ligne par un client.

Couleur de l'actionVerbes concernés (fin du nom d'action)
Vertcréation, ajout, signature, activation, installation, approbation, envoi (_create, _sign, _install, _send…).
Bleumodification, enregistrement, déplacement, bascule, téléversement (_update, _save, _toggle, _upload…).
Orangeexport, téléchargement, désactivation, test (_export, _download, _disable…).
Rougesuppression, purge, refus, annulation, échec (_delete, _purge, _cancel, _failed…).
Gristoute autre action (connexion, etc.).
L'adresse IP n'est jamais stockée en clair. Le journal conserve une empreinte de l'adresse IP (calcul HMAC tronqué), pas l'adresse elle-même. Deux entrées venant de la même adresse ont la même empreinte, ce qui permet de rapprocher des actions, mais l'adresse d'origine ne peut pas être relue.

Exporter en CSV

Le bouton Exporter CSV (visible avec la permission audit.export) télécharge les entrées correspondant aux filtres en cours, au format CSV prêt pour Excel (UTF-8, séparateur « ; »).

  1. Réglez les filtres pour cibler la période ou la fiche voulue.
  2. Cliquez sur Exporter CSV : le fichier audit-AAAAMMJJ-HHMMSS.csv se télécharge sans quitter la page.
  3. Colonnes : Date, Auteur, Action, Entité, Identifiant, Changements (JSON), Empreinte IP, Navigateur.
10 000 lignes au maximum par export. Ce sont les 10 000 entrées les plus récentes du filtre. Pour un historique plus long, exportez par périodes successives (filtres Du / Au). L'export lui-même est tracé dans le journal (action audit_export, avec les filtres utilisés).

Durée de conservation

Le journal n'est pas conservé indéfiniment. Avec la permission audit.manage, le bandeau en haut de page affiche un champ Conserver … jours : saisissez une valeur entre 1 et 365 jours (365 par défaut) puis cliquez sur Enregistrer. Le changement est lui-même tracé (action audit_retention_update, ancienne et nouvelle valeur).

Cron (hôte)→ Planificateur→ File de tâches→ Worker→ Purge des entrées trop anciennes

Chaque jour, une tâche audit_retention supprime les entrées plus anciennes que la durée choisie. Elle est créée par le planificateur (--schedule) et exécutée par le worker (--work). La commande de purge nocturne --purge applique la même durée, y compris quand le module Audit n'est pas activé.

Sans cron configuré, rien n'est purgé. La purge dépend des tâches planifiées du serveur (--schedule, --work, --purge). Si elles ne sont pas en place, le journal continue de grossir. Leur mise en place relève de l'administration système.
Réduire la durée efface définitivement. Passer de 365 à 30 jours supprime, dès la prochaine purge, toutes les entrées de plus de 30 jours, sans retour possible (hors restauration d'une sauvegarde). Exportez d'abord ce que vous devez garder.

Permissions

PermissionCe qu'elle ouvre
audit.viewConsulter le journal, filtrer, déplier le détail des changements.
audit.exportExporter le journal en CSV (bouton Exporter CSV).
audit.manageRégler la durée de conservation (1 à 365 jours).

Aucune de ces permissions n'est attribuée automatiquement : créez au besoin un rôle dédié. Voir Rôles & permissions.

Liens utiles