ED07 - Documentation des procédures GoBD : champs obligatoires, gestion des versions, validation
Problème
Les GoBD Rz. 64–91 exigent une documentation des procédures - mais dans le secteur des PME, elle reste la grande exception :
- « Qu'est-ce qu'une documentation des procédures ? » - la plupart des entrepreneurs ne connaissent pas le terme, et encore moins son contenu
- « C'est le conseiller fiscal qui s'en occupe » - beaucoup pensent que le StB établit la documentation des procédures - mais il ne peut que donner des directives ; l'entrepreneur doit l'établir et la tenir à jour lui-même
- Document Word dans le tiroir - s'il existe une documentation des procédures, c'est un document Word statique qui n'est pas actualisé lors d'un changement de système - violation des GoBD
- Aucune gestion des versions - les modifications de la documentation des procédures ne sont pas documentées de manière traçable - or les GoBD Rz. 83 exigent actualité et traçabilité
- Aucune validation - la documentation des procédures n'est jamais « validée » - or les GoBD exigent que l'état au moment du contrôle soit clairement établi
- Changement de système non documenté - lors d'une migration vers un nouveau logiciel, la documentation des procédures n'est pas tenue à jour - les GoBD Rz. 146–150 l'exigent expressément
Message clé
Une documentation des procédures conforme aux GoBD dans le dépôt Git signifie :
- La documentation des procédures est un artefact Git versionné - non pas un document Word, mais Markdown + JSON dans le dépôt
- Chaque modification est traçable -
git logmontre Qui, Quand, Quoi, Pourquoi (auteur du commit, horodatageuuidV7, diff, message de commit) - Validation par tags - un tag Git marque l'état validé de la
documentation des procédures (p. ex.
vd-v1.0-2026) - Les changements de système sont documentés en continu - lors d'une migration, un nouveau commit avec justification est créé, l'ancienne version reste traçable
- Le dépôt lui-même fait partie de la documentation des procédures -
git logmontre le processus,.gitcover/schemas/montre les structures de données, les Git-Hooks montrent les contrôles
Compliance by Design : la documentation des procédures n'est pas un exercice rétrospectif - elle naît de l'utilisation de Git. Quiconque travaille avec des dépôts Git documente automatiquement son processus au moyen de commits, de diffs et de tags. La documentation formelle des procédures complète cela par la description lisible par l'humain.
Qu'est-ce qu'une documentation des procédures ?
(GoBD Rz. 64–91)"] VD --> V["Processus
(Comment comptabilise-t-on ?)"] VD --> S["Environnement système
(Quel logiciel/matériel ?)"] VD --> O["Organisation
(Qui fait quoi ?)"] VD --> K["Contrôles
(Comment est-ce vérifié ?)"] VD --> D["Données
(Quels formats/structures ?)"] V --> G["Dépôt Git
(Commits, Hooks)"] S --> G O --> G K --> G D --> G style VD fill:#0F1B33,stroke:#0F1B33,color:#FBFAF7 style V fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style S fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style O fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style K fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style D fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style G fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33
| Exigence GoBD | Contenu | Comment Git y répond |
|---|---|---|
| Processus (Rz. 64–71) | Description du processus comptable | git log montre chaque étape ; les messages de commit documentent la justification |
| Environnement système (Rz. 72–76) | Logiciels, matériel, versions | .gitcover/ avec schémas et dictionnaires ; git config montre les paramètres |
| Organisation (Rz. 77–80) | Responsabilités, rôles, autorisations | champ role par artefact ; git log --author montre les responsabilités |
| Contrôles (Rz. 81–85) | Contrôles internes, vérifications de vraisemblance | Pre-Commit-Hooks (schéma, sphères, obsolescence) ; Post-Commit-Hooks (index) |
| Données (Rz. 86–91) | Structures de données, formats, interfaces | Schémas JSON dans .gitcover/schemas/ ; Sidecars avec v7g_taxonomy |
Champs obligatoires de la documentation des procédures
Structure dans le dépôt Git
ORG-1/
├── .gitcover/
│ ├── schemas/ # Structures de données (Rz. 86–91)
│ │ ├── diary-entry-1.0.schema.json
│ │ ├── v7g-sidecar-1.0.schema.json
│ │ └── timesheet-1.0.schema.json
│ ├── dictionaries/ # Classifications (Rz. 86–91)
│ │ ├── spheres.json
│ │ ├── roles.json
│ │ └── beleg-types.json
│ └── LEGAL_ENTITY.v7g.json # Identité du tenant
├── docs/
│ └── verfahrensdokumentation/
│ ├── README.md # Introduction + vue d'ensemble
│ ├── 01-verfahren.md # Processus comptable (Rz. 64–71)
│ ├── 02-systemumgebung.md # Logiciel/Matériel (Rz. 72–76)
│ ├── 03-organisation.md # Responsabilités (Rz. 77–80)
│ ├── 04-kontrollen.md # Contrôles internes (Rz. 81–85)
│ └── 05-daten.md # Structures de données (Rz. 86–91)
└── .githooks/
├── pre-commit # Contrôles (Rz. 81–85)
└── post-commit # Génération de l'index
La documentation des procédures comme artefact JSON
La documentation des procédures elle-même est un artefact versionné avec
V7GUID (Class) et uuidV7 (Object ID comme DocID) :
{
"$schema": "https://gitcover.org/schemas/verfahrensdoku-1.0.schema.json",
"V7GUID": "<V7GUID-Class-aus-Registry>",
"uuidV7": "<uuidV7-Object-mit-vorgegebener-Zeitmarke>",
"author": "E1",
"role": "GF",
"tenant": "ORG-1",
"sphere": "wirtschaftlich",
"source": "E1",
"version": "1.0",
"status": "released",
"sections": ["01-verfahren", "02-systemumgebung", "03-organisation", "04-kontrollen", "05-daten"]
}
Remarque : la
uuidV7est la DocID de la documentation des procédures. La clé compositeV7GUID:uuidV7sert à l'organisation du stockage et aux requêtes DB. Pas de champdatetime/dateséparé - le temps est contenu dans lauuidV7.
Gestion des versions et validation
Commit 1"] E --> R["Revue
Commit 2 (modifications)"] R --> F["Validation
Tag: vd-v1.0-2026"] F --> P["Production
État v1.0"] P --> A["Modification nécessaire
(p. ex. changement de système)"] A --> E2["Brouillon v2.0
Commit 3"] E2 --> R2["Revue v2.0"] R2 --> F2["Validation
Tag: vd-v2.0-2027"] F2 --> P2["Production
État v2.0"] F -.-> OBS["obsolescence:
v1.0 → superseded by v2.0"] style E fill:#FDBA74,stroke:#C2410C,color:#0F1B33 style R fill:#FDBA74,stroke:#C2410C,color:#0F1B33 style F fill:#10A987,stroke:#0A7F5C,color:#FBFAF7 style P fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33 style A fill:#FDBA74,stroke:#C2410C,color:#0F1B33 style E2 fill:#FDBA74,stroke:#C2410C,color:#0F1B33 style R2 fill:#FDBA74,stroke:#C2410C,color:#0F1B33 style F2 fill:#10A987,stroke:#0A7F5C,color:#FBFAF7 style P2 fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33 style OBS fill:#E5E7EB,stroke:#6B7280,color:#0F1B33
| Phase | Opération Git | Référence GoBD |
|---|---|---|
| Brouillon | Commit sur main (ou Feature-Branch) |
Rz. 83 (actualité) |
| Revue | Commits supplémentaires avec modifications | Rz. 83 (traçabilité) |
| Validation | git tag vd-v1.0-2026 |
Rz. 83 (état contraignant) |
| Production | Le tag est immuable (Protected) | Rz. 146 (immuabilité) |
| Modification | Nouveaux commits + nouveau tag | Rz. 146–150 (changement de système) |
| Obsolescence | Ancienne version obsolescence: superseded_by |
Rz. 146 (traçabilité) |
Important - les tags comme marqueurs de validation : un tag Git est immuable - il marque un état de commit exact qui ne peut pas être modifié a posteriori. Cela correspond aux GoBD Rz. 146 (immuabilité). Le vérificateur peut reconstituer avec
git show vd-v1.0-2026l'état exact de la documentation des procédures au moment du contrôle.
Changement de système et migration (GoBD Rz. 146–150)
(p. ex. Cloud-Lohn)"] A --> M["Migration
Commit avec justification"] M --> N["Nouveau système
(p. ex. Git-Cover)"] A --> DA["Données anciennes
git bundle
(self-contained)"] N --> DN["Données nouvelles
Dépôt Git
(poursuivies)"] M --> VD["Documentation des procédures
tenue à jour
+ message de commit
avec justification"] style A fill:#FDBA74,stroke:#C2410C,color:#0F1B33 style M fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style N fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33 style DA fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style DN fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33 style VD fill:#10A987,stroke:#0A7F5C,color:#FBFAF7
Les GoBD Rz. 146–150 exigent en cas de changement de système :
- Maintenir disponibles les données de l'ancien système -
git bundlecomme archive self-contained (aucun compte cloud nécessaire, voir ED05 Z3) - Tenir à jour la documentation des procédures - nouveau commit avec justification : « Migration de Cloud-Lohn vers GitCover, date, rôle »
- Documenter la période de transition - quelles données ont été migrées et comment, quels contrôles ont été effectués
- Marquer l'ancienne version comme obsolète -
obsolescence: superseded_bydans l'ancien artefact de documentation des procédures
Exemple pratique : l'entrepreneur (
E1) migre d'un logiciel de paie en cloud vers GitCover. Il crée ungit bundledes anciennes données, met à jour la documentation des procédures (nouveau commit avec le message de commit « Migration vers GitCover, 260815, rôle : GF »), marque l'ancienne version commesupersededet taggue la nouvelle versionvd-v2.0-2027. Le vérificateur peut retracer les deux versions.
Le dépôt lui-même comme documentation des procédures
Processus (Rz. 64–71)"] R --> GC["git config
Environnement système (Rz. 72–76)"] R --> GA["git log --author
Organisation (Rz. 77–80)"] R --> GH["Git-Hooks
Contrôles (Rz. 81–85)"] R --> SC["Schémas + Sidecars
Données (Rz. 86–91)"] GL --> VD["Documentation des procédures
se crée automatiquement"] GC --> VD GA --> VD GH --> VD SC --> VD style R fill:#0F1B33,stroke:#0F1B33,color:#FBFAF7 style GL fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style GC fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style GA fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style GH fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style SC fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style VD fill:#10A987,stroke:#0A7F5C,color:#FBFAF7
L'idée centrale : un dépôt Git est lui-même une documentation des procédures -
git logmontre le processus,git configmontre l'environnement système, les Git-Hooks montrent les contrôles, les schémas montrent les structures de données. La documentation formelle des procédures (Markdown dansdocs/verfahrensdokumentation/) complète cela par la description lisible par l'humain - mais la source faisant autorité est le dépôt lui-même.
Levier de risques
| Aujourd'hui (peu coûteux) | Demain (à l'épreuve des contrôles) | Risque atténué |
|---|---|---|
| Documentation des procédures comme artefact Git | GoBD Rz. 64–91 satisfaites by Design | Estimation § 162 AO (absence de documentation des procédures) |
git log comme preuve du processus |
Traçabilité dans un délai raisonnable | Contestation de la documentation des procédures |
| Tags comme marqueurs de validation | État immuable au moment du contrôle | Contestation de l'état |
| Changement de système comme commit + bundle | Conforme aux GoBD Rz. 146–150 | Violation des GoBD par un changement non documenté |
| Marquage d'obsolescence | Anciennes versions traçables | Modifications dissimulées |
| Dépôt lui-même comme documentation des procédures | Documentation automatique par l'utilisation | Documentation des procédures obsolète |
Exigences Harness (aperçu)
Déductible de ED07 :
| ID | Exigence | Priorité |
|---|---|---|
| FA-6.1 | Documentation des procédures comme artefact Git versionné | MUST |
| FA-6.3 | Gestion du plan comptable SKR04 (y compris comptes de paie) | SHOULD |
| FA-6.6 | Immuabilité après validation (Tags, Protected Branches) | MUST |
| FA-6.7 | Générateur de site statique pour la clôture de période (Z3+) | SHOULD |
| TA-2.1 | Pre-Commit : validation du schéma JSON | MUST |
| TA-2.4 | Pre-Commit : vérification du statut d'obsolescence | SHOULD |
| TA-2.6 | Post-Commit : génération automatique de l'index | SHOULD |
La liste complète des exigences dans Harness-Anforderungen.md.
Sources
- GoBD (lettre du BMF, Rz. 64–91 - documentation des procédures, Rz. 146–150 - changement de système, Rz. 83 - actualité)
- AO (§ 146 - règles de forme, § 147 - conservation)
AFJD/agents/(anonymisé) - concept SSoT avec la documentation des procédures comme artefact Git
Topologie des sources et liens de référence CDN
| Rôle | Emplacement | Objectif |
|---|---|---|
| Primary / SSoT | git.gitcover.org/GCC | Stockage canonique (signé GPG, versionné) |
| Public OSS Mirror / CDN | codeberg.org/gitcover-commons | Miroir en lecture seule ; découverte FLOSS |
| Community Hub | github.com/gitcover-commons | Issues & Discussions ; référence du code source sur Codeberg |
Remarque : cette répartition entre sources, miroir et hub communautaire reflète l'état actuel et peut changer. Veuillez vérifier la source canonique respective sur gitcover.org pour connaître l'état actuel.