ED07 - GoBD Process Documentation: Mandatory Fields, Versioning, Approval

Problem

GoBD Rz. 64–91 requires process documentation - but in the SME sector it is the exception rather than the rule:

Key Statement

GoBD-compliant process documentation in a Git repo means:

  1. The process doc is a versioned Git artifact - not a Word document, but Markdown + JSON in the repo
  2. Every change is traceable - git log shows who, when, what, why (commit author, uuidV7 timestamp, diff, commit message)
  3. Approval via tags - a Git tag marks the approved state of the process doc (e.g. vd-v1.0-2026)
  4. System changes are continued in the documentation - during a migration, a new commit is created with a rationale; the old version remains traceable
  5. The repo itself is part of the process documentation - git log shows the procedure, .gitcover/schemas/ shows the data structures, Git hooks show the controls

Compliance by Design: Process documentation is not an afterthought - it is created through the use of Git. Anyone who works with Git repositories automatically documents their process through commits, diffs and tags. The formal process documentation complements this with the human-readable description.

What Is Process Documentation?

%%{init: {'theme':'base','themeVariables':{'primaryColor':'#FBFAF7','primaryTextColor':'#0F1B33','primaryBorderColor':'#6B7280','lineColor':'#6B7280'}}}%% flowchart TD VD["Verfahrensdokumentation
(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
GoBD Requirement Content How Git Fulfills It
Procedure (Rz. 64–71) Description of the accounting process git log shows every step; commit messages document the rationale
System environment (Rz. 72–76) Software, hardware, versions .gitcover/ with schemas and dictionaries; git config shows settings
Organization (Rz. 77–80) Responsibilities, roles, authorizations role field per artifact; git log --author shows responsibility
Controls (Rz. 81–85) Internal controls, plausibility checks Pre-Commit hooks (schema, spheres, obsolescence); Post-Commit hooks (index)
Data (Rz. 86–91) Data structures, formats, interfaces JSON schemas in .gitcover/schemas/; sidecars with v7g_taxonomy

Mandatory Fields of the Process Documentation

Structure in the Git Repo

ORG-1/
├── .gitcover/
│   ├── schemas/                    # Datenstrukturen (Rz. 86–91)
│   │   ├── diary-entry-1.0.schema.json
│   │   ├── v7g-sidecar-1.0.schema.json
│   │   └── timesheet-1.0.schema.json
│   ├── dictionaries/               # Klassifizierungen (Rz. 86–91)
│   │   ├── spheres.json
│   │   ├── roles.json
│   │   └── beleg-types.json
│   └── LEGAL_ENTITY.v7g.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

Process Doc as a JSON Artifact

The process documentation itself is a versioned artifact with V7GUID (class) and uuidV7 (object ID as 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"]
}

Note: The uuidV7 is the DocID of the process documentation. The composite key V7GUID:uuidV7 is used for storage organization and DB queries. There is no separate datetime/date field - the time is embedded in the uuidV7.

Versioning and Approval

%%{init: {'theme':'base','themeVariables':{'primaryColor':'#FBFAF7','primaryTextColor':'#0F1B33','primaryBorderColor':'#6B7280','lineColor':'#6B7280'}}}%% flowchart TD E["Entwurf
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 Git Operation GoBD Reference
Draft Commit on main (or feature branch) Rz. 83 (currency)
Review Further commits with changes Rz. 83 (traceability)
Approval git tag vd-v1.0-2026 Rz. 83 (binding state)
Production Tag is immutable (Protected) Rz. 146 (immutability)
Change New commits + new tag Rz. 146–150 (system change)
Obsolescence Old version obsolescence: superseded_by Rz. 146 (traceability)

Important - Tags as approval markers: A Git tag is immutable

  • it marks an exact commit state that cannot be changed afterward. This corresponds to GoBD Rz. 146 (immutability). The auditor can use git show vd-v1.0-2026 to reconstruct the exact state of the process documentation at the time of the audit.

System Change and Migration (GoBD Rz. 146–150)

%%{init: {'theme':'base','themeVariables':{'primaryColor':'#FBFAF7','primaryTextColor':'#0F1B33','primaryBorderColor':'#6B7280','lineColor':'#6B7280'}}}%% flowchart LR A["Altes System
(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 requires the following for a system change:

  1. Keep the old system's data available - git bundle as a self-contained archive (no cloud account required, see ED05 Z3)
  2. Update the process documentation - new commit with a rationale: "Migration from Cloud-Lohn to GitCover, date, role"
  3. Document the transition period - which data was migrated and how, which checks were performed
  4. Mark the old version as obsolete - obsolescence: superseded_by in the old process documentation artifact

Practical example: The entrepreneur (E1) migrates from Cloud-Lohn software to GitCover. They create a git bundle of the old data, update the process documentation (a new commit with commit message "Migration to GitCover, 260815, role: GF"), mark the old version as superseded and tag the new version as vd-v2.0-2027. The auditor can trace both versions.

The Repo Itself as Process Documentation

%%{init: {'theme':'base','themeVariables':{'primaryColor':'#FBFAF7','primaryTextColor':'#0F1B33','primaryBorderColor':'#6B7280','lineColor':'#6B7280'}}}%% flowchart TD R["Git-Repo"] R --> GL["git log
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

The key insight: A Git repo is itself process documentation - git log shows the procedure, git config shows the system environment, Git hooks show the controls, and schemas show the data structures. The formal process documentation (Markdown in docs/verfahrensdokumentation/) adds the human-readable description to this - but the authoritative source is the repo itself.

Risk Leverage

Today (cheap) Tomorrow (revision-proof) Risk Mitigated
Process documentation as a Git artifact Meets GoBD Rz. 64–91 by design Estimate under § 162 AO (no process documentation)
git log as evidence of the procedure Traceability within a reasonable period Challenge to the process documentation
Tags as approval markers Immutable state at the time of the audit Challenge to the state
System change as a commit + bundle Compliant with GoBD Rz. 146–150 GoBD violation due to an undocumented change
Obsolescence marker Old versions remain traceable Concealed changes
Repo itself as process documentation Automatic documentation through use Process doc outdated

Harness Requirements (Preview)

Derived from ED07:

ID Requirement Priority
FA-6.1 Process documentation as a versioned Git artifact MUST
FA-6.3 SKR04 chart of accounts management (including payroll accounts) SHOULD
FA-6.6 Immutability after approval (tags, Protected Branches) MUST
FA-6.7 Static web generator for period close (Z3+) SHOULD
TA-2.1 Pre-Commit: JSON schema validation MUST
TA-2.4 Pre-Commit: obsolescence status check SHOULD
TA-2.6 Post-Commit: auto-index generation SHOULD

The complete requirements list is in Harness-Anforderungen.md.

Sources

Role Location Purpose
Primary / SSoT git.gitcover.org/GCC Canonical storage (GPG-signed, versioned)
Public OSS Mirror / CDN codeberg.org/gitcover-commons Read-only mirror; FLOSS discovery
Community Hub github.com/gitcover-commons Issues & Discussions; source code reference on Codeberg

Note: This mapping of sources, mirror and community hub reflects the current state and may change. Please check the respective canonical source on gitcover.org for the current state.