ED07 - Documentation des procédures GoBD : champs obligatoires, versionnement, validation
Problème
GoBD Rz. 64–91 exige une documentation des procédures - mais dans le secteur des PME, elle constitue la grande exception :
- « Qu’est-ce qu’une documentation des procédures ? » - la plupart des entrepreneurs ne connaissent pas le terme, encore moins son contenu
- « C’est le conseiller fiscal qui le fait » - beaucoup pensent que le StB établit la documentation des procédures - mais il ne peut que guider, l’entrepreneur doit lui-même la créer et l’entretenir
- Document Word sur le bureau - 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
- Aucun versionnement - les modifications de la documentation des procédures ne sont pas documentées de manière traçable - mais GoBD Rz. 83 exige l’actualisation et la traçabilité
- Aucune validation - la documentation des procédures n’est jamais « validée » - mais GoBD exige que l’état au moment de l’audit soit clair
- Changement de système non documenté - lors d’une migration vers un nouveau logiciel, la documentation des procédures n’est pas mise à jour - GoBD Rz. 146–150 l’exige expressément
Message clé
Une documentation des procédures conforme aux GoBD dans un dépôt Git signifie :
- La documentation des procédures est un artefact Git versionné - non 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 consignés - 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 la procédure,.gitcover/schemas/montre les structures de données, les hooks Git montrent les contrôles
Compliance by Design : La documentation des procédures n’est pas ajoutée après coup - elle naît de l’utilisation de Git. Ceux qui travaillent avec des dépôts Git documentent leur procédure automatiquement par des commits, des diffs et des tags. La documentation formelle des procédures la complète par la description lisible par l’homme.
Qu’est-ce qu’une documentation des procédures ?
(GoBD Rz. 64–91)"] VD --> V["Verfahren
(Wie wird gebucht?)"] VD --> S["Systemumgebung
(Welche Software/Hardware?)"] VD --> O["Organisation
(Wer macht was?)"] VD --> K["Kontrollen
(Wie wird geprüft?)"] VD --> D["Daten
(Welche Formate/Strukturen?)"] V --> G["Git-Repo
(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 |
|---|---|---|
| Procédure (Rz. 64–71) | Description de la procédure de comptabilité | git log montre chaque étape ; les messages de commit documentent la justification |
| Environnement système (Rz. 72–76) | Logiciel, matériel, versions | .gitcover/ avec schémas, dictionnaires ; git config montre les paramètres |
| Organisation (Rz. 77–80) | Responsabilités, rôles, autorisations | champ role par artefact ; git log --author montre la responsabilité |
| Contrôles (Rz. 81–85) | Contrôles internes, vérifications de plausibilité | hooks pre-commit (schéma, sphères, obsolescence) ; hooks post-commit (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/ # Datenstrukturen (Rz. 86–91)
│ │ ├── diary-entry-1.0.schema.json
│ │ ├── v7g-sidecar-2.0.schema.json
│ │ └── timesheet-1.0.schema.json
│ ├── dictionaries/ # Klassifizierungen (Rz. 86–91)
│ │ ├── spheres.json
│ │ ├── roles.json
│ │ └── beleg-types.json
│ └── LEGAL_ENTITY.gc.json # Tenant-Identität
├── docs/
│ └── verfahrensdokumentation/
│ ├── README.md # Einstieg + Übersicht
│ ├── 01-verfahren.md # Buchführungsverfahren (Rz. 64–71)
│ ├── 02-systemumgebung.md # Software/Hardware (Rz. 72–76)
│ ├── 03-organisation.md # Zuständigkeiten (Rz. 77–80)
│ ├── 04-kontrollen.md # Internen Kontrollen (Rz. 81–85)
│ └── 05-daten.md # Datenstrukturen (Rz. 86–91)
└── .githooks/
├── pre-commit # Kontrollen (Rz. 81–85)
└── post-commit # Index-Generierung
Documentation des procédures comme artefact JSON
La documentation des procédures est elle-même 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>",
"docUid": "<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 se trouve dans lauuidV7.
Versionnement et validation
Commit 1"] E --> R["Review
Commit 2 (Änderungen)"] R --> F["Freigabe
Tag: vd-v1.0-2026"] F --> P["Produktiv
Stand v1.0"] P --> A["Änderung nötig
(z. B. Systemwechsel)"] A --> E2["Entwurf v2.0
Commit 3"] E2 --> R2["Review v2.0"] R2 --> F2["Freigabe
Tag: vd-v2.0-2027"] F2 --> P2["Produktiv
Stand 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 branche de fonctionnalité) |
Rz. 83 (actualisation) |
| Revue | Autres commits 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 exact de commit, qui ne peut pas être modifié après coup. Cela correspond à GoBD Rz. 146 (immuabilité). L’auditeur peut avec
git show vd-v1.0-2026reconstruire l’état exact de la documentation des procédures au moment de l’audit.
Changement de système et migration (GoBD Rz. 146–150)
(z. B. Cloud-Lohn)"] A --> M["Migration
Commit mit Begründung"] M --> N["Neues System
(z. B. Git-Cover)"] A --> DA["Daten alt
git bundle
(self-contained)"] N --> DN["Daten neu
Git-Repo
(fortgeführt)"] M --> VD["Verfahrensdoku
fortgeschrieben
+ Commit-Message
mit Begründung"] 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
GoBD Rz. 146–150 exige lors d’un changement de système :
- Maintenir les données de l’ancien système disponibles -
git bundlecomme archive autonome (aucun compte cloud nécessaire, voir ED05 Z3) - Mettre à 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 cloud vers GitCover. Il crée ungit bundledes anciennes données, met à jour la documentation des procédures (nouveau commit avec message de commit « Migration vers GitCover, 260815, rôle : GF »), marque l’ancienne version commesupersededet tague la nouvelle version commevd-v2.0-2027. L’auditeur peut reconstituer les deux versions.
Le dépôt lui-même comme documentation des procédures
Verfahren (Rz. 64–71)"] R --> GC["git config
Systemumgebung (Rz. 72–76)"] R --> GA["git log --author
Organisation (Rz. 77–80)"] R --> GH["Git-Hooks
Kontrollen (Rz. 81–85)"] R --> SC["Schemata + Sidecars
Daten (Rz. 86–91)"] GL --> VD["Verfahrensdokumentation
entsteht automatisch"] 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 la procédure,git configmontre l’environnement système, les hooks Git montrent les contrôles, les schémas montrent les structures de données. La documentation formelle des procédures (Markdown dansdocs/verfahrensdokumentation/) la complète par la description lisible par l’homme
- mais la source faisant autorité est le dépôt lui-même.
Levier de risque
| Aujourd’hui (cheap) | Demain (sécurisé pour l’audit) | Risque réduit |
|---|---|---|
| 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 de la procédure |
Traçabilité dans un délai approprié | Contestation de la documentation des procédures |
| Tags comme marqueurs de validation | État immuable au moment de l’audit | Contestation de l’état |
| Changement de système comme commit + bundle | Conforme aux GoBD Rz. 146–150 | Violation des GoBD par 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 |
Exigence de 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, branches protégées) | MUST |
| FA-6.7 | Générateur web statique pour la clôture de période (Z3+) | SHOULD |
| TA-2.1 | Pre-commit : validation de 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 se trouve dans Harness-Anforderungen.md.
Sources
- GoBD (circulaire BMF, Rz. 64–91 - documentation des procédures, Rz. 146–150 - changement de système, Rz. 83 - actualisation)
- AO (§ 146 - prescriptions d’ordre, § 147 - conservation)
E1/agents/(anonymisé) - concept SSoT avec documentation des procédures comme artefact Git
Topologie des sources et liens de référence CDN
| Rôle | Emplacement | Objet |
|---|---|---|
| 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 attribution des sources, du miroir et du community hub reflète l’état actuel et peut changer. Veuillez vérifier la source canonique respective sur gitcover.org pour l’état actuel.