Worum es geht
Ein Mandant hat in CIAS zwei Zustände, die unabhängig voneinander sind:
- Die Stellung (
status) sagt, wie der Kunde geschäftlich dasteht: noch nicht in Betrieb, aktiv, gesperrt, beendet. Sie ändern Menschen, meist ein Plattform-Administrator. - Der Rollout (
provisioningState) sagt, wie weit die technische Einrichtung gekommen ist, vor allem die Datenbank des Mandanten. Ihn ändert das System.
Beide sind getrennt, weil sie verschiedene Fragen beantworten. Ein Mandant kann fertig eingerichtet und gesperrt sein, etwa bei einer offenen Rechnung. Wären beide Zustände ein einziger, sähe „gesperrt“ genauso aus wie „halb eingerichtet“.
Die Stellung
stateDiagram-v2
direction LR
[*] --> PENDING: angelegt
PENDING --> ACTIVE: aktivieren (nur wenn PROVISIONED)
PENDING --> SUSPENDED: sperren
ACTIVE --> SUSPENDED: sperren
SUSPENDED --> ACTIVE: entsperren (wenn PROVISIONED)
SUSPENDED --> PENDING: entsperren (Rollout nicht fertig)
PENDING --> CLOSED: schließen
ACTIVE --> CLOSED: schließen
SUSPENDED --> CLOSED: schließen
CLOSED --> [*]
| Stellung | Bedeutung | Bedient |
|---|---|---|
PENDING | angelegt, noch nicht in Betrieb. Die Einrichtung läuft noch oder ist gescheitert | nein |
ACTIVE | in Betrieb | ja, innerhalb des Gültigkeitsfensters |
SUSPENDED | vorübergehend gesperrt. Die Daten bleiben, der Mandant kann ohne neue Einrichtung entsperrt werden. Nur Entsperren hebt die Sperre auf, Aktivieren nicht | nein |
CLOSED | beendet, endgültig. Der Datensatz bleibt, damit das Audit weiß, wem die alten Einträge gehören | nein |
Nach PENDING führt nur ein Weg zurück: Wer einen Mandanten entsperrt, dessen Einrichtung noch nicht fertig ist, bekommt ihn als PENDING zurück. Sobald die Einrichtung gelingt, wird er ACTIVE.
Der Rollout
stateDiagram-v2
direction LR
[*] --> NOT_PROVISIONED: angelegt
NOT_PROVISIONED --> IN_PROGRESS: Einrichtung beginnt
IN_PROGRESS --> PROVISIONED: Datenbank bereit
IN_PROGRESS --> FAILED: Einrichtung gescheitert
IN_PROGRESS --> FAILED: keine Rückmeldung nach 30 min
FAILED --> IN_PROGRESS: erneut versuchen
| Rollout | Bedeutung |
|---|---|
NOT_PROVISIONED | noch nichts eingerichtet. Kommt nur in dem Moment vor, in dem der Datensatz entsteht |
IN_PROGRESS | die Einrichtung läuft. CIAS merkt sich, wann sie begonnen hat |
PROVISIONED | Datenbank und Schema sind da. Erst jetzt darf der Mandant ACTIVE werden |
FAILED | die Einrichtung ist gescheitert oder hat sich nicht zurückgemeldet. Der Mandant wird nicht bedient, der Fehler bleibt sichtbar, ein neuer Versuch ist möglich |
FAILED ist kein Endzustand. Genau dafür wird es gespeichert: Ein gescheiterter Rollout soll erkennbar und reparierbar sein, statt dass ein Mandant verschwindet oder halb fertig als „angelegt“ gilt. Wie der neue Versuch geht, steht unter Einen Mandanten anlegen und bereitstellen.
Wie beide zusammenspielen
-
1Admin→CIASlegt den Mandanten
nordbauan -
2CIASspeichert ihn als
PENDING/IN_PROGRESSmit Startzeit -
3CIAS→Databaselässt die Datenbank einrichten
-
4CIASEinrichtung gelungen →
PROVISIONED, dann sofortACTIVEErgebnis: Der Mandant wird bedient. EventsCreatedundActivated
Ein erfolgreich angelegter Mandant ist also sofort aktiv. PENDING sieht man nur, solange die Einrichtung läuft oder wenn sie gescheitert ist.
Aber: Die Einrichtung macht nur einen Mandanten in PENDING aktiv. Die Einrichtung dauert eine Weile, und in dieser Zeit kann ein Administrator den Mandanten sperren oder schließen. Diese Entscheidung eines Menschen gilt:
Wann: Niemand hat eingegriffen, der Normalfall
-
1CIASRollout →
PROVISIONED, Stellung →ACTIVE
Ergebnis: Der Mandant wird bedient. Events Created und Activated
Wann: Der Mandant wurde während der Einrichtung oder nach einem Fehlschlag gesperrt, danach lief ein Neuversuch
-
1CIASRollout →
PROVISIONED, Stellung bleibtSUSPENDED
Ergebnis: Der Mandant wird nicht bedient. Nur das Event Created, kein Activated. Er wird erst bedient, wenn ihn jemand entsperrt
Wann: Der Mandant wurde während der Einrichtung geschlossen
-
1CIASRollout →
PROVISIONED, Stellung bleibtCLOSED
Ergebnis: Die Datenbank ist da, der Mandant bleibt beendet. Einen Neuversuch für einen geschlossenen Mandanten lehnt CIAS ab
Alle Kombinationen, die vorkommen:
| Stellung | Rollout | Was das heißt |
|---|---|---|
PENDING | IN_PROGRESS | Einrichtung läuft gerade |
PENDING | FAILED | Einrichtung gescheitert, wartet auf einen neuen Versuch |
ACTIVE | PROVISIONED | normaler Betrieb |
SUSPENDED | PROVISIONED | gesperrt, Datenbank vorhanden, jederzeit entsperrbar |
SUSPENDED | FAILED oder IN_PROGRESS | gesperrt, bevor die Einrichtung fertig war |
CLOSED | beliebig | beendet |
Wird der Mandant bedient?
Die Antwort, die das Mandanten-Tor bei jeder Anfrage bekommt, rechnet CIAS aus Stellung und Gültigkeitsfenster aus:
| Stellung | Gültig ab | Gültig bis | Antwort |
|---|---|---|---|
| ACTIVE | leer oder heute oder früher | leer oder heute oder später | ja |
| ACTIVE | nach heute | – | nein, der Vertrag hat noch nicht begonnen |
| ACTIVE | – | vor heute | nein, der Vertrag ist abgelaufen |
| PENDING, SUSPENDED oder CLOSED | – | – | nein |
Beide Grenzen des Gültigkeitsfensters sind Tage und zählen mit: Ein Mandant mit „gültig bis 31.12.“ wird am 31.12. noch bedient und am 1.1. nicht mehr. „Heute“ ist das Datum des Servers, auf dem CIAS läuft. Wie man das Fenster setzt, steht unter Mandanten sperren, schließen, Gültigkeit.
Der Rollout steht nicht in der Tabelle, weil er schon in der Stellung steckt: Ohne PROVISIONED kann ein Mandant nie ACTIVE werden.