Worum es geht
Ben arbeitet für den Kunden nordbau und hat das Audit audit-4711 abgeschlossen. Aus den Daten in CDMS erzeugt er den endgültigen Prüfbericht. Ab da gehört das Dokument nicht mehr Ben, sondern dem Mandanten nordbau, und es muss zehn Jahre lang unverändert bleiben.
Diese Seite begleitet das Dokument über diese zehn Jahre: Anna prüft es, ein Streit friert es ein, Ben verlässt die Firma, und am Ende kündigt nordbau.
Die Beteiligten
| Wer | Was er oder sie hat | Was das in CRMS erlaubt |
|---|---|---|
| Ben | ein Konto in nordbau, keine CRMS-Rolle | rendern, mit jeder Vorlage, die er sieht. Dafür braucht es keine Rolle |
| Anna | Administratorin von nordbau, dazu crms-document-reader und crms-document-custodian | Dokumente auflisten, lesen, prüfen, Legal Hold setzen und aufheben |
| die Installation | Dokumentrevisionen an, CODAMAI_CRMS_DOCUMENT_RETENTION=P10Y | jedes endgültige Dokument wird zehn Jahre aufbewahrt |
Die Rollennamen sind die Standardwerte, eingestellt werden sie am CRMS-Modul im Hub, siehe Die Rollen. Eine Rolle zum Löschen hat in diesem Fall niemand.
Der Zeitstrahl
gantt
dateFormat YYYY-MM-DD
axisFormat %Y
section Dokument
aufbewahrt (retainUntil) :active, 2026-10-17, 2036-10-17
section Legal Hold
Streit mit dem Auftraggeber :crit, 2027-03-01, 2029-06-30
section Ben
arbeitet bei nordbau :done, 2026-01-01, 2027-09-30
section nordbau
Kunde :done, 2026-01-01, 2029-12-31
nicht mehr bedient :crit, 2029-12-31, 2036-12-31
1. Ben erzeugt den Bericht
-
1Benutzer→AnwendungBen klickt auf „Vorschau“. Die Anwendung liest das Audit aus CDMS und ruft CRMS mit
PREVIEWaufDas PDF trägt sichtbar PREVIEW und wird nirgends gespeichert. -
2Benutzer→AnwendungBen klickt auf „Abschließen“. Derselbe Aufruf, jetzt mit
FINALund der Referenzaudit-4711 -
3CRMS→CIASfragt, wer anfragt: Bens Benutzer-ID, Mandant
nordbau -
4CRMSfindet die Ausgabe von
audit-reportdes Mandanten (ScopeTENANT), prüft die Payload, rendert, siegelt -
5CRMS→Dateispeicherlegt die verschlüsselten Bytes gesperrt bis zum 17.10.2036 ab
-
6CRMS→Datenbankschreibt Revision 1 der Kette in die Datenbank von
nordbau, mit Bens Benutzer-ID, Zeit und HashesErgebnis: Ben bekommt das PDF, die Antwort nennt die Revision im HeaderCrms-Document-Revision.
Den Weg Station für Station beschreibt Vom Klick bis zum Bericht.
Eine Woche später fällt Ben ein Tippfehler in einer Antwort auf. Er korrigiert sie in CDMS und schließt noch einmal ab. Dieselbe Vorlage und dieselbe Referenz ergeben Revision 2 derselben Kette. Revision 1 bleibt daneben stehen, unverändert und mit eigener Aufbewahrung. Ein endgültiges Dokument wird nie überschrieben, siehe Was ein endgültiges Dokument ist.
2. Anna prüft den Bericht
Im Frühjahr fragt der Auftraggeber nach, ob der Bericht nachträglich geändert wurde. Anna lässt CRMS nachsehen:
GET /crms/documents?template=audit-report&scope=TENANT&reference=audit-4711
→ beide Revisionen, älteste zuerst, je mit contentHash und storedAt
POST /crms/documents/<Revision 2>/verify{ "ok": true }ok: true heißt: Jeder Eintrag der Kette stimmt mit seinem Hash, und die Bytes passen zum Inhalts-Hash. Das belegt, dass das Dokument seit dem Speichern unverändert ist. Es belegt nicht, dass Bens Antworten im Audit richtig waren. Hat der Auftraggeber nur eine Kopie des PDF, vergleicht er deren SHA-256 mit dem Crms-Document-Content-Hash oder prüft das Siegel. Siehe Prüfen und lesen.
Anna sieht dabei nur Dokumente von nordbau. Der Mandant kommt aus ihrem Token, und eine Revision eines anderen Mandanten gibt es für sie nicht: 404 document-not-found.
3. Ein Streit friert das Dokument ein
Der Auftraggeber zieht vor Gericht. Bis der Streit entschieden ist, darf nichts vom Audit verschwinden, auch nicht nach Ende der Aufbewahrung.
-
1Admin→CRMSAnna schickt
POST /crms/documents/<Revision 1>/legal-holdmit{"reason": "litigation-hold"} -
2CRMSHat Anna eine der Hold-Rollen? Sonst 403
document-access-denied, noch bevor CRMS das Dokument sucht -
3CRMS→Dateispeichersetzt auf jedes Objekt der Kette einen S3-Legal-Hold
-
4CRMS→Datenbankhängt
LEGAL_HOLD_SETmit Annas Benutzer-ID und dem Grund an die KetteErgebnis: 204. Der Hold gilt für die ganze Kette: Revision 1, Revision 2 und jede, die noch dazukommt.
Der Grund ist ein Schlüssel, kein Satz, denn er steht für immer in der Kette. Als der Streit im Juni 2029 endet, hebt Anna den Hold mit POST …/legal-hold/release und {"reason": "litigation-ended"} wieder auf. Danach gelten wieder die eigenen Aufbewahrungsdaten jeder Revision. Mehr unter Aufbewahrung, Legal Hold und Löschung.
4. Ben verlässt die Firma
Am 30. September 2027 geht Ben. Anna entzieht seine Rollen, ein Plattform-Administrator sperrt und schließt später sein Konto, wie unter Eine Person verlässt die Firma. In CRMS ändert das nichts an den Dokumenten:
- beide Revisionen des Prüfberichts, mit Bens Benutzer-ID als der Person, die sie erzeugt hat
- der Legal Hold, den Anna gesetzt hat
- die Einträge im Journal von
nordbau - Bens persönliche Vorlagen (Scope
USER) in der Datenbank vonnordbau
- Ben rendert nichts mehr, sobald sein letztes Token abgelaufen ist
- Bens persönliche Vorlagen rendern für niemanden: Die Auflösung sucht nur die Ausgaben der Person, die anfragt
Anna und alle anderen mit der Leserolle in nordbau lesen und prüfen den Bericht weiter. Für CRMS ist Ben nur eine Kennung in der Kette. Ob sein Konto noch existiert, fragt es nicht.
5. nordbau kündigt
nordbau wird ab dem 1. Januar 2030 nicht mehr bedient, später wird der Mandant geschlossen, wie unter Ein Kunde kündigt. Zwei Dinge laufen danach getrennt:
Wann: Jemand will ein Dokument von nordbau lesen, prüfen, festhalten oder löschen.
Jede dieser Anfragen nennt den Mandanten nordbau, und das Mandanten-Tor lehnt sie ab, bevor CRMS sie sieht. Das gilt für Anna, für jede andere Person des Kunden und auch für den Plattform-Support: In einen gesperrten oder geschlossenen Mandanten kann niemand wechseln. Läuft CRMS als eigener Dienst, steht dort dasselbe Tor.
Ergebnis: 403 cias.authentication.tenant-not-served. Niemand liest, prüft, setzt oder hebt einen Legal Hold auf.
Wann: Die Verankerung der Journale und der Aufbewahrungslauf, ohne Anfrage.
Diese Läufe holen sich bei CIAS die Liste aller Mandanten, bedient oder nicht. Gesperrte und geschlossene Mandanten lässt das Tor für diese Pflichtarbeit durch, denn ihre Journale müssen weiter verankert werden und ihre Aufbewahrung endet trotzdem. Der Aufbewahrungslauf löscht jede fällige Revision als Benutzer crms-retention mit dem Grund retention-expired. Eine Revision unter Legal Hold bleibt auf der Liste und kommt beim nächsten Lauf wieder dran.
Ergebnis: Am 17.10.2036 werden Bytes und Dokumentschlüssel gelöscht, die Revision bleibt als Grabstein in der Kette.
Das ist der Grund, warum Anna den Legal Hold im Sommer 2029 noch selbst aufgehoben hat. Nach der Kündigung kann ihn niemand mehr über die API aufheben. Ein Hold, der dann noch gilt, hält das Dokument über das Ende seiner Aufbewahrung hinaus fest.
Was sonst bleibt: die Datenbank, in der CRMS die Dokumente von nordbau hält, mit allen Einträgen und Grabsteinen. Eingebettet ist das die Datenbank des Mandanten in der Anwendung, beim eigenen Dienst die des Mandanten im CRMS-Dienst. CDMS löscht nie eine Datenbank, und CRMS hängt nur an. So bleibt die Kette auch nach dem Löschen prüfbar, sobald jemand wieder hineinsehen darf.
Wer wann noch lesen kann
| Mandant nordbau wird bedient | Anna hat die Leserolle | Revision hat noch Bytes | Antwort |
|---|---|---|---|
| nein | – | – | 403 cias.authentication.tenant-not-served, aus der Filterkette |
| ja | nein | – | 403 document-access-denied, ohne zu verraten, ob es das Dokument gibt |
| ja | ja | nein | 410 document-erased. Die Prüfung meldet trotzdem ok: true, solange die Kette stimmt |
| ja | ja | ja | 200 mit den Bytes, geprüft gegen den Inhalts-Hash |
Was in der Kette und im Journal steht
| Ereignis | Eintrag | Person |
|---|---|---|
| Ben schließt ab | Revision 1, document-stored | Bens Benutzer-ID |
| Ben schließt noch einmal ab | Revision 2, document-stored | Bens Benutzer-ID |
| Anna liest das Dokument | document-read, nur mit CODAMAI_CRMS_AUDIT_READS=true | Annas Benutzer-ID |
| Anna setzt den Hold | LEGAL_HOLD_SET, document-legal-hold-set, Grund litigation-hold | Annas Benutzer-ID |
| Anna hebt ihn auf | LEGAL_HOLD_RELEASED, document-legal-hold-released, Grund litigation-ended | Annas Benutzer-ID |
| Aufbewahrung endet | ERASED, document-erased, document-key-destroyed, Grund retention-expired | crms-retention |
Die Prüfung über verify zählt nicht als Lesen.
Fallen
Weiter
- Vom Klick bis zum Bericht: der Weg eines Berichts durch alle drei Module
- Was ein endgültiges Dokument ist und Die zwei Hash-Ketten
- Aufbewahrung, Legal Hold und Löschung und Ablage auf WORM-Speicher
- Eine Person verlässt die Firma und Ein Kunde kündigt