Worum es geht
nordbau kündigt zum 31. Dezember. Ab dem 1. Januar soll niemand mehr arbeiten können, die Daten sollen aber erst einmal vollständig bleiben – für Rückfragen, für die Aufbewahrung, für einen möglichen Rückzieher.
Alles, was dafür nötig ist, geschieht in CIAS, am Datensatz des Mandanten. CDMS erfährt davon nichts: Es fragt bei jeder Anfrage am Mandanten-Tor nach, ob dieser Mandant heute bedient wird, und richtet sich nach der Antwort.
Drei Wege, den Betrieb zu beenden
POST …/{id}/validity- „gültig bis 31.12.“, der Stichtag wirkt von selbst
- der Mandant bleibt
ACTIVE, wird aber nicht mehr bedient - der richtige Weg, wenn das Ende feststeht
- lässt sich durch ein neues Fenster wieder öffnen
POST …/{id}/suspend- sofort außer Betrieb, Stellung
SUSPENDED - der richtige Weg bei offener Rechnung oder einem Vorfall
- umkehrbar: entsperren (
…/resume) setzt ihn wieder in Betrieb - nur Entsperren hebt die Sperre auf, Aktivieren lehnt mit 409 ab
POST …/{id}/close- endgültig, Stellung
CLOSED - danach lehnen aktivieren, entsperren und sperren mit 409 ab
- der Schlüssel bleibt belegt und ist für keinen neuen Kunden zu haben
- der Datensatz bleibt, damit das Audit weiß, wem alte Einträge gehören
Der Zeitstrahl
gantt
dateFormat YYYY-MM-DD
axisFormat %d.%m.
section nordbau
wird bedient (ACTIVE, im Fenster) :active, 2026-11-01, 2026-12-31
nicht mehr bedient (Fenster vorbei) :crit, 2026-12-31, 2027-02-01
geschlossen (CLOSED) :crit, 2027-02-01, 2027-03-01
Am 31.12. wird noch bedient: Beide Grenzen des Fensters sind Tage und zählen mit. Am 1.1. antwortet das Tor „nicht bedient“, ohne dass jemand etwas tun muss. Das Schließen kommt später, wenn feststeht, dass der Kunde nicht zurückkommt.
-
1Admin→CIASsetzt das Gültigkeitsfenster auf
validUntil = 2026-12-31Der Aufruf ersetzt immer das ganze Fenster: Ein leerer Wert heißt „offen“, nicht „wie bisher“. -
2CIASDas Tor antwortet ab dem 1.1. „nicht bedient“, spätestens 30 Sekunden nach dem Stichtag überall
-
3Admin→CIASschließt den Mandanten:
POST /cias/admin/tenants/{id}/close -
4CIASStellung
CLOSED, EreignisClosedim AuditErgebnis: Die Datenbank des Kunden, seine Dateien, seine Konten und das Audit bleiben unverändert liegen.
Die {id} ist die technische ID, nicht der Schlüssel. Sie liefert GET /cias/admin/tenants/by-key?key=nordbau.
Was in der Sekunde danach passiert
Das Tor merkt sich jede Antwort eine kurze Zeit, standardmäßig 30 Sekunden (codamai.cias.tenant-gate.ttl), und zwar je Knoten der Anwendung. Deshalb hört der Betrieb nicht schlagartig auf:
sequenceDiagram
participant A as Admin
participant C as CIAS
participant G as Mandanten-Tor
participant K as Client von nordbau
K->>G: Anfrage (0 s)
G->>C: Wird nordbau bedient?
C-->>G: ja, für 30 s gemerkt
A->>C: nordbau sperren (10 s)
K->>G: Anfrage (20 s)
G-->>K: gemerkt: ja, läuft durch
K->>G: Anfrage (35 s)
G->>C: Wird nordbau bedient?
C-->>G: nein
G-->>K: 403 tenant-not-served
| Was | Wirkung |
|---|---|
| Anfragen, die das Tor schon passiert haben | laufen ganz zu Ende, samt Schreibvorgang und Transaktion |
| neue Anfragen | bis zu 30 Sekunden noch aus dem Gedächtnis zugelassen, danach 403 cias.authentication.tenant-not-served |
| Anmeldung bei Keycloak | gelingt weiter. Keycloak weiß nichts von der Sperre, die Konten sind ja unverändert |
Anfragen an CIAS selbst, etwa /cias/me | ebenfalls 403: Das Tor steht vor jeder Anfrage, deren Token diesen Mandanten nennt |
| Zeitgeber und Nachrichtenempfänger | arbeiten nicht mehr für diesen Mandanten, sofern sie wie vorgesehen über TenantScope laufen: Das fragt dasselbe Tor |
| andere Mandanten | gar nicht betroffen |
Die Merkzeit ist damit eine Sicherheitseinstellung: Sie legt fest, wie lange ein eben gesperrter Kunde noch weiterarbeitet.
-
CIASToken prüfenSignatur und Ablauf gültig?↳ nein 401
-
CIASMandant bestimmenWelcher Mandant ist gemeint?↳ nein 403
tenant-unresolved -
CIASMandanten-TorWird
nordbauheute bedient?↳ nein 403cias.authentication.tenant-not-served– hier endet jetzt alles - erreicht CDMS gar nicht mehr
Für alle Ablehnungen gibt es nur diesen einen Schlüssel: gesperrt, geschlossen, abgelaufen und unbekannt sehen von außen gleich aus. Sonst könnte jeder mit einem gültigen Token Firmennamen durchprobieren und daraus die Kundenliste ablesen.
Was bleibt und was weg ist
- die Datenbank des Mandanten mit allen Tabellen, Zeilen und Revisionen
- alle Dateien im Dateispeicher
- die Konten der Personen in Keycloak, aktiv, samt Mitgliedschaft in der Organisation
- die Benutzerdatensätze und Rollenvergaben in CIAS
- das CIAS-Audit in der System-Datenbank, mit
SuspendedundClosed - der Mandantendatensatz samt Schlüssel
- jede Anfrage, die diesen Mandanten nennt
- jede Arbeit ohne Anfrage für diesen Mandanten
- nach einer Weile ohne Zugriff auch Verbindungspool und Hibernate-Objekte, die CDMS für ihn bereithielt
Der letzte Punkt ist reine Aufräumarbeit: CDMS räumt einen Mandanten, der länger nicht gebraucht wurde, aus seinem Vorrat (standardmäßig nach 1800 Sekunden). Die Datenbank selbst bleibt davon unberührt – CDMS löscht nie eine Datenbank. Sie zu entfernen ist ein eigener, bewusster Schritt außerhalb der API.
Die Personen des Kunden
Ein gesperrter Mandant nimmt niemandem sein Konto. Die Personen von nordbau können sich weiter anmelden, bekommen Tokens und laufen bei jeder Anfrage ins Tor. Wenn ihre Konten auch enden sollen, ist das ein eigener Handgriff je Person:
| Ziel | Handgriff |
|---|---|
| Der Kunde soll nicht mehr arbeiten können | Mandant sperren. Wirkt nach höchstens 30 Sekunden für alle |
| Niemand des Kunden soll sich mehr anmelden können | zusätzlich jedes Konto sperren oder schließen, siehe Eine Person verlässt die Firma |
| Der Kunde könnte zurückkommen | sperren statt schließen, oder nur das Gültigkeitsfenster setzen |
| Der Kunde ist endgültig weg | schließen. Danach führt kein Weg zurück |
Fallen
Weiter
- Mandanten sperren, schließen, Gültigkeit und Der Lebenslauf eines Mandanten
- Den Mandanten zulassen (Mandanten-Tor), beide Betriebsarten: Die Mandantenprüfung
- Arbeiten für einen Mandanten ohne Anfrage
- Datenbanken, Pools, Migration
- Der Fall einer einzelnen Person: Eine Person verlässt die Firma