From 118445ac3fa80457dac12a854185051f7ac367de Mon Sep 17 00:00:00 2001
From: David Schwarzmann <david.schwarzmann@codecentric.de>
Date: Mon, 9 Aug 2021 08:51:03 +0000
Subject: [PATCH] Revert "Merge branch 'feat/security-event-tokens' into
 'main'"

This reverts merge request !3
---
 concepts/event-log.md                         | 227 --------------
 docs/details/crypto.md                        |   3 +-
 docs/details/event-log.md                     | 111 +++++++
 docs/details/schema-reference.md              |  36 +--
 docs/details/status.md                        |  54 ++++
 docs/getting-started/event-log.mdx            | 280 ------------------
 .../receiving/process-and-acknowledge.mdx     | 128 +-------
 docs/getting-started/sending/query-status.mdx |  79 ++---
 docs/sidebar.js                               |   3 +-
 docs/status-and-error-codes.md                |  61 ++--
 src/components/ApiLink.js                     |  15 -
 src/css/custom.css                            |   7 -
 static/images/status/status.svg               | 132 +++------
 13 files changed, 279 insertions(+), 857 deletions(-)
 delete mode 100644 concepts/event-log.md
 create mode 100644 docs/details/status.md
 delete mode 100644 docs/getting-started/event-log.mdx
 delete mode 100644 src/components/ApiLink.js

diff --git a/concepts/event-log.md b/concepts/event-log.md
deleted file mode 100644
index c83c03b26..000000000
--- a/concepts/event-log.md
+++ /dev/null
@@ -1,227 +0,0 @@
----
-title: Event Log
----
-
-Im Ereignisprotokoll (Event Log) werden relevante Ereignisse (events) aufgezeichnet. Beim Abruf des Ereignisprotokolls
-liefert die API ein Array von JSON Web Token (JWT) gemäß [RFC 7519](https://datatracker.ietf.org/doc/html/rfc7519). Der
-JWT ist einen Security-Event-Token (SET) gemäß [RFC 8417](https://datatracker.ietf.org/doc/html/rfc8417). Wie mit den
-Security-Event-Token (SET) umgegangen wird, wird in diesem Abschnitt beschrieben.
-
-## Events
-
-Das folgende Statusdiagramm zeigt die Status und Ereignisse einer Einreichung. Die Status sind als orange Ovale
-dargestellt. Rechtecke stehen für Ereignisse. Blau dargestellte Ereignisse werden vom Zustelldienst, grüne vom
-empfangenden System erstellt und signiert.
-
-![Statusdiagramm](/images/status/status.svg)
-
-Das Akzeptieren oder Zurückweisen von Einreichungen oder Antworten passiert auf einer rein technischen Ebene und trifft
-keine Aussage über die fachliche Korrektheit der Einreichungen. Gründe für technische Rückweisungen wären beispielsweise
-Probleme bei der Entschlüsselung oder Validierungsfehler der Datenstrukturen. In der folgenden Tabelle sind die Ereignisse,
-ihre Beschreibungen und die Autoren aufgeführt und beschrieben.
-
-| Event                                                           | Autor               | Bedeutung                     |
-|-----------------------------------------------------------------|---------------------|-------------------------------|
-| `https://schema.fitko.de/fit-connect/events/create-submission`  | Zustelldienst       | Die Einreichung wurde durch den Sender angelegt. |
-| `https://schema.fitko.de/fit-connect/events/submit-submission`  | Zustelldienst       | Die Einreichung wurde durch den Sender abgesendet. |
-| `https://schema.fitko.de/fit-connect/events/notify-submission`  | Zustelldienst       | Der Empfänger wurde per Webhook über die Einreichung informiert. |
-| `https://schema.fitko.de/fit-connect/events/forward-submission` |                     | Ein nachgelagertes System hat die Einreichung zur Weiterleitung übernommen. |
-| `https://schema.fitko.de/fit-connect/events/reject-submission`  | Empfangendes System | Die Einreichung wurde durch den Empfänger zurückgewiesen. |
-| `https://schema.fitko.de/fit-connect/events/accept-submission`  | Empfangendes System | Die Einreichung wurde durch den Empfänger akzeptiert. |
-| `https://schema.fitko.de/fit-connect/events/delete-submission`  | Zustelldienst       | Die Einreichung wurde durch den Zustelldienst gelöscht. |
-
-<details>
-
-<summary>🚧 Weitere Ereignisse, relevant für die Zukunft ...</summary>
-
-
-### Ereignisse einer Antwort (Reply Events)
-
-| Event                                                           | Autor                   | Bedeutung                     |
-|-----------------------------------------------------------------|-------------------------|-------------------------------|
-| `https://schema.fitko.de/fit-connect/events/create-reply`       | Zustelldienst           | Die Antwort wurde durch den Sender angelegt. |
-| `https://schema.fitko.de/fit-connect/events/submit-reply`       | Zustelldienst           | Die Antwort wurde durch den Sender abgesendet. |
-| `https://schema.fitko.de/fit-connect/events/notify-reply`       | Zustelldienst           | Der Empfänger wurde per Webhook über die Antwort informiert. |
-| `https://schema.fitko.de/fit-connect/events/forward-reply`      | Adressat der Reply[^1]  | Ein nachgelagertes System hat die Antwort zur Weiterleitung übernommen. |
-| `https://schema.fitko.de/fit-connect/events/reject-reply`       | Adressat der Reply[^1]  | Die Antwort wurde durch den Empfänger zurückgewiesen. |
-| `https://schema.fitko.de/fit-connect/events/accept-reply`       | Adressat der Reply[^1]  | Die Antwort wurde durch den Empfänger akzeptiert. |
-| `https://schema.fitko.de/fit-connect/events/delete-reply`       | Zustelldienst           | Die Antwort wurde durch den Zustelldienst gelöscht. |
-
-[^1]: Wird das Reply vom Sender zum Subscriber gesendet, ist der Subscriber der Adressat; wird es vom Subscriber zum Sender gesendet ist der Sender der Adressat.
-
-Das Akzeptieren oder Zurückweisen von Einreichungen oder Antworten passiert auf einer rein technischen Ebene und trifft keine Aussage über die fachliche Korrektheit der Einreichungen.
-Gründe für technische Rückweisungen wären beispielsweise Probleme bei der Entschlüsselung oder Validierungsfehler der Datenstrukturen.
-
-### Ereignisse eines Vorgangs (Case Events)
-
-| Event                                                   | Autor                                           | Bedeutung |
-|---------------------------------------------------------|-------------------------------------------------|-----------------------------|
-| `https://schema.fitko.de/fit-connect/events/close-case` | Das System, das die Vorgangsreferenz schließt.  | Die Vorgangsreferenz wurde geschlossen, es dürfen keine weiteren Replies mehr erfolgen. |
-
-</details>
-
-## Prüfung eines Security-Event-Token (SET) {#set-validation}
-
-Um eine vollständige Prüfung eines Security-Event-Tokens durchzuführen, MUSS zwingend sowohl die Einhaltung der
-(kryptografischen) Vorgaben als auch die Signatur geprüft werden. Die Prüfung der Signatur des SET ist abhängig vom
-ausstellenden System (Zustelldienst, Subscriber oder Sender). Sowohl die Prüfung der kryptografischen Vorgaben, als auch
-die Prüfung der Signatur darf KEINESFALLS ausgelassen werden.
-
-### Prüfung der Einhaltung von kryptografischen Vorgaben und der Struktur
-
-Alle generierten Security-Event-Tokens MÃœSSEN den Vorgaben aus [RFC 7519](https://tools.ietf.org/html/rfc7519)
-entsprechen und über folgende Header-Attribute verfügen:
-
-| Feld  | Inhalt                              | Erläuterung                                                                           |
-|-------|-------------------------------------|---------------------------------------------------------------------------------------|
-| `typ` | `secevent+jwt`                      | Wird gemäß [RFC 8417, Abschnitt 2.3](https://datatracker.ietf.org/doc/html/rfc8417#section-2.3) auf den festen Wert "`secevent+jwt`" gesetzt. |
-| `alg` | `PS512`                             | Zur Signaturerstellung wird der Signaturalgorithmus RSASSA-PSS mit SHA-512 und MGF1 mit SHA-512 verwendet. Vorgabe gemäß [BSI TR-02102](https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Publikationen/TechnischeRichtlinien/TR02102/BSI-TR-02102.html) in der Version 2021-01 (Stand 24. März 2021). |
-| `kid` | Key-ID des zugehörigen Public Keys  | Die Key-ID des Public Key, mit dem die Signatur des JWT geprüft werden kann.          |
-
-Im Payload des signierten SET MÃœSSEN die folgenden [standardisierten Felder](https://www.iana.org/assignments/jwt/jwt.xhtml)
-gesetzt sein:
-
-| Feld   | Inhalt                                         | Erläuterung                                                   |
-|--------|------------------------------------------------|---------------------------------------------------------------|
-| iss    | Id des Token Issuers                           | Diese Angabe dient dazu, um herauszufinden, wer den Token ausgestellt hat. Für SETs, die vom Zustelldienst ausgestellt sind, wird die Host-Adresse (API-URL) verwendet. Bei SETs von empfangenden Systemen ist die `destinationId`, an der dieser die Submission schickt. |
-| iat    | Timestamp (UNIX-Format)                        | Zeitpunkt der Ausstellung des SET.                            |
-| jti    | UUID des Token                                 | Die JWT ID ist eine eindeutige ID des SET bzw. JWT. Es wird eine zufällige UUID verwendet. |
-| sub    | URI, die den Gegenstand des SET identifiziert  | Das Subject eines SWT ist entweder eine Ãœbertragung (submission), eine Antwort (reply) oder eine Vorgangsreferenz (case id). Die Angabe besteht jeweils aus Typ und ID (UUID) der Resource. |
-| events | JSON-Objekt der Events in diesem Event-Token   | Das Objekt "events" beschreibt eine oder mehrere Ereignisse zu einem logischen Sachverhalt bzw. Gesamtereignis, wie bspw. der Versendung einer Einreichung wurde durch den Sender. Dieses Objekt beinhaltet immer zwingend eine URI, die das jeweilige Gesamtereignis eindeutig identifiziert. Das Objekt der URI des Gesamtereignisses ist aktuell leer, kann aber zukünftig weitere Details zu einem Gesamtereignis enthalten. |
-| txn    | URI, die den Vorgang identifiziert             | Als "Transaction Identifier" wird die Vorgangsreferenz angegeben, auch wenn das Subject selbst die Vorgangsreferenz ist. In diesem Fall sind Subject und Transaction Identifier gleich. |
-
-:::note SET Beispiel
-
-```json title="SET Header"
-{
-  "typ": "secevent+jwt"
-  "alg": "PS512",
-  "kid": "dd0409e5-410e-4d98-85b6-f81a40b8d980",
-}
-```
-
-```json title="SET Payload"
-{
-  "iss": "https://api.fitko.de/fit-connect/",
-  "iat": 1622796532,
-  "jti": "0BF6DBF6-CE7E-44A3-889F-82FE74C3E715",
-  "sub": "submission:F65FEAB2-4883-4DFF-85FB-169448545D9F",
-  "events": {
-    "https://schema.fitko.de/fit-connect/events/accept-submission": {}
-  },
-  "txn": "case:F73D30C6-8894-4444-8687-00AE756FEA90"
-}
-```
-
-:::
-
-Im folgenden Beispiel kann die allgemeine Struktur eines SET über folgenden Code validiert werden.
-
-```java
-SignedJWT securityEventToken = SignedJWT.parse(eventToken);
-JWTClaimsSet payload = securityEventToken.getJWTClaimsSet();
-UUID keyId = UUID.fromString(securityEventToken.getHeader().getKeyID());
-
-validateTokenStructure(securityEventToken);
-
-verifySignature(securityEventToken, keyId); // Abhängig von der Quelle
-```
-
-```java
-boolean validateTokenStructure(SignedJWT securityEventToken) {
-  try {
-    validateHeader(signedJWT.getHeader());
-    validatePayload(signedJWT.getJWTClaimsSet());
-  } catch (ParseException e) {
-    throw new SecurityEventTokenValidationException("The payload of the SET could not get parsed properly.");
-  }
-}
-
-private void validateHeader(JWSHeader header) {
-  validateTrueOrElseThrow(header.getAlgorithm() == JWSAlgorithm.PS512, "The provided alg in the SET header is not allowed.");
-  validateTrueOrElseThrow(header.getType().toString().equals("secevent+jwt"), "The provided typ in the SET header is not secevent+jwt");
-  validateTrueOrElseThrow(header.getKeyID() != null, "The kid the SET was signed with is not set.");
-}
-
-private void validatePayload(JWTClaimsSet payload) throws ParseException {
-  validateTrueOrElseThrow(payload.getClaim("iss") != null, "The claim iss is missing in the payload of th SET.");
-  validateTrueOrElseThrow(payload.getClaim("iat") != null, "The claim iat is missing in the payload of th SET.");
-  validateTrueOrElseThrow(payload.getClaim("jti") != null, "The claim jti is missing in the payload of th SET.");
-  validateTrueOrElseThrow(payload.getClaim("sub") != null, "The claim sub is missing in the payload of th SET.");
-  validateTrueOrElseThrow(payload.getClaim("txn") != null, "The claim txn is missing in the payload of the SET.");
-  validateTrueOrElseThrow(payload.getClaim("events") != null, "The claim events is missing in the payload of the SET.");
-  validateTrueOrElseThrow(payload.getJSONObjectClaim("events").keySet().size() == 1, "Only exactly one event is allowed.");
-
-  String uuidPattern = "\\b[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-\\b[0-9a-fA-F]{12}\\b";
-
-  String subject = payload.getStringClaim("sub");
-  validateTrueOrElseThrow(subject.matches("(submission|case|reply):" + uuidPattern), "The provided subject does not match the allowed pattern.");
-
-  String transactionId = payload.getStringClaim("txn");
-  validateTrueOrElseThrow(transactionId.matches("case:" + uuidPattern), "The provided txn does not match the allowed pattern.");
-}
-
-private void validateTrueOrElseThrow(boolean expression, String msg) {
-  if (!expression) {
-    throw new SecurityEventTokenValidationException(msg);
-  }
-}
-```
-
-### Signaturprüfung eines vom Zustelldienst ausgestellten SET
-
-Um die Signatur eines SET zu überprüfen, welches vom Zustelldienst ausgestellt wurde, ist es notwendig auf die
-verwendeten Schlüssel zugreifen zu können. Der Zustelldienst stellt ein JSON Web Key (JWK) Set öffentlich zugänglich
-unter der URL `/.well-known/jwks.json` bereit. Ein Beispiel für ein JWK Set ist in folgendem Ausschnitt dargestellt:
-
-```json
-{
-  "keys": [
-    {
-      "alg": "PS512",
-      "e": "AQAB",
-      "key_ops": [
-        "verify"
-      ],
-      "kid": "6508dbcd-ab3b-4edb-a42b-37bc69f38fed",
-      "kty": "RSA",
-      "n": "65rmDz943SDKYWt8KhmaU…ga16_y9bAdoQJZRpcRr3_v9Q"
-    },
-    {
-      "alg": "PS512",
-      "e": "AQAB",
-      "key_ops": [
-        "verify"
-      ],
-      "kid": "14a70431-01e6-4d67-867d-d678a3686f4b",
-      "kty": "RSA",
-      "n": "wnqKgmQHSqJhvCfdUWWyi8q…yVv3TrQVvGtsjrJVjvJR-s_D7rWoBcJVM"
-    }
-  ]
-}
-```
-
-Mit diesem JWK Set kann die Signatur eines Security-Event-Tokens überprüft werden. Hierfür muss der Schlüssel mit der
-passenden `kid` aus dem Header des SET’s im JWK Set gesucht werden. Dann kann man mit diesem und einer entsprechenden
-Bibliothek eine Signaturprüfung durchführen. Im folgenden Beispiel wird die
-Bibliothek [nimbus-jose-jwt](https://connect2id.com/products/nimbus-jose-jwt) für die Prüfung genutzt.
-
-```java
-static final ZUSTELLDIENST_BASE_URL = "https://zustelldienst.example.com";
-
-boolean verifySignature(SignedJWT securityEventToken, String keyId) {
-  JWKSet jwks = JWKSet.load(ZUSTELLDIENST_BASE_URL + "/.well-known/jwks.json");
-  JWK publicKey = jwks.getKeyByKeyId(keyId)
-
-  if (publicKey.getAlgorithm() != JWSAlgorithm.PS512) {
-    throw new RuntimeException("The key specified for signature verification doesn't use/specify PS512 as algorithm.")
-  }
-
-  JWSVerifier jwsVerifier = new RSASSAVerifier(publicKey.toRSAKey());
-  return signedJWT.verify(jwsVerifier);
-}
-```
-
-### :construction: Signaturprüfung eines vom Senders/Subscriber ausgestellten SET
-
-TBD
diff --git a/docs/details/crypto.md b/docs/details/crypto.md
index 59e0ffc47..3f9bc053e 100644
--- a/docs/details/crypto.md
+++ b/docs/details/crypto.md
@@ -84,8 +84,7 @@ Die folgenden Attribute müssen im JOSE-Header bei der Übertragung verschlüsse
 | `cty`  | *MIME-Type der Inhaltsdaten* | MIME-Type der Inhaltsdaten (Fachdaten, Medatadaten) nach [RFC 7516, Abschnitt 4.1.12](https://tools.ietf.org/html/rfc7516#section-4.1.12) |
 
 ## Vorgaben zur Signaturerstellung und -prüfung
-
-### Vorgaben für JSON Web Keys zur Signaturprüfung {#signature-key}
+### Vorgaben für JSON Web Keys zur Signaturprüfung
 
 Eine Signaturprüfung erfolgt in FIT-Connect auf Basis des Standards JSON Web Signature gemäß [RFC 7515](https://tools.ietf.org/html/rfc7515).
 
diff --git a/docs/details/event-log.md b/docs/details/event-log.md
index e69de29bb..dd738aec4 100644
--- a/docs/details/event-log.md
+++ b/docs/details/event-log.md
@@ -0,0 +1,111 @@
+# Event Log
+
+Im Ereignisprotokoll werden relevante Ereignisse (events) aufgezeichnet.
+Beim Abruf des Ereignisprotokoll liefert die API ein Array von JSON Web Token (JWT) gemäß [RFC 7519](https://datatracker.ietf.org/doc/html/rfc7519).
+Der JWT ist einen Security Event Token (SET) gemäß [RFC 8417](https://datatracker.ietf.org/doc/html/rfc8417).
+Bei der Erstellung und Prüfung der Security Event Token MÜSSEN die [Vorgaben für kryptographische Verfahren](./crypto.md) beachtet werden.
+
+## Aufbau eines Security Event Token (SET)
+
+### Header
+Alle generierten Security Event Tokens MÜSSEN den Vogaben aus [RFC 7519](https://tools.ietf.org/html/rfc7519) entsprechen und über folgende Header-Attribute verfügen:
+
+| Feld  | Inhalt         | Erläuterung |
+| ----- | -------------- | ----------- |
+| `typ` | `secevent+jwt` | Wird gemäß [RFC 8417, Abschnitt 2.3](https://datatracker.ietf.org/doc/html/rfc8417#section-2.3) auf den festen Wert "`secevent+jwt`" gesetzt. |
+| `alg` | `PS512` | Zur Signaturerstellung wird der Signaturalgorithmus RSASSA-PSS mit SHA-512 und MGF1 mit SHA-512 verwendet. Vorgabe gemäß [BSI TR-02102](https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Publikationen/TechnischeRichtlinien/TR02102/BSI-TR-02102.html) in der Version 2021-01 (Stand 24. März 2021). |
+| `kid` | *Key-ID des zugehörigen Public Keys* | Die Key-ID des Public Key, mit dem die Signatur des JWT geprüft werden kann. |
+
+**Beispiel**
+```json
+{
+  "typ": "secevent+jwt",
+  "alg": "PS512",
+  "kid": "dd0409e5-410e-4d98-85b6-f81a40b8d980"
+}
+```
+
+### Payload
+Im Payload des signierten SET MÃœSSEN mindestens die folgenden [standartisierten Felder](https://www.iana.org/assignments/jwt/jwt.xhtml) gesetzt sein:
+
+| Feld   | Inhalt                                    | Erläuterung                                                  |
+| ------ | ----------------------------------------- | ------------------------------------------------------------ |
+| iss    | Identifizierungsmerkmal des Token Issuers | Dient dazu, um herauszufinden, wer den Token ausgestellt hat. Für vom Zustelldienst ausgestellt SET wird die Basis-Adresse (API-URL) verwendet. Für die antragsendenden und -empfangenden Systeme wird empfohlen, auch eine dem System zugeordnete URL zu verwenden. Sofern das System keine zur Identifikation nutzbare URL hat, ist eine andere eindeutige URI zu verwenden. |
+| iat    | Timestamp (UNIX-Format)                   | Zeitpunkt der Ausstellung des SET.                            |
+| jti    | UUID des Token                            | Die JWT ID ist eine eindeutige ID des SET bzw. JWT. Es wird eine zufällige UUID verwendet. |
+| sub    | URI, die den Gegenstand des SET identifiziert. | Das Subject eines SWT ist entweder eine Ãœbertragung (submission), eine Antwort (reply) oder eine Vorgangsreferenz (case id). Die Angabe besteht jeweils aus Typ und ID (UUID) der Resource. |
+| events | Dict der Events in diesem Event-Token     | Das Objekt "events" enthält immer genau ein Event. Das Event selbst ist wieder ein Objekt, welches derzeit immer leer ist. Events könnten in Zukunft um Zusatzinformationen ergänzt werden. Siehe [Liste der möglichen Events](./status.md) |
+| txn    | URI, die den Vorgang identifiziert        | Als "Transaction Identifier" wird die Vorgangsreferenz angegeben, auch wenn das Subject selbst die Vorgangsreferenz ist. In diesem Fall sind Subject und Transaction Identifier gleich. |
+
+**Hinweis:** Das Ereignisprotokoll darf keine personenbezogenen oder -beziehbaren Daten enthalten.
+
+**Wichtig**: Ohne Prüfung der Signatur des Security Event Token DARF NICHT auf die Korrektheit (Integrität) der Inhalte des SET-Payload vertraut werden.
+
+**Beispiel**
+```json
+{
+  "iss": "https://api.fitko.de/fit-connect/",
+  "iat": 1622796532,
+  "jti": "0BF6DBF6-CE7E-44A3-889F-82FE74C3E715",
+  "sub": "submission:F65FEAB2-4883-4DFF-85FB-169448545D9F",
+  "events": {
+    "https://schema.fitko.de/fit-connect/events/accept-submission": {}
+  },
+  "txn": "case:F73D30C6-8894-4444-8687-00AE756FEA90"
+}
+```
+
+## Beispiel
+
+> **Hinweis:** Folgende Punkte in dieser Dokumentation sind noch nicht final:
+- Die in den Beispielen verwendete API-Adresse `https://api.fitko.de/fit-connect/` ist durch die Basis-Adresse der real verwendeten API zu ersetzen.
+
+Der Sender ruft die Operation "Get Event Log" auf, z.B. `https://api.fitko.de/fit-connect/submissions/F65FEAB2-4883-4DFF-85FB-169448545D9F/log`.
+Das Ergebnis könnte wie folgt aussehen.
+
+```json
+{
+  "eventLog": [
+    "eyJraWQiOiJkZDA0MDllNS00MTBlLTRkOTgtODViNi1mODFhNDBiOGQ5ODAiLCJ0eXAiOiJzZWNldmVudCtqd3QiLCJhbGciOiJQUzUxMiJ9.ewogICJpc3MiOiAiaHR0cHM6Ly9hcGkuZml0a28uZGUvZml0LWNvbm5lY3QvIiwKICAiaWF0IjogMTYyMjc5NDMxOSwKICAianRpIjogIkVEQ0ZCRjIxLTVCMTYtNEQwNi05OUQwLURDNEMyNkY0RkI5RSIsCiAgInN1YiI6ICJzdWJtaXNzaW9uOkY2NUZFQUIyLTQ4ODMtNERGRi04NUZCLTE2OTQ0ODU0NUQ5RiIsCiAgImV2ZW50cyI6IHsKICAgICJodHRwczovL3NjaGVtYS5maXRrby5kZS9maXQtY29ubmVjdC9ldmVudHMvY3JlYXRlLXN1Ym1pc3Npb24iOiB7fQogIH0sCiAgInR4biI6ICJjYXNlOkY3M0QzMEM2LTg4OTQtNDQ0NC04Njg3LTAwQUU3NTZGRUE5MCIKfQ.TQBR_CBsoULi3cGaGg4oqFelQ9GVn8G-cNokzTVDZgZf4D7x_8wjsDcgTd0aamiy8ErlnV1xoAoDcPw81vajrBCaYgf9KI4sNhsW78jlDi_ywK04YhFbkvloDMioGf_5zCNTBreN9bTnU_VYuWB23R_YrYGi2exONft-ZReN_crEvDaKLdG9hqnaCRFwKJ1t8TbLvIyBKLqQYEqP0Oh6m3WA9IRz3EB41S-PZgJCIzmz_GvXdRvw_1B8A_Q7aHr2SQ6Dc-c406UJ5P_7FuypE6tLyuYf5GkmFZSauQ51H4LLl8pLrsW2PJJ28cMavOEx0AWoRLwB7yKK5bAGtcALWw-0W7Wmw1QEX3DZGTpXbEUM0U_7iXeEFrdtfCCbFPMVbmlK-b66IyKK_6yeaOAEjQvCUOrALfa2sSOS6RWiNOKyA1l1L29VoIBXgQ8np72NMV8-AP7UnQO1NPBghBM6LW6tcXceWeP8ayy4eEaZQ639pqH4TJRRkQqnuoTeADpYL9sX2hM9173O4abWiE-Z8zW2AQ1jhUvVXJ8w9ddtMIyjZJZOqoy3TbHxUYpn4UqbedlDyahpUiKCT7-qU2jOjeXAXEPQvWlSzLigNtFvYCEq-fOe1lpeNktoQQrC3Y-szk2vNj5fT_KmJY1QG1bhyrUMoGbA-pe45c-FcCE7ErQ",
+    "eyJraWQiOiJkZDA0MDllNS00MTBlLTRkOTgtODViNi1mODFhNDBiOGQ5ODAiLCJ0eXAiOiJzZWNldmVudCtqd3QiLCJhbGciOiJQUzUxMiJ9.ewogICJpc3MiOiAiaHR0cHM6Ly9hcGkuZml0a28uZGUvZml0LWNvbm5lY3QvIiwKICAiaWF0IjogMTYyMjc5NTczMiwKICAianRpIjogIjkwRDlCMjlELUMwNUYtNEYwMy04MUMwLUUyMzMxMTZDNTZEOSIsCiAgInN1YiI6ICJzdWJtaXNzaW9uOkY2NUZFQUIyLTQ4ODMtNERGRi04NUZCLTE2OTQ0ODU0NUQ5RiIsCiAgImV2ZW50cyI6IHsKICAgICJodHRwczovL3NjaGVtYS5maXRrby5kZS9maXQtY29ubmVjdC9ldmVudHMvc3VibWl0LXN1Ym1pc3Npb24iOiB7fQogIH0sCiAgInR4biI6ICJjYXNlOkY3M0QzMEM2LTg4OTQtNDQ0NC04Njg3LTAwQUU3NTZGRUE5MCIKfQ.THmHiZoYEMyyWCu2R4nEJtvgtB5PF0KAqtfu_Z-yVjfjSkXW7TtZnX96UAeCGsjpxkBJvXTXAgSB5n378KjZXebAtI7nbFE0gYgt3fwmxmpJitA-4e8v6KfvhwNcdqJHLKDzYRMq_yw7UiwLx1Cxz6nBiOKfR4piL707muKXTgD7DuP0kv-c6V9dGNQ4KzT_sJP5zDWogEzGWSVaLaJZrmDZHoUZMZ6C9kI7SvC-A7Q0ROkFznU_cpjjEAIG74_YCiICvjr91ueQWTdNyc1DBvxpEBtBWq6nWPTg0d91iQlhPUgNKbmC4QtG_tFctTYhX7stO-JbL-4VnAQjQHD5uw4SvvpPrTN4Z3Wz2IjMm8-ClI9imGKThfAqwTaWtJv7Bn_FDiN_nEuGyN2of-M2vZWa-DlZ2iPFct6ESp9PumaO_pIF5cUrX4IBoe3fcmg788-ClReytCMjD13uPVOVoIb3yimUdupOUROxb3MITowHP2-YG1gWqhQp22XSQXktugDHWezAuN0xuimwAJq_OvyoDxj4lsnn6BQkqZYdqD0hJghwqZIytg8PlIi76Cdvh8NFgVw48xZ0WUOFvBPJO2Qe8PiTSVX_P9CIIWxsKlYwg8vJ226qi0eYfD70ynjBDQIPmsOOSut6bFKgOLBFa9ZvCy6HmhyLa-EsgLhS4uc",
+    "eyJraWQiOiJkZDA0MDllNS00MTBlLTRkOTgtODViNi1mODFhNDBiOGQ5ODAiLCJ0eXAiOiJzZWNldmVudCtqd3QiLCJhbGciOiJQUzUxMiJ9.ewogICJpc3MiOiAiaHR0cHM6Ly9hcGkuZml0a28uZGUvZml0LWNvbm5lY3QvIiwKICAiaWF0IjogMTYyMjc5NjUzMiwKICAianRpIjogIjBCRjZEQkY2LUNFN0UtNDRBMy04ODlGLTgyRkU3NEMzRTcxNSIsCiAgInN1YiI6ICJzdWJtaXNzaW9uOkY2NUZFQUIyLTQ4ODMtNERGRi04NUZCLTE2OTQ0ODU0NUQ5RiIsCiAgImV2ZW50cyI6IHsKICAgICJodHRwczovL3NjaGVtYS5maXRrby5kZS9maXQtY29ubmVjdC9ldmVudHMvYWNjZXB0LXN1Ym1pc3Npb24iOiB7fQogIH0sCiAgInR4biI6ICJjYXNlOkY3M0QzMEM2LTg4OTQtNDQ0NC04Njg3LTAwQUU3NTZGRUE5MCIKfQ.blxz8Tw_Sl8_tomcqxezamX_DVGyGiu61iYGv3mA3yVLLSDlPscjcHm_MCNm5iq-ODUk-FCW1ljOexN2czZJic8wvLhWhcUt8U2kkkjis-CWz4oqhuB4ynAj7Yyn4H4xkLoH7Y6k9pqW9P2mN7984o_578mJJ4mQSNEGcPr_BDbRc2nUKcupG7iS-hx6VTjrRTP7LGPyOblDB8oL_QyT9qY0US7PT35QgiraUSK3RWhDpj6C0I4bOV5cQeSqlXT2xIfeO3sUPeWLYVmGjuB8QWvDsniKz6JqRN-v39FrAppsOufdiRim36wtBZt9o-3txjtz5wu0_eSfjOueGJbfqAeWsbd2TYwZtL-7Z-MPfoe3XInDNmmTfxo4KXkF1GkRnGnjniwrWBHeh18A04NNHYcX-vsoijEreqDN2lEKwks3pDK5Twe5O9RxJ0cYB8oeKB55rJzs15pfla69qVn9zFvCAc_ji_9WaAa_mIG0zimMucG3qA0KrUww88FaS4heh5-Gs1Ik35QoUOCCa7ZMJMKxYArFCgUqHw-gX60U5mp4hy7tVe3hD-RxIRnlTIkEkHgDGmslVc1t8fC9oPgljQirPcTIeWhVyLmk6rJLgR5nqizujz3hDUCdBuRF43fS6qedmYfHq1MyakJzEFe2ht1rpGw4ftAt0kcOBOf2jyQ"
+  ]
+}
+```
+
+Im Log dieser Submission wurden drei Events aufgezeichnet.
+Das erste SET hat folgenden Payload.
+
+```json
+{
+  "iss": "https://api.fitko.de/fit-connect/",
+  "iat": 1622794319,
+  "jti": "EDCFBF21-5B16-4D06-99D0-DC4C26F4FB9E",
+  "sub": "submission:F65FEAB2-4883-4DFF-85FB-169448545D9F",
+  "events": {
+    "https://schema.fitko.de/fit-connect/events/create-submission": {}
+  },
+  "txn": "case:F73D30C6-8894-4444-8687-00AE756FEA90"
+}
+```
+
+In dem SET ist folgende Information abgelegt:
+- Er wurde vom Zustelldienst https://api.fitko.de/fit-connect/ ausgestellt (iss = issuer)
+- Er wurde am 04.06.2021 um 10:11:59 (Unixzeit 1622794319) aufgezeichnet (iat = issued at)
+- Er hat die eindeutige ID `EDCFBF21-5B16-4D06-99D0-DC4C26F4FB9E` (jti = JWT ID)
+- Er betrifft die Submission `F65FEAB2-4883-4DFF-85FB-169448545D9F` (sub = subject)
+- Die Submission wurde angelegt "createSubmission" (events)
+- Die Submission gehört zur Vorgangsreferenz (case) `F73D30C6-8894-4444-8687-00AE756FEA90`
+
+## Verarbeitung des Ereignisprotokolls
+
+Um die Informationen des Security Event Log abzurufen gehen Sie wie folgt vor:
+
+### 1. Abruf des Ereignisprotokolls über die API
+
+### 2. Decodierung jedes SET innerhalb des Arrays "securityEventLog"
+Ãœbergeben Sie den JWT an die Bibliothek.
+Die Bibliothek kümmert sich automatisch um die Dekodierung und Validierung des JWT.
+Je verwendeter Bibliothek unterscheidet sich der Zugriff auf den Payload des JWT/SET.
+
+Wenn ein Onlinedienst den Eventlog darstellen möchte, muss dieser sicherstellen, das die im Eventlog enthaltenen Einträge über eine valide Signatur verfügen und falls sich Einträge mit einer invaliden Signatur im Eventlog befinden, muss das für den User erkennbar sein.
diff --git a/docs/details/schema-reference.md b/docs/details/schema-reference.md
index 84e2d2780..e85c35ae2 100644
--- a/docs/details/schema-reference.md
+++ b/docs/details/schema-reference.md
@@ -306,7 +306,7 @@ Diese enthält unter anderem den verschlüsselten Metadaten- sowie Fachdatensatz
 
 Der Empfänger [entschlüsselt mit seinem privaten Schlüssel](../getting-started/receiving/decrypt.mdx) den Metadatensatz.
 Nach der Entschlüsselung des Metadatensatzes prüft der Empfänger, ob eine Fachdatenreferenz vorhanden ist und diese einer der im Zustellpunkt definierten Fachschemareferenz entspricht.
-Sofern dies nicht der Fall ist, [wird die Einreichung zurückgewiesen](../getting-started/event-log.mdx#events) (siehe Event `https://schema.fitko.de/fit-connect/events/reject-submission`).
+Sofern dies nicht der Fall ist, [wird die Einreichung zurückgewiesen](./status.md#ereignisse-einer-einreichung-submission-events) (siehe Event `https://schema.fitko.de/fit-connect/events/reject-submission`).
 
 ### Fachdatensatz prüfen
 
@@ -397,7 +397,7 @@ Um z.B. einen Bauantrag zu prüfen, gehen Sie wie folgt vor.
 ```
 ➜ unzip xmlschema.zip
 Archive:  xmlschema.zip
-  inflating: xsd.zip
+  inflating: xsd.zip                
   inflating: xsd_dev.zip
 ```
 
@@ -406,22 +406,22 @@ Archive:  xmlschema.zip
 ```
 ➜ unzip xsd.zip
 Archive:  xsd.zip
-  inflating: xbau-basisdatentypen.xsd
-  inflating: xbau-baukasten.xsd
-  inflating: xbau-codes.xsd
-  inflating: xbau-nachrichten-abweichung.xsd
-  inflating: xbau-nachrichten-anzeige.xsd
-  inflating: xbau-nachrichten-baugenehmigung.xsd
-  inflating: xbau-nachrichten-baulasten.xsd
-  inflating: xbau-nachrichten-bautechnischeNachweise.xsd
-  inflating: xbau-nachrichten-bauzustand.xsd
-  inflating: xbau-nachrichten-beteiligung.xsd
-  inflating: xbau-nachrichten-genehmigungsfreistellung.xsd
-  inflating: xbau-nachrichten-informationsempfaenger.xsd
-  inflating: xbau-nachrichten-kammernverzeichnis.xsd
-  inflating: xbau-nachrichten-teilbaugenehmigung.xsd
-  inflating: xbau-nachrichten-ueberwachungspflichtigeAnlagen.xsd
-  inflating: xbau-nachrichten-vorbescheid.xsd
+  inflating: xbau-basisdatentypen.xsd 
+  inflating: xbau-baukasten.xsd     
+  inflating: xbau-codes.xsd         
+  inflating: xbau-nachrichten-abweichung.xsd 
+  inflating: xbau-nachrichten-anzeige.xsd 
+  inflating: xbau-nachrichten-baugenehmigung.xsd 
+  inflating: xbau-nachrichten-baulasten.xsd 
+  inflating: xbau-nachrichten-bautechnischeNachweise.xsd 
+  inflating: xbau-nachrichten-bauzustand.xsd 
+  inflating: xbau-nachrichten-beteiligung.xsd 
+  inflating: xbau-nachrichten-genehmigungsfreistellung.xsd 
+  inflating: xbau-nachrichten-informationsempfaenger.xsd 
+  inflating: xbau-nachrichten-kammernverzeichnis.xsd 
+  inflating: xbau-nachrichten-teilbaugenehmigung.xsd 
+  inflating: xbau-nachrichten-ueberwachungspflichtigeAnlagen.xsd 
+  inflating: xbau-nachrichten-vorbescheid.xsd 
   inflating: xbau-prozessnachrichten.xsd
 ```
 
diff --git a/docs/details/status.md b/docs/details/status.md
new file mode 100644
index 000000000..bfd86b6ea
--- /dev/null
+++ b/docs/details/status.md
@@ -0,0 +1,54 @@
+# Status & Ereignisse
+
+Das folgende Statusdiagramm zeigt die Status und Ereignisse einer Einreichung.
+Die Status sind als orange Ovale dargestellt. Rechtecke stehen für Ereignisse. Blau dargestellte Ereignisse werden vom Zustelldienst, grüne vom empfangenden System erstellt und signiert.
+
+![Statusdiagramm](../../static/images/status/status.svg)
+
+## Status
+
+| Status | Bedeutung |
+| ----- | --------- |
+| `incomplete` | Das sendende System hat begonnen, die Einreichung zu übermitteln. Sie jedoch noch nicht abgesendet. |
+| `submitted` | Das sendende System hat die Einreichung vollständig übermittelt und abgesendet. |
+| `forwarded` | Ein vermittelndes System hat die Einreichung übernommen, sie aber noch nicht dem Zielsystem zugestellt. |
+| `rejected` | Die Einreichung wurde durch den Empfänger zurückgewiesen. |
+| `accepted` | Die Einreichung wurde durch den Empfänger akzeptiert. |
+
+Das Akzeptieren oder Zurückweisen von Einreichungen oder Antworten passiert auf einer rein technischen Ebene und trifft keine Aussage über die fachliche Korrektheit der Einreichungen.
+Gründe für technische Rückweisungen wären beispielsweise Probleme bei der Entschlüsselung oder Validierungsfehler der Datenstrukturen.
+
+## Ereignisse (Events)
+
+### Ereignisse einer Einreichung (Submission Events)
+| Event | Bedeutung | Erstellt und signiert durch |
+| ----- | --------- | --------------------------- |
+| `https://schema.fitko.de/fit-connect/events/create-submission`  | Die Einreichung wurde durch den Sender angelegt. | Zustelldienst |
+| `https://schema.fitko.de/fit-connect/events/submit-submission`  | Die Einreichung wurde durch den Sender abgesendet. | Zustelldienst |
+| `https://schema.fitko.de/fit-connect/events/notify-submission`  | Der Empfänger wurde per Webhook über die Einreichung informiert. | Zustelldienst |
+| `https://schema.fitko.de/fit-connect/events/forward-submission` | Ein nachgelagertes System hat die Einreichung zur Weiterleitung übernommen. | Empfangendes System |
+| `https://schema.fitko.de/fit-connect/events/reject-submission`  | Die Einreichung wurde durch den Empfänger zurückgewiesen. | Empfangendes System |
+| `https://schema.fitko.de/fit-connect/events/accept-submission`  | Die Einreichung wurde durch den Empfänger akzeptiert. | Empfangendes System |
+| `https://schema.fitko.de/fit-connect/events/delete-submission`  | Die Einreichung wurde durch den Zustelldienst gelöscht. | Zustelldienst |
+
+### Ereignisse einer Antwort (Reply Events)
+| Event | Bedeutung | Erstellt und signiert durch |
+| ----- | --------- | --------------------------- |
+| `https://schema.fitko.de/fit-connect/events/create-reply`  | Die Antwort wurde durch den Sender angelegt. | Zustelldienst |
+| `https://schema.fitko.de/fit-connect/events/submit-reply`  | Die Antwort wurde durch den Sender abgesendet. | Zustelldienst |
+| `https://schema.fitko.de/fit-connect/events/notify-reply`  | Der Empfänger wurde per Webhook über die Antwort informiert. | Zustelldienst |
+| `https://schema.fitko.de/fit-connect/events/forward-reply` | Ein nachgelagertes System hat die Antwort zur Weiterleitung übernommen. | Adressat des Reply * |
+| `https://schema.fitko.de/fit-connect/events/reject-reply`  | Die Antwort wurde durch den Empfänger zurückgewiesen. | Adressat des Reply * |
+| `https://schema.fitko.de/fit-connect/events/accept-reply`  | Die Antwort wurde durch den Empfänger akzeptiert. | Adressat des Reply * |
+| `https://schema.fitko.de/fit-connect/events/delete-reply`  | Die Antwort wurde durch den Zustelldienst gelöscht. | Zustelldienst |
+
+*: Wird das Reply vom Sender zum Subscriber gesendet, ist der Subscriber der Adressat; wird es vom Subscriber zum Sender gesendet ist der Sender der Adressat.
+
+Das Akzeptieren oder Zurückweisen von Einreichungen oder Antworten passiert auf einer rein technischen Ebene und trifft keine Aussage über die fachliche Korrektheit der Einreichungen.
+Gründe für technische Rückweisungen wären beispielsweise Probleme bei der Entschlüsselung oder Validierungsfehler der Datenstrukturen.
+
+### Ereignisse eines Vorgangs (Case Events)
+| Event | Bedeutung | Erstellt und signiert durch |
+| ----- | --------- | --------------------------- |
+| `https://schema.fitko.de/fit-connect/events/close-case` | Die Vorgangsreferenz wurde geschlossen, es dürfen keine weiteren Replies mehr erfolgen. | Das System, das die Vorgangsreferenz schließt. |
+
diff --git a/docs/getting-started/event-log.mdx b/docs/getting-started/event-log.mdx
deleted file mode 100644
index f170efc45..000000000
--- a/docs/getting-started/event-log.mdx
+++ /dev/null
@@ -1,280 +0,0 @@
----
-title: Event Log
----
-
-import ApiLink from '@site/src/components/ApiLink'
-
-Im Ereignisprotokoll (Event Log) werden relevante Ereignisse (events) aufgezeichnet. Beim Abruf des Ereignisprotokolls
-liefert die API ein Array von JSON Web Token (JWT) gemäß [RFC 7519](https://datatracker.ietf.org/doc/html/rfc7519). Der
-JWT ist einen Security-Event-Token (SET) gemäß [RFC 8417](https://datatracker.ietf.org/doc/html/rfc8417). Wie mit den
-Security-Event-Token (SET) umgegangen wird, wird in diesem Abschnitt beschrieben.
-
-## Hintergrund
-
-Der Hintergrund für den Event Log und das Format, in welchem er geführt wird, ist, dass es er eine verlässliche, vollständige,
-rechtssichere und nachvollziehbare Grundlage in Streit-, Auditierungsfällen, o. ä. bildet.
-
-## Events
-
-Das folgende Statusdiagramm zeigt die Status und Ereignisse einer Einreichung. Die Status sind als orange Ovale
-dargestellt. Rechtecke stehen für Ereignisse. Blau dargestellte Ereignisse werden vom Zustelldienst, grüne vom
-empfangenden System erstellt und signiert.
-
-![Statusdiagramm](/images/status/status.svg)
-
-Das Akzeptieren oder Zurückweisen von Einreichungen auf einer rein technischen Ebene und trifft
-keine Aussage über die fachliche Korrektheit der Einreichungen. Gründe für technische Rückweisungen wären beispielsweise
-Probleme bei der Entschlüsselung oder Validierungsfehler der Datenstrukturen. In der folgenden Tabelle sind die möglichen
-Ereignisse, ihre Beschreibungen und die Autoren aufgeführt und beschrieben.
-
-| Event                                                           | Autor               | Bedeutung                     |
-|-----------------------------------------------------------------|---------------------|-------------------------------|
-| `https://schema.fitko.de/fit-connect/events/create-submission`  | Zustelldienst       | Die Einreichung wurde durch den Sender angelegt. |
-| `https://schema.fitko.de/fit-connect/events/submit-submission`  | Zustelldienst       | Die Einreichung wurde durch den Sender abgesendet. |
-| `https://schema.fitko.de/fit-connect/events/notify-submission`  | Zustelldienst       | Der Empfänger wurde per Webhook über die Einreichung informiert. |
-| `https://schema.fitko.de/fit-connect/events/forward-submission` | Empfangendes System | Ein nachgelagertes System hat die Einreichung zur Weiterleitung übernommen. |
-| `https://schema.fitko.de/fit-connect/events/reject-submission`  | Empfangendes System | Die Einreichung wurde durch den Empfänger zurückgewiesen. |
-| `https://schema.fitko.de/fit-connect/events/accept-submission`  | Empfangendes System | Die Einreichung wurde durch den Empfänger akzeptiert. |
-| `https://schema.fitko.de/fit-connect/events/delete-submission`  | Zustelldienst       | Die Einreichung wurde durch den Zustelldienst gelöscht. |
-
-## Prüfung eines Security-Event-Token (SET) {#set-validation}
-
-Um eine vollständige Prüfung eines Security-Event-Tokens durchzuführen, MUSS zwingend sowohl die Einhaltung der
-(kryptografischen) Vorgaben als auch die Signatur geprüft werden. Die Prüfung der Signatur des SET ist abhängig vom
-ausstellenden System (Zustelldienst, Subscriber oder Sender). Sowohl die Prüfung der kryptografischen Vorgaben, als auch
-die Prüfung der Signatur darf KEINESFALLS ausgelassen werden.
-
-### Prüfung der Einhaltung von kryptografischen Vorgaben und der Struktur
-
-Alle generierten Security-Event-Tokens MÃœSSEN den Vorgaben aus [RFC 7519](https://tools.ietf.org/html/rfc7519)
-entsprechen und über folgende Header-Attribute verfügen:
-
-| Feld  | Inhalt                              | Erläuterung                                                                           |
-|-------|-------------------------------------|---------------------------------------------------------------------------------------|
-| `typ` | `secevent+jwt`                      | Wird gemäß [RFC 8417, Abschnitt 2.3](https://datatracker.ietf.org/doc/html/rfc8417#section-2.3) auf den festen Wert "`secevent+jwt`" gesetzt. |
-| `alg` | `PS512`                             | Zur Signaturerstellung wird der Signaturalgorithmus RSASSA-PSS mit SHA-512 und MGF1 mit SHA-512 verwendet. Vorgabe gemäß [BSI TR-02102](https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Publikationen/TechnischeRichtlinien/TR02102/BSI-TR-02102.html) in der Version 2021-01 (Stand 24. März 2021). |
-| `kid` | Key-ID des zugehörigen Public Keys  | Die Key-ID des Public Key, mit dem die Signatur des JWT geprüft werden kann.          |
-
-In der Payload des signierten SET MÃœSSEN die folgenden [standardisierten Felder](https://www.iana.org/assignments/jwt/jwt.xhtml)
-gesetzt sein:
-
-| Feld   | Inhalt                                         | Erläuterung                                                   |
-|--------|------------------------------------------------|---------------------------------------------------------------|
-| iss    | Id des Token Issuers                           | Diese Angabe dient dazu, um herauszufinden, wer den Token ausgestellt hat. Für SETs, die vom Zustelldienst ausgestellt sind, wird die Host-Adresse (API-URL) verwendet. Bei SETs von empfangenden Systemen ist die `destinationId`, an der dieser die Submission schickt. |
-| iat    | Timestamp (UNIX-Format)                        | Zeitpunkt der Ausstellung des SET.                            |
-| jti    | UUID des Token                                 | Die JWT ID ist eine eindeutige ID des SET bzw. JWT. Es wird eine zufällige UUID verwendet. |
-| sub    | URI, die den Gegenstand des SET identifiziert  | Das Subject eines SET ist eine Kombination aus dem Schlüsselwort `submission` und der Id `submissionId` der Resource. |
-| events | JSON-Objekt der Events in diesem Event-Token   | Das Objekt "events" beschreibt eine oder mehrere Ereignisse zu einem logischen Sachverhalt bzw. Gesamtereignis, wie bspw. der Versendung einer Einreichung durch den Sender. Dieses Objekt beinhaltet immer zwingend eine URI, die das jeweilige Gesamtereignis eindeutig identifiziert. Das Objekt der URI des Gesamtereignisses ist aktuell leer, kann aber zukünftig weitere Details zu einem Gesamtereignis enthalten. |
-| txn    | URI, die den Vorgang identifiziert             | Als "Transaction Identifier" wird die Vorgangsreferenz `caseId` angegeben. |
-
-:::note SET Beispiel
-
-```json title="SET Header"
-{
-  "typ": "secevent+jwt"
-  "alg": "PS512",
-  "kid": "dd0409e5-410e-4d98-85b6-f81a40b8d980",
-}
-```
-
-```json title="SET Payload"
-{
-  "iss": "https://api.fitko.de/fit-connect/",
-  "iat": 1622796532,
-  "jti": "0BF6DBF6-CE7E-44A3-889F-82FE74C3E715",
-  "sub": "submission:F65FEAB2-4883-4DFF-85FB-169448545D9F",
-  "events": {
-    "https://schema.fitko.de/fit-connect/events/accept-submission": {}
-  },
-  "txn": "case:F73D30C6-8894-4444-8687-00AE756FEA90"
-}
-```
-
-:::
-
-Im folgenden Beispiel kann die allgemeine Struktur eines SET über folgenden Code validiert werden.
-
-```java
-SignedJWT securityEventToken = SignedJWT.parse(eventToken);
-JWTClaimsSet payload = securityEventToken.getJWTClaimsSet();
-UUID keyId = UUID.fromString(securityEventToken.getHeader().getKeyID());
-
-validateTokenStructure(securityEventToken);
-
-verifyZustelldienstSignature(securityEventToken, keyId)
-// bzw.
-verifyClientSignature(securityEventToken, keyId);
-```
-
-```java
-boolean validateTokenStructure(SignedJWT securityEventToken) {
-  try {
-    validateHeader(signedJWT.getHeader());
-    validatePayload(signedJWT.getJWTClaimsSet());
-  } catch (ParseException e) {
-    throw new RuntimeException("The payload of the SET could not get parsed properly.");
-  }
-}
-
-private void validateHeader(JWSHeader header) {
-  validateTrueOrElseThrow(header.getAlgorithm() == JWSAlgorithm.PS512, "The provided alg in the SET header is not allowed.");
-  validateTrueOrElseThrow(header.getType().toString().equals("secevent+jwt"), "The provided typ in the SET header is not secevent+jwt");
-  validateTrueOrElseThrow(header.getKeyID() != null, "The kid the SET was signed with is not set.");
-}
-
-private void validatePayload(JWTClaimsSet payload) throws ParseException {
-  validateTrueOrElseThrow(payload.getClaim("iss") != null, "The claim iss is missing in the payload of th SET.");
-  validateTrueOrElseThrow(payload.getClaim("iat") != null, "The claim iat is missing in the payload of th SET.");
-  validateTrueOrElseThrow(payload.getClaim("jti") != null, "The claim jti is missing in the payload of th SET.");
-  validateTrueOrElseThrow(payload.getClaim("sub") != null, "The claim sub is missing in the payload of th SET.");
-  validateTrueOrElseThrow(payload.getClaim("txn") != null, "The claim txn is missing in the payload of the SET.");
-  validateTrueOrElseThrow(payload.getClaim("events") != null, "The claim events is missing in the payload of the SET.");
-  validateTrueOrElseThrow(payload.getJSONObjectClaim("events").keySet().size() == 1, "Only exactly one event is allowed.");
-
-  String uuidPattern = "[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}";
-
-  String subject = payload.getStringClaim("sub");
-  validateTrueOrElseThrow(subject.matches("(submission|case|reply):" + uuidPattern), "The provided subject does not match the allowed pattern.");
-
-  String transactionId = payload.getStringClaim("txn");
-  validateTrueOrElseThrow(transactionId.matches("case:" + uuidPattern), "The provided txn does not match the allowed pattern.");
-}
-
-private void validateTrueOrElseThrow(boolean expression, String msg) {
-  if (!expression) {
-    throw new RuntimeException(msg);
-  }
-}
-```
-
-### Signaturprüfung eines vom Zustelldienst ausgestellten SET
-
-Um die Signatur eines SET zu überprüfen, welches vom Zustelldienst ausgestellt wurde, ist es notwendig auf die
-verwendeten Schlüssel zugreifen zu können. Der Zustelldienst stellt ein JSON Web Key (JWK) Set öffentlich zugänglich
-unter der URL `/.well-known/jwks.json` bereit. Ein Beispiel für ein JWK Set ist in folgendem Ausschnitt dargestellt:
-
-```json
-{
-  "keys": [
-    {
-      "alg": "PS512",
-      "e": "AQAB",
-      "key_ops": [
-        "verify"
-      ],
-      "kid": "6508dbcd-ab3b-4edb-a42b-37bc69f38fed",
-      "kty": "RSA",
-      "n": "65rmDz943SDKYWt8KhmaU…ga16_y9bAdoQJZRpcRr3_v9Q"
-    },
-    {
-      "alg": "PS512",
-      "e": "AQAB",
-      "key_ops": [
-        "verify"
-      ],
-      "kid": "14a70431-01e6-4d67-867d-d678a3686f4b",
-      "kty": "RSA",
-      "n": "wnqKgmQHSqJhvCfdUWWyi8q…yVv3TrQVvGtsjrJVjvJR-s_D7rWoBcJVM"
-    }
-  ]
-}
-```
-
-Mit diesem JWK Set kann die Signatur eines Security-Event-Tokens überprüft werden. Hierfür muss der Schlüssel mit der
-passenden `kid` aus dem Header des SET’s im JWK Set gesucht werden. Dann kann man mit diesem und einer entsprechenden
-Bibliothek eine Signaturprüfung durchführen. Im folgenden Beispiel wird die
-Bibliothek [nimbus-jose-jwt](https://connect2id.com/products/nimbus-jose-jwt) für die Prüfung genutzt.
-
-```java
-static final ZUSTELLDIENST_BASE_URL = "https://zustelldienst.example.com";
-
-boolean verifyZustelldienstSignature(SignedJWT securityEventToken, String keyId) {
-  JWKSet jwks = JWKSet.load(ZUSTELLDIENST_BASE_URL + "/.well-known/jwks.json");
-  JWK publicKey = jwks.getKeyByKeyId(keyId)
-
-  if (publicKey.getAlgorithm() != JWSAlgorithm.PS512) {
-    throw new RuntimeException("The key specified for signature verification doesn't use/specify PS512 as algorithm.")
-  }
-
-  JWSVerifier jwsVerifier = new RSASSAVerifier(publicKey.toRSAKey());
-  return signedJWT.verify(jwsVerifier);
-}
-```
-
-### Signaturprüfung eines vom empfangenden System ausgestellten SET
-
-Um die Signatur eines SET zu überprüfen, welches von einem empfangenden System ausgestellt wurde, ist es notwendig, auf den
-verwendeten Schlüssel zugreifen zu können. Die Schlüssel eines empfangenden Systems sind über die Destination in Form eines
-JSON Web Key (JWK) Sets öffentlich verfügbar. Welche Schritte notwendig sind und wie die Prüfung letztendlich durchgeführt
-wird, wird im Folgenden anhand eines Beispiels beschrieben.
-
-Als Ausgangslage dient das Token mit dem folgenden Header und der entsprechenden Payload. Aus dem Header wird die `kid`
-benötigt, sowie die `submissionId` aus dem Payload. Konkret sind das hier
-
-- kid: `dd0409e5-410e-4d98-85b6-f81a40b8d980`
-- submissionId: `F65FEAB2-4883-4DFF-85FB-169448545D9F`
-
-```json title="SET Header"
-{
-  "typ": "secevent+jwt"
-  "alg": "PS512",
-  "kid": "dd0409e5-410e-4d98-85b6-f81a40b8d980",
-}
-```
-
-```json title="SET Payload"
-{
-  "iss": "https://api.fitko.de/fit-connect/",
-  "iat": 1622796532,
-  "jti": "0BF6DBF6-CE7E-44A3-889F-82FE74C3E715",
-  "sub": "submission:F65FEAB2-4883-4DFF-85FB-169448545D9F",
-  "events": {
-    "https://schema.fitko.de/fit-connect/events/accept-submission": {}
-  },
-  "txn": "case:F73D30C6-8894-4444-8687-00AE756FEA90"
-}
-```
-
-Mit der `submissionId` kann über den Endpunkt <ApiLink to="/submissions/{submissionId}" /> die zugehörige `destinationId` ermittelt
-werden. Hier ist das konkret der Wert `92f2f581-c89d-44a5-b834-1fe3f6fa48d5`.
-
-```http title="Abfrage der Submission"
-GET /submissions/F65FEAB2-4883-4DFF-85FB-169448545D9F
-{
-  "destinationId": "92f2f581-c89d-44a5-b834-1fe3f6fa48d5",
-  // ...
-}
-```
-
-Über diese kann dann das JWK Set der zugehörigen Destination über ein <ApiLink to="/destinations/{destinationId}" /> abgefragt werden. In dem Attribut
-`publicKeys` ist das JWK Set abgelegt. In den darin enthaltenen Schlüsseln kann dann der Schlüssel mit `kid` von oben
-gesucht und für die Verifikation genutzt werden.
-
-```http title="Abfrage der Destination"
-GET /destinations/92f2f581-c89d-44a5-b834-1fe3f6fa48d5
-{
-  "publicKeys": {
-    "keys": [
-      // ...
-    ]
-  },
-  // ...
-}
-```
-
-Die Verifikation mit dem Schlüssel ist dann ziemlich geradlinig. Es wird noch überprüft, ob der Schlüssel den passenden
-Algorithmus hat und dann die eigentliche Verifikation über die Methode der Bibliothek durchgeführt.
-
-```java
-boolean verifyClientSignature(SignedJWT securityEventToken, String keyId) {
-  JWK publicKey = getKeyForSET(securityEventToken, keyId);
-
-  if (publicKey.getAlgorithm() != JWSAlgorithm.PS512) {
-    throw new RuntimeException("The key specified for signature verification doesn't use/specify PS512 as algorithm.")
-  }
-
-  JWSVerifier jwsVerifier = new RSASSAVerifier(publicKey.toRSAKey());
-  return signedJWT.verify(jwsVerifier);
-}
-```
-
diff --git a/docs/getting-started/receiving/process-and-acknowledge.mdx b/docs/getting-started/receiving/process-and-acknowledge.mdx
index 958ce3628..73934cf64 100644
--- a/docs/getting-started/receiving/process-and-acknowledge.mdx
+++ b/docs/getting-started/receiving/process-and-acknowledge.mdx
@@ -1,129 +1,7 @@
 ---
 sidebar_position: 8
-title: Empfangsbestätigung
+title: 🚧 Empfangsbestätigung
 ---
 
-import Tabs from '@theme/Tabs'
-import TabItem from '@theme/TabItem'
-
-import ApiLink from '@site/src/components/ApiLink'
-
-
-Der letzte Schritt zum Empfang einer Einreichung ist die Bestätigung des Empfangs und damit auch der Gültigkeit der
-Einreichung. Mit Gültigkeit ist hier gemeint, dass alle Informationen erfolgreich heruntergeladen, entschlüsselt und im
-Falle der Metadaten validiert werden konnten.
-
-Wie auf der [Event Log Übersichtsseite](../event-log.mdx#events) zu sehen, gibt es für ein empfangendes System ein festes
-Set an Events, die dem Zustelldienst gesendet werden können.
-
-| Event                                                           | Autor               | Bedeutung                     |
-|-----------------------------------------------------------------|---------------------|-------------------------------|
-| `https://schema.fitko.de/fit-connect/events/forward-submission` |                     | Ein nachgelagertes System hat die Einreichung zur Weiterleitung übernommen. |
-| `https://schema.fitko.de/fit-connect/events/reject-submission`  | Empfangendes System | Die Einreichung wurde durch den Empfänger zurückgewiesen. |
-| `https://schema.fitko.de/fit-connect/events/accept-submission`  | Empfangendes System | Die Einreichung wurde durch den Empfänger akzeptiert. |
-
-Um diese Events bzw. ein entsprechendes Event korrekt an den Zustelldienst zu versenden, muss es in Form eines SETs an
-diesen gesendet werden.
-
-- Die Generierung des SETs und die Ãœbermittlung an die API
-
-## Erstellung und Versand eines Security-Event-Token (SET)
-
-Um ein SET zu erstellen, MUSS ein JWK verwendet werden, der den [Vorgaben für Signaturschlüssel](../../details/crypto.md#signature-key)
-entspricht. Weiterhin ist es notwendig, dass die Id der Einreichung und des zugehörigen Vorgangs bekannt ist.
-
-<Tabs
-  defaultValue="java"
-  values={[
-    { label: 'Java', value: 'java', },
-    { label: 'C#', value: 'csharp', },
-  ]
-  }>
-<TabItem value="java">
-
-  ```java title=Annahmen
-  JWK key;
-  String subject = "submission:f65feab2-4883-4dff-85fb-169448545d9f";
-  String event ="https://schema.fitko.de/fit-connect/events/accept-submission";
-  String transactionId = "case:f73d30c6-8894-4444-8687-00ae756fea90";
-  ```
-
-  Die Payload- und Header-Attribute des SET müssen wie oben beschrieben definiert werden (siehe markierte Zeilen). Im dritten markierten Block wird das SET mit dem Schlüssel signiert und danach kann der serialisierte Wert an den [Zustelldienst](../../apis/delivery-service.mdx#post-/submissions/-submissionId-/events) gesendet werden.
-
-  ```java {3-10,12-16,22-24}
-  try {
-    JWSSigner signer = new RSASSASigner(key.toRSAKey());
-    JWTClaimsSet claimsSet = new JWTClaimsSet.Builder()
-            .issuer("https://my-custom-identifiable-service.domain")
-            .issueTime(new Date())
-            .jwtID(UUID.randomUUID().toString())
-            .subject(subject)
-            .claim("events", Map.of(event, Map.of()))
-            .claim("txn", transactionId)
-            .build();
-
-    JWSHeader header = JWSHeader.parse(Map.of(
-            "typ", "secevent+jwt",
-            "kid", key.getKeyID(),
-            "alg", "PS512"
-    ));
-
-    SignedJWT signedJWT = new SignedJWT(
-            header,
-            claimsSet);
-
-    signedJWT.sign(signer);
-
-    String signedAndSerializedSET = signedJWT.serialize(); // => SET, serialized as Base64 encoded string
-  } catch (JOSEException e) {
-      throw new RuntimeException("Could not generate SET");
-  }
-  ```
-  </TabItem>
-</Tabs>
-
-Dies kann dann über ein <ApiLink to="/submissions/{submissionId}/events" withMethod="post" /> erreicht werden. Hier wird das Event über den Request-Body
-übertragen und vom Zustelldienst syntaktisch und auf eine korrekte Signatur geprüft. Sind alle Prüfungen erfolgreich
-durchlaufen, wird das SET im Event Log abgespeichert und der Zustand der Einreichung abhängig vom Event geändert.
-
-## Event Log abfragen
-
-Der Event Log einer Einreichung kann über <ApiLink to="/submissions/{submissionId}/events" /> abgefragt werden. Hierbei wird der Event Log der Einreichung
-zurückgeliefert, der die verschiedenen Statusübergänge bzw. abgelegten Ereignisse beinhaltet. Das Ergebnis könnte wie folgt aussehen:
-
-```json
-{
-  "eventLog": [
-    "eyJraWQiOiJkZDA0MDllNS00MTBlLTRkOTgtODViNi1mODFhNDBiOGQ5ODAiLCJ0eXAiOiJzZWNldmVudCtqd3QiLCJhbGciOiJQUzUxMiJ9.ewogICJpc3MiOiAiaHR0cHM6Ly9hcGkuZml0a28uZGUvZml0LWNvbm5lY3QvIiwKICAiaWF0IjogMTYyMjc5NDMxOSwKICAianRpIjogIkVEQ0ZCRjIxLTVCMTYtNEQwNi05OUQwLURDNEMyNkY0RkI5RSIsCiAgInN1YiI6ICJzdWJtaXNzaW9uOkY2NUZFQUIyLTQ4ODMtNERGRi04NUZCLTE2OTQ0ODU0NUQ5RiIsCiAgImV2ZW50cyI6IHsKICAgICJodHRwczovL3NjaGVtYS5maXRrby5kZS9maXQtY29ubmVjdC9ldmVudHMvY3JlYXRlLXN1Ym1pc3Npb24iOiB7fQogIH0sCiAgInR4biI6ICJjYXNlOkY3M0QzMEM2LTg4OTQtNDQ0NC04Njg3LTAwQUU3NTZGRUE5MCIKfQ.TQBR_CBsoULi3cGaGg4oqFelQ9GVn8G-cNokzTVDZgZf4D7x_8wjsDcgTd0aamiy8ErlnV1xoAoDcPw81vajrBCaYgf9KI4sNhsW78jlDi_ywK04YhFbkvloDMioGf_5zCNTBreN9bTnU_VYuWB23R_YrYGi2exONft-ZReN_crEvDaKLdG9hqnaCRFwKJ1t8TbLvIyBKLqQYEqP0Oh6m3WA9IRz3EB41S-PZgJCIzmz_GvXdRvw_1B8A_Q7aHr2SQ6Dc-c406UJ5P_7FuypE6tLyuYf5GkmFZSauQ51H4LLl8pLrsW2PJJ28cMavOEx0AWoRLwB7yKK5bAGtcALWw-0W7Wmw1QEX3DZGTpXbEUM0U_7iXeEFrdtfCCbFPMVbmlK-b66IyKK_6yeaOAEjQvCUOrALfa2sSOS6RWiNOKyA1l1L29VoIBXgQ8np72NMV8-AP7UnQO1NPBghBM6LW6tcXceWeP8ayy4eEaZQ639pqH4TJRRkQqnuoTeADpYL9sX2hM9173O4abWiE-Z8zW2AQ1jhUvVXJ8w9ddtMIyjZJZOqoy3TbHxUYpn4UqbedlDyahpUiKCT7-qU2jOjeXAXEPQvWlSzLigNtFvYCEq-fOe1lpeNktoQQrC3Y-szk2vNj5fT_KmJY1QG1bhyrUMoGbA-pe45c-FcCE7ErQ",
-    "eyJraWQiOiJkZDA0MDllNS00MTBlLTRkOTgtODViNi1mODFhNDBiOGQ5ODAiLCJ0eXAiOiJzZWNldmVudCtqd3QiLCJhbGciOiJQUzUxMiJ9.ewogICJpc3MiOiAiaHR0cHM6Ly9hcGkuZml0a28uZGUvZml0LWNvbm5lY3QvIiwKICAiaWF0IjogMTYyMjc5NTczMiwKICAianRpIjogIjkwRDlCMjlELUMwNUYtNEYwMy04MUMwLUUyMzMxMTZDNTZEOSIsCiAgInN1YiI6ICJzdWJtaXNzaW9uOkY2NUZFQUIyLTQ4ODMtNERGRi04NUZCLTE2OTQ0ODU0NUQ5RiIsCiAgImV2ZW50cyI6IHsKICAgICJodHRwczovL3NjaGVtYS5maXRrby5kZS9maXQtY29ubmVjdC9ldmVudHMvc3VibWl0LXN1Ym1pc3Npb24iOiB7fQogIH0sCiAgInR4biI6ICJjYXNlOkY3M0QzMEM2LTg4OTQtNDQ0NC04Njg3LTAwQUU3NTZGRUE5MCIKfQ.THmHiZoYEMyyWCu2R4nEJtvgtB5PF0KAqtfu_Z-yVjfjSkXW7TtZnX96UAeCGsjpxkBJvXTXAgSB5n378KjZXebAtI7nbFE0gYgt3fwmxmpJitA-4e8v6KfvhwNcdqJHLKDzYRMq_yw7UiwLx1Cxz6nBiOKfR4piL707muKXTgD7DuP0kv-c6V9dGNQ4KzT_sJP5zDWogEzGWSVaLaJZrmDZHoUZMZ6C9kI7SvC-A7Q0ROkFznU_cpjjEAIG74_YCiICvjr91ueQWTdNyc1DBvxpEBtBWq6nWPTg0d91iQlhPUgNKbmC4QtG_tFctTYhX7stO-JbL-4VnAQjQHD5uw4SvvpPrTN4Z3Wz2IjMm8-ClI9imGKThfAqwTaWtJv7Bn_FDiN_nEuGyN2of-M2vZWa-DlZ2iPFct6ESp9PumaO_pIF5cUrX4IBoe3fcmg788-ClReytCMjD13uPVOVoIb3yimUdupOUROxb3MITowHP2-YG1gWqhQp22XSQXktugDHWezAuN0xuimwAJq_OvyoDxj4lsnn6BQkqZYdqD0hJghwqZIytg8PlIi76Cdvh8NFgVw48xZ0WUOFvBPJO2Qe8PiTSVX_P9CIIWxsKlYwg8vJ226qi0eYfD70ynjBDQIPmsOOSut6bFKgOLBFa9ZvCy6HmhyLa-EsgLhS4uc",
-    "eyJraWQiOiJkZDA0MDllNS00MTBlLTRkOTgtODViNi1mODFhNDBiOGQ5ODAiLCJ0eXAiOiJzZWNldmVudCtqd3QiLCJhbGciOiJQUzUxMiJ9.ewogICJpc3MiOiAiaHR0cHM6Ly9hcGkuZml0a28uZGUvZml0LWNvbm5lY3QvIiwKICAiaWF0IjogMTYyMjc5NjUzMiwKICAianRpIjogIjBCRjZEQkY2LUNFN0UtNDRBMy04ODlGLTgyRkU3NEMzRTcxNSIsCiAgInN1YiI6ICJzdWJtaXNzaW9uOkY2NUZFQUIyLTQ4ODMtNERGRi04NUZCLTE2OTQ0ODU0NUQ5RiIsCiAgImV2ZW50cyI6IHsKICAgICJodHRwczovL3NjaGVtYS5maXRrby5kZS9maXQtY29ubmVjdC9ldmVudHMvYWNjZXB0LXN1Ym1pc3Npb24iOiB7fQogIH0sCiAgInR4biI6ICJjYXNlOkY3M0QzMEM2LTg4OTQtNDQ0NC04Njg3LTAwQUU3NTZGRUE5MCIKfQ.blxz8Tw_Sl8_tomcqxezamX_DVGyGiu61iYGv3mA3yVLLSDlPscjcHm_MCNm5iq-ODUk-FCW1ljOexN2czZJic8wvLhWhcUt8U2kkkjis-CWz4oqhuB4ynAj7Yyn4H4xkLoH7Y6k9pqW9P2mN7984o_578mJJ4mQSNEGcPr_BDbRc2nUKcupG7iS-hx6VTjrRTP7LGPyOblDB8oL_QyT9qY0US7PT35QgiraUSK3RWhDpj6C0I4bOV5cQeSqlXT2xIfeO3sUPeWLYVmGjuB8QWvDsniKz6JqRN-v39FrAppsOufdiRim36wtBZt9o-3txjtz5wu0_eSfjOueGJbfqAeWsbd2TYwZtL-7Z-MPfoe3XInDNmmTfxo4KXkF1GkRnGnjniwrWBHeh18A04NNHYcX-vsoijEreqDN2lEKwks3pDK5Twe5O9RxJ0cYB8oeKB55rJzs15pfla69qVn9zFvCAc_ji_9WaAa_mIG0zimMucG3qA0KrUww88FaS4heh5-Gs1Ik35QoUOCCa7ZMJMKxYArFCgUqHw-gX60U5mp4hy7tVe3hD-RxIRnlTIkEkHgDGmslVc1t8fC9oPgljQirPcTIeWhVyLmk6rJLgR5nqizujz3hDUCdBuRF43fS6qedmYfHq1MyakJzEFe2ht1rpGw4ftAt0kcOBOf2jyQ"
-  ]
-}
-```
-
-Im Log dieser Einreichung wurden drei Events aufgezeichnet, wobei das letzte SET das aktuellste ist. Das letzte SET aus obigem Beispiel hat folgenden Payload.
-
-```json
-{
-  "iss": "https://api.fitko.de/fit-connect/",
-  "iat": 1622796532,
-  "jti": "0BF6DBF6-CE7E-44A3-889F-82FE74C3E715",
-  "sub": "submission:F65FEAB2-4883-4DFF-85FB-169448545D9F",
-  "events": {
-    "https://schema.fitko.de/fit-connect/events/accept-submission": {}
-  },
-  "txn": "case:F73D30C6-8894-4444-8687-00AE756FEA90"
-}
-```
-
-In dem SET ist folgende Information abgelegt:
-- Er wurde vom Zustelldienst https://api.fitko.de/fit-connect/ ausgestellt (iss = issuer)
-- Er wurde am 04.06.2021 um 08:48:52 GMT+0 (Unixzeit 1622796532) aufgezeichnet (iat = issued at)
-- Er hat die eindeutige ID `0BF6DBF6-CE7E-44A3-889F-82FE74C3E715` (jti = JWT ID)
-- Er betrifft die Einreichung `F65FEAB2-4883-4DFF-85FB-169448545D9F` (sub = subject)
-- Die Submission wurde angelegt "accept-submission" (events)
-- Die Submission gehört zur Vorgangsreferenz (case) `F73D30C6-8894-4444-8687-00AE756FEA90`
-
-Aus dem Event des SET lässt sich ableiten, dass der aktuelle Status der Einreichung `accepted` ist und der Zeitpunkt des
-Ãœbergangs der 04.06.2021 um 08:48:52 GMT+0 war. Da alle SETs im Event Log signiert sind, kann diese Signatur auch noch
-überprüft werden. Die Überprüfung ist im Artikel zum [Event Log](../event-log.mdx#set-validation) beschrieben.
+Der letzte Schritt zum Empfang einer Einreichung ist die Bestätigung des Empfangs und damit auch der Gültigkeit der Einreichung.
+Mit Gültigkeit ist hier gemeint, dass alle Informationen erfolgreich heruntergeladen, entschlüsselt und im Falle der Metadaten validiert werden konnten.
diff --git a/docs/getting-started/sending/query-status.mdx b/docs/getting-started/sending/query-status.mdx
index 41d453414..1ce128c54 100644
--- a/docs/getting-started/sending/query-status.mdx
+++ b/docs/getting-started/sending/query-status.mdx
@@ -1,69 +1,28 @@
 ---
-title: Status abfragen
+title: 🚧 Status abfragen
 sidebar_position: 9
 ---
 
-import ApiLink from '@site/src/components/ApiLink'
+import Mermaid from '@site/src/components/Mermaid'
 
-Nachdem die Einreichung versendet worden ist, kann der Status dieser abgefragt werden. Der Status ist für das sendende
-System relevant, da hierüber das empfangende System mitteilt, ob es die Einreichung technisch korrekt verarbeiten konnte.
-Bis zu einer Bestätigung über den Status *Accepted* sollte das System sämtliche Inhalte einer Einreichung vorhalten.
-Dies sollte es tun, damit es im Falle eines Fehlers (aufgrund eines inkorrekten Schemas oder eines falschen Public Keys), den Fehler
-eventuell korrigieren kann und Informationen korrekt übermitteln kann, ohne den Nutzer (bspw. einen Antragssteller) zu einer
-erneuten Dateneingabe aufzufordern.
+:::caution Hinweis :construction:
 
-Zudem stellt der Status in Form des signierten Security-Event-Tokens einen sicheren Nachweis der Ãœbermittlung und des Empfangs dar,
-der gegenüber Dritten genutzt werden kann.
+Die Abfrage des Status einer Einreichung ist noch unter Bearbeitung, da das Statusmodell gerade überarbeitet wird.
+Zukünftig wird es eine Möglichkeit geben, bzgl. Statusänderungen über einen Callback benachrichtigt zu werden.
 
-Das Statusmodell einer Einreichung ist in der folgenden Grafik dargestellt und enthält fünf Zustände (in orange), die in
-der darunterliegenden Tabelle beschrieben sind.
+:::
 
-![Statusdiagramm](/images/status/status.svg)
+Nachdem die Einreichung abgeschlossen wurde, kann der Status der Einreichung abgefragt werden.
 
-| Status        | Bedeutung                                                                                               |
-|---------------|---------------------------------------------------------------------------------------------------------|
-| `incomplete`  | Das sendende System hat begonnen, die Einreichung zu übermitteln. Sie jedoch noch nicht abgesendet.     |
-| `submitted`   | Das sendende System hat die Einreichung vollständig übermittelt und abgesendet.                         |
-| `forwarded`   | Ein vermittelndes System hat die Einreichung übernommen, sie aber noch nicht dem Zielsystem zugestellt. |
-| `rejected`    | Die Einreichung wurde durch den Empfänger zurückgewiesen. |
-| `accepted`    | Die Einreichung wurde durch den Empfänger akzeptiert. |
-
-Der Status wird über <ApiLink to="/submissions/{submissionId}/events" /> abgefragt. Hierbei wird der Event Log der Einreichung
-zurückgeliefert, der die verschiedenen Statusübergänge bzw. abgelegten Ereignisse beinhaltet. Das Ergebnis könnte wie folgt aussehen:
-
-```json
-{
-  "eventLog": [
-    "eyJraWQiOiJkZDA0MDllNS00MTBlLTRkOTgtODViNi1mODFhNDBiOGQ5ODAiLCJ0eXAiOiJzZWNldmVudCtqd3QiLCJhbGciOiJQUzUxMiJ9.ewogICJpc3MiOiAiaHR0cHM6Ly9hcGkuZml0a28uZGUvZml0LWNvbm5lY3QvIiwKICAiaWF0IjogMTYyMjc5NDMxOSwKICAianRpIjogIkVEQ0ZCRjIxLTVCMTYtNEQwNi05OUQwLURDNEMyNkY0RkI5RSIsCiAgInN1YiI6ICJzdWJtaXNzaW9uOkY2NUZFQUIyLTQ4ODMtNERGRi04NUZCLTE2OTQ0ODU0NUQ5RiIsCiAgImV2ZW50cyI6IHsKICAgICJodHRwczovL3NjaGVtYS5maXRrby5kZS9maXQtY29ubmVjdC9ldmVudHMvY3JlYXRlLXN1Ym1pc3Npb24iOiB7fQogIH0sCiAgInR4biI6ICJjYXNlOkY3M0QzMEM2LTg4OTQtNDQ0NC04Njg3LTAwQUU3NTZGRUE5MCIKfQ.TQBR_CBsoULi3cGaGg4oqFelQ9GVn8G-cNokzTVDZgZf4D7x_8wjsDcgTd0aamiy8ErlnV1xoAoDcPw81vajrBCaYgf9KI4sNhsW78jlDi_ywK04YhFbkvloDMioGf_5zCNTBreN9bTnU_VYuWB23R_YrYGi2exONft-ZReN_crEvDaKLdG9hqnaCRFwKJ1t8TbLvIyBKLqQYEqP0Oh6m3WA9IRz3EB41S-PZgJCIzmz_GvXdRvw_1B8A_Q7aHr2SQ6Dc-c406UJ5P_7FuypE6tLyuYf5GkmFZSauQ51H4LLl8pLrsW2PJJ28cMavOEx0AWoRLwB7yKK5bAGtcALWw-0W7Wmw1QEX3DZGTpXbEUM0U_7iXeEFrdtfCCbFPMVbmlK-b66IyKK_6yeaOAEjQvCUOrALfa2sSOS6RWiNOKyA1l1L29VoIBXgQ8np72NMV8-AP7UnQO1NPBghBM6LW6tcXceWeP8ayy4eEaZQ639pqH4TJRRkQqnuoTeADpYL9sX2hM9173O4abWiE-Z8zW2AQ1jhUvVXJ8w9ddtMIyjZJZOqoy3TbHxUYpn4UqbedlDyahpUiKCT7-qU2jOjeXAXEPQvWlSzLigNtFvYCEq-fOe1lpeNktoQQrC3Y-szk2vNj5fT_KmJY1QG1bhyrUMoGbA-pe45c-FcCE7ErQ",
-    "eyJraWQiOiJkZDA0MDllNS00MTBlLTRkOTgtODViNi1mODFhNDBiOGQ5ODAiLCJ0eXAiOiJzZWNldmVudCtqd3QiLCJhbGciOiJQUzUxMiJ9.ewogICJpc3MiOiAiaHR0cHM6Ly9hcGkuZml0a28uZGUvZml0LWNvbm5lY3QvIiwKICAiaWF0IjogMTYyMjc5NTczMiwKICAianRpIjogIjkwRDlCMjlELUMwNUYtNEYwMy04MUMwLUUyMzMxMTZDNTZEOSIsCiAgInN1YiI6ICJzdWJtaXNzaW9uOkY2NUZFQUIyLTQ4ODMtNERGRi04NUZCLTE2OTQ0ODU0NUQ5RiIsCiAgImV2ZW50cyI6IHsKICAgICJodHRwczovL3NjaGVtYS5maXRrby5kZS9maXQtY29ubmVjdC9ldmVudHMvc3VibWl0LXN1Ym1pc3Npb24iOiB7fQogIH0sCiAgInR4biI6ICJjYXNlOkY3M0QzMEM2LTg4OTQtNDQ0NC04Njg3LTAwQUU3NTZGRUE5MCIKfQ.THmHiZoYEMyyWCu2R4nEJtvgtB5PF0KAqtfu_Z-yVjfjSkXW7TtZnX96UAeCGsjpxkBJvXTXAgSB5n378KjZXebAtI7nbFE0gYgt3fwmxmpJitA-4e8v6KfvhwNcdqJHLKDzYRMq_yw7UiwLx1Cxz6nBiOKfR4piL707muKXTgD7DuP0kv-c6V9dGNQ4KzT_sJP5zDWogEzGWSVaLaJZrmDZHoUZMZ6C9kI7SvC-A7Q0ROkFznU_cpjjEAIG74_YCiICvjr91ueQWTdNyc1DBvxpEBtBWq6nWPTg0d91iQlhPUgNKbmC4QtG_tFctTYhX7stO-JbL-4VnAQjQHD5uw4SvvpPrTN4Z3Wz2IjMm8-ClI9imGKThfAqwTaWtJv7Bn_FDiN_nEuGyN2of-M2vZWa-DlZ2iPFct6ESp9PumaO_pIF5cUrX4IBoe3fcmg788-ClReytCMjD13uPVOVoIb3yimUdupOUROxb3MITowHP2-YG1gWqhQp22XSQXktugDHWezAuN0xuimwAJq_OvyoDxj4lsnn6BQkqZYdqD0hJghwqZIytg8PlIi76Cdvh8NFgVw48xZ0WUOFvBPJO2Qe8PiTSVX_P9CIIWxsKlYwg8vJ226qi0eYfD70ynjBDQIPmsOOSut6bFKgOLBFa9ZvCy6HmhyLa-EsgLhS4uc",
-    "eyJraWQiOiJkZDA0MDllNS00MTBlLTRkOTgtODViNi1mODFhNDBiOGQ5ODAiLCJ0eXAiOiJzZWNldmVudCtqd3QiLCJhbGciOiJQUzUxMiJ9.ewogICJpc3MiOiAiaHR0cHM6Ly9hcGkuZml0a28uZGUvZml0LWNvbm5lY3QvIiwKICAiaWF0IjogMTYyMjc5NjUzMiwKICAianRpIjogIjBCRjZEQkY2LUNFN0UtNDRBMy04ODlGLTgyRkU3NEMzRTcxNSIsCiAgInN1YiI6ICJzdWJtaXNzaW9uOkY2NUZFQUIyLTQ4ODMtNERGRi04NUZCLTE2OTQ0ODU0NUQ5RiIsCiAgImV2ZW50cyI6IHsKICAgICJodHRwczovL3NjaGVtYS5maXRrby5kZS9maXQtY29ubmVjdC9ldmVudHMvYWNjZXB0LXN1Ym1pc3Npb24iOiB7fQogIH0sCiAgInR4biI6ICJjYXNlOkY3M0QzMEM2LTg4OTQtNDQ0NC04Njg3LTAwQUU3NTZGRUE5MCIKfQ.blxz8Tw_Sl8_tomcqxezamX_DVGyGiu61iYGv3mA3yVLLSDlPscjcHm_MCNm5iq-ODUk-FCW1ljOexN2czZJic8wvLhWhcUt8U2kkkjis-CWz4oqhuB4ynAj7Yyn4H4xkLoH7Y6k9pqW9P2mN7984o_578mJJ4mQSNEGcPr_BDbRc2nUKcupG7iS-hx6VTjrRTP7LGPyOblDB8oL_QyT9qY0US7PT35QgiraUSK3RWhDpj6C0I4bOV5cQeSqlXT2xIfeO3sUPeWLYVmGjuB8QWvDsniKz6JqRN-v39FrAppsOufdiRim36wtBZt9o-3txjtz5wu0_eSfjOueGJbfqAeWsbd2TYwZtL-7Z-MPfoe3XInDNmmTfxo4KXkF1GkRnGnjniwrWBHeh18A04NNHYcX-vsoijEreqDN2lEKwks3pDK5Twe5O9RxJ0cYB8oeKB55rJzs15pfla69qVn9zFvCAc_ji_9WaAa_mIG0zimMucG3qA0KrUww88FaS4heh5-Gs1Ik35QoUOCCa7ZMJMKxYArFCgUqHw-gX60U5mp4hy7tVe3hD-RxIRnlTIkEkHgDGmslVc1t8fC9oPgljQirPcTIeWhVyLmk6rJLgR5nqizujz3hDUCdBuRF43fS6qedmYfHq1MyakJzEFe2ht1rpGw4ftAt0kcOBOf2jyQ"
-  ]
-}
-```
-
-Im Log dieser Einreichung wurden drei Events aufgezeichnet. Das letzte, aktuellste Security-Event-Token hat folgenden Payload.
-
-```json
-{
-  "iss": "https://api.fitko.de/fit-connect/",
-  "iat": 1622796532,
-  "jti": "0BF6DBF6-CE7E-44A3-889F-82FE74C3E715",
-  "sub": "submission:F65FEAB2-4883-4DFF-85FB-169448545D9F",
-  "events": {
-    "https://schema.fitko.de/fit-connect/events/accept-submission": {}
-  },
-  "txn": "case:F73D30C6-8894-4444-8687-00AE756FEA90"
-}
-```
-
-In dem SET ist folgende Information abgelegt:
-- Er wurde vom Zustelldienst https://api.fitko.de/fit-connect/ ausgestellt (iss = issuer)
-- Er wurde am 04.06.2021 um 08:48:52 GMT+0 (Unixzeit 1622796532) aufgezeichnet (iat = issued at)
-- Er hat die eindeutige ID `0BF6DBF6-CE7E-44A3-889F-82FE74C3E715` (jti = JWT ID)
-- Er betrifft die Einreichung `F65FEAB2-4883-4DFF-85FB-169448545D9F` (sub = subject)
-- Die Submission wurde angelegt "accept-submission" (events)
-- Die Submission gehört zur Vorgangsreferenz (case) `F73D30C6-8894-4444-8687-00AE756FEA90`
-
-Aus dem Event des SET lässt sich ableiten, dass der aktuelle Status der Einreichung `accepted` ist und der Zeitpunkt des
-Ãœbergangs der 04.06.2021 um 08:48:52 GMT+0 war. Da alle SETs im Event Log signiert sind, kann diese Signatur auch noch
-überprüft werden. Die Überprüfung ist im Artikel zum [Event Log](../event-log.mdx#set-validation) beschrieben.
+<Mermaid>
+  stateDiagram-v2
+  [*] --> Incomplete
+  Incomplete --> Submitted
+  Submitted --> Forwarded
+  Forwarded --> Rejected
+  Forwarded --> Accepted
+  Submitted --> Accepted
+  Submitted --> Rejected
+  Accepted --> [*]
+  Rejected --> [*]
+</Mermaid>
diff --git a/docs/sidebar.js b/docs/sidebar.js
index 0703c4659..44fc1e2ca 100644
--- a/docs/sidebar.js
+++ b/docs/sidebar.js
@@ -29,7 +29,6 @@ module.exports = {
         'getting-started/authentication',
         'getting-started/metadata',
         'getting-started/encryption',
-        'getting-started/event-log',
         {
           type: 'category',
           label: 'Versenden',
@@ -75,6 +74,8 @@ module.exports = {
       label: 'Detailinformationen',
       items: [
         'details/crypto',
+        'details/status',
+        'details/event-log',
         'details/schema-reference',
         'details/pgp-export',
         {
diff --git a/docs/status-and-error-codes.md b/docs/status-and-error-codes.md
index 921147829..f60f183a2 100644
--- a/docs/status-and-error-codes.md
+++ b/docs/status-and-error-codes.md
@@ -34,42 +34,37 @@ abgebildet. Fachliche schon.
 
 ### Technische Fehler
 
-| `type` des technischen Fehlers                                          | Titel laut [httpstatus.es](https://httpstatuses.com/)   | Beschreibung |
-|-------------------------------------------------------------------------|---------------------------------------------------------|--------------|
-| https://schema.fitko.de/fit-connect/problems/constraint-violation       | 400 Bad Request                                         |              |
-| https://schema.fitko.de/fit-connect/problems/request-binding-error      | 400 Bad Request                                         |              |
-| https://schema.fitko.de/fit-connect/problems/access-denied              | 401 Unauthorized                                        |              |
-| https://schema.fitko.de/fit-connect/problems/access-forbidden           | 403 Forbidden                                           |              |
-| https://schema.fitko.de/fit-connect/problems/no-handler-found           | 404 Not Found                                           |              |
-| https://schema.fitko.de/fit-connect/problems/missing-request-part       | 400 Bad Request                                         |              |
-| https://schema.fitko.de/fit-connect/problems/missing-request-parameter  | 400 Bad Request                                         |              |
-| https://schema.fitko.de/fit-connect/problems/socket-timeout             | 504 Gateway Timeout                                     |              |
-| https://schema.fitko.de/fit-connect/problems/type-mismatch              | 400 Bad Request                                         |              |
-| https://schema.fitko.de/fit-connect/problems/multipart-error            | 400 Bad Request                                         |              |
-| https://schema.fitko.de/fit-connect/problems/message-not-readable       | 400 Bad Request                                         |              |
-| https://schema.fitko.de/fit-connect/problems/method-not-supported       | 405 Method Not Allowed                                  |              |
-| https://schema.fitko.de/fit-connect/problems/media-type-not-supported   | 415 Unsupported Media Type                              |              |
-| https://schema.fitko.de/fit-connect/problems/media-type-not-acceptable  | 406 Not Acceptable                                      |              |
-| https://schema.fitko.de/fit-connect/problems/unsupported-operation      | 501 Not Implemented                                     |              |
+| `type` des technischen Fehlers                                         | Titel laut [httpstatus.es](https://httpstatuses.com/)   | Beschreibung |
+|------------------------------------------------------------------------|---------------------------------------------------------|--------------|
+| https://schema.fitko.de/fit-connect/problems/constraint-violation      | 400 Bad Request                                         |              |
+| https://schema.fitko.de/fit-connect/problems/request-binding-error     | 400 Bad Request                                         |              |
+| https://schema.fitko.de/fit-connect/problems/no-handler-found          | 404 Not Found                                           |              |
+| https://schema.fitko.de/fit-connect/problems/missing-request-part      | 400 Bad Request                                         |              |
+| https://schema.fitko.de/fit-connect/problems/missing-request-parameter | 400 Bad Request                                         |              |
+| https://schema.fitko.de/fit-connect/problems/socket-timeout            | 504 Gateway Timeout                                     |              |
+| https://schema.fitko.de/fit-connect/problems/type-mismatch             | 400 Bad Request                                         |              |
+| https://schema.fitko.de/fit-connect/problems/multipart-error           | 400 Bad Request                                         |              |
+| https://schema.fitko.de/fit-connect/problems/message-not-readable      | 400 Bad Request                                         |              |
+| https://schema.fitko.de/fit-connect/problems/method-not-supported      | 405 Method Not Allowed                                  |              |
+| https://schema.fitko.de/fit-connect/problems/media-type-not-supported  | 415 Unsupported Media Type                              |              |
+| https://schema.fitko.de/fit-connect/problems/media-type-not-acceptable | 406 Not Acceptable                                      |              |
+| https://schema.fitko.de/fit-connect/problems/unsupported-operation     | 501 Not Implemented                                     |              |
+| https://schema.fitko.de/fit-connect/problems/invalid-state-transition  | 500 Internal Server Error                               |              |
 
 ### Fachliche Fehler
 
-| `type` des fachlichen Fehlers                                                     | Titel laut [httpstatus.es](https://httpstatuses.com/)   | Beschreibung |
-|-----------------------------------------------------------------------------------|---------------------------------------------------------|--------------|
-| https://schema.fitko.de/fit-connect/problems/access-forbidden                     | 403 Forbidden                                           |              |
-| https://schema.fitko.de/fit-connect/problems/invalid-state-transition             | 409 Internal Server Error                               |              |
-| https://schema.fitko.de/fit-connect/problems/submission-incomplete                | 422 Unprocessable Entity                                |              |
-| https://schema.fitko.de/fit-connect/problems/submission-not-found                 | 404 Not Found                                           |              |
-| https://schema.fitko.de/fit-connect/problems/case-not-found                       | 404 Not Found                                           |              |
-| https://schema.fitko.de/fit-connect/problems/not-in-acknowledgeable-state         | 422 Unprocessable Entity                                |              |
-| https://schema.fitko.de/fit-connect/problems/attachment-not-announced             | 422 Unprocessable Entity                                |              |
-| https://schema.fitko.de/fit-connect/problems/attachment-not-found                 | 404 Not Found                                           |              |
-| https://schema.fitko.de/fit-connect/problems/destination-not-found                | 404 Not Found                                           |              |
-| https://schema.fitko.de/fit-connect/problems/empty-attachment                     | 400 Bad Request                                         |              |
-| https://schema.fitko.de/fit-connect/problems/jwk-not-valid                        | 422 Unprocessable Entity                                | JWK fachlich nicht zulässig. Details stehen im Feld `detail`. |
-| https://schema.fitko.de/fit-connect/problems/security-event-token-processing      | 422 Unprocessable Entity                                |              |
-| https://schema.fitko.de/fit-connect/problems/security-event-token-validation      | 422 Unprocessable Entity                                |              |
-| https://schema.fitko.de/fit-connect/problems/no-event-log                         | 404 Not Found                                           |              |
+| `type` des fachlichen Fehlers                                             | Titel laut [httpstatus.es](https://httpstatuses.com/)   | Beschreibung |
+|---------------------------------------------------------------------------|---------------------------------------------------------|--------------|
+| https://schema.fitko.de/fit-connect/problems/access-forbidden             | 403 Forbidden                                           |              |
+| https://schema.fitko.de/fit-connect/problems/submission-already-fetched   | 410 Gone                                                |              |
+| https://schema.fitko.de/fit-connect/problems/submission-incomplete        | 422 Unprocessable Entity                                |              |
+| https://schema.fitko.de/fit-connect/problems/submission-not-found         | 404 Not Found                                           |              |
+| https://schema.fitko.de/fit-connect/problems/not-in-acknowledgeable-state | 422 Unprocessable Entity                                |              |
+| https://schema.fitko.de/fit-connect/problems/attachment-not-announced     | 422 Unprocessable Entity                                |              |
+| https://schema.fitko.de/fit-connect/problems/attachment-not-found         | 404 Not Found                                           |              |
+| https://schema.fitko.de/fit-connect/problems/destination-not-found        | 404 Not Found                                           |              |
+| https://schema.fitko.de/fit-connect/problems/empty-attachment             | 400 Bad Request                                         |              |
+| https://schema.fitko.de/fit-connect/problems/jwk-not-valid                | 422 Unprocessable Entity                                | JWK fachlich nicht zulässig. Details stehen im Feld `detail`. |
 
 ## Verhalten von API Clients
 
diff --git a/src/components/ApiLink.js b/src/components/ApiLink.js
deleted file mode 100644
index 3690b7175..000000000
--- a/src/components/ApiLink.js
+++ /dev/null
@@ -1,15 +0,0 @@
-import React from "react"
-import Link from '@docusaurus/Link'
-
-export default ({ to, withMethod='get', children }) => {
-  const url = `/docs/apis/delivery-service#${withMethod.toLowerCase()}-${to.replaceAll(/\{|\}/g, '-')}`
-  if (children) {
-    return <Link to={url}>{children}</Link>
-  } else {
-    return <Link to={url}><code>{withMethod.toUpperCase()} {to}</code></Link>
-  }
-
-}
-
-// http://localhost:3000/docs/apis/delivery-service#post-/submissions/%3CsubmissionId%3E/events
-// http://localhost:3000/docs/apis/delivery-service#post-/submissions/-submissionId-/events
diff --git a/src/css/custom.css b/src/css/custom.css
index 301b267e2..db02f9100 100644
--- a/src/css/custom.css
+++ b/src/css/custom.css
@@ -9,10 +9,3 @@ dl dt {
   fill: var(--ifm-font-color-base);
   stroke: var(--ifm-font-color-base);
 }
-
-.docusaurus-highlight-code-line {
-  background-color: rgba(0,0,0, 0.3);
-  display: block;
-  margin: 0 calc(-1 * var(--ifm-pre-padding));
-  padding: 0 var(--ifm-pre-padding);
-}
diff --git a/static/images/status/status.svg b/static/images/status/status.svg
index 05c1edbec..17d81725c 100644
--- a/static/images/status/status.svg
+++ b/static/images/status/status.svg
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill-opacity="1" color-rendering="auto" color-interpolation="auto" text-rendering="auto" stroke="black" stroke-linecap="square" width="1730" stroke-miterlimit="10" shape-rendering="auto" stroke-opacity="1" fill="black" stroke-dasharray="none" font-weight="normal" stroke-width="1" height="362" font-family="'Dialog'" font-style="normal" stroke-linejoin="miter" font-size="12px" stroke-dashoffset="0" image-rendering="auto">
+<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill-opacity="1" color-rendering="auto" color-interpolation="auto" text-rendering="auto" stroke="black" stroke-linecap="square" width="1730" stroke-miterlimit="10" shape-rendering="auto" stroke-opacity="1" fill="black" stroke-dasharray="none" font-weight="normal" stroke-width="1" height="331" font-family="'Dialog'" font-style="normal" stroke-linejoin="miter" font-size="12px" stroke-dashoffset="0" image-rendering="auto">
   <!--Generated by ySVG 2.5-->
   <defs id="genericDefs"/>
   <g>
@@ -12,8 +12,8 @@
         <stop stop-opacity="1" stop-color="rgb(194,214,255)" offset="100%"/>
       </linearGradient>
       <linearGradient x1="0" gradientUnits="userSpaceOnUse" x2="45" y1="-182.5" y2="-137.5" id="linearGradient3" spreadMethod="reflect">
-        <stop stop-opacity="1" stop-color="silver" offset="0%"/>
-        <stop stop-opacity="1" stop-color="silver" offset="100%"/>
+        <stop stop-opacity="1" stop-color="rgb(217,255,217)" offset="0%"/>
+        <stop stop-opacity="1" stop-color="rgb(194,255,194)" offset="100%"/>
       </linearGradient>
       <linearGradient x1="645" gradientUnits="userSpaceOnUse" x2="765" y1="-182.5" y2="-137.5" id="linearGradient4" spreadMethod="reflect">
         <stop stop-opacity="1" stop-color="rgb(255,223,158)" offset="0%"/>
@@ -63,27 +63,15 @@
         <stop stop-opacity="1" stop-color="rgb(217,230,255)" offset="0%"/>
         <stop stop-opacity="1" stop-color="rgb(194,214,255)" offset="100%"/>
       </linearGradient>
-      <linearGradient x1="60.4529" gradientUnits="userSpaceOnUse" x2="181.3586" y1="-39.0953" y2="-39.0953" id="linearGradient16" spreadMethod="reflect">
-        <stop stop-opacity="1" stop-color="rgb(217,230,255)" offset="0%"/>
-        <stop stop-opacity="1" stop-color="rgb(194,214,255)" offset="100%"/>
-      </linearGradient>
-      <linearGradient x1="242.1223" gradientUnits="userSpaceOnUse" x2="331.7472" y1="-39.0953" y2="-39.0953" id="linearGradient17" spreadMethod="reflect">
-        <stop stop-opacity="1" stop-color="rgb(217,255,217)" offset="0%"/>
-        <stop stop-opacity="1" stop-color="rgb(194,255,194)" offset="100%"/>
-      </linearGradient>
-      <linearGradient x1="347.6985" gradientUnits="userSpaceOnUse" x2="467.6985" y1="-39.0953" y2="5.9047" id="linearGradient18" spreadMethod="reflect">
-        <stop stop-opacity="1" stop-color="rgb(255,223,158)" offset="0%"/>
-        <stop stop-opacity="1" stop-color="rgb(255,202,97)" offset="100%"/>
-      </linearGradient>
       <clipPath clipPathUnits="userSpaceOnUse" id="clipPath1">
-        <path d="M0 0 L1730 0 L1730 362 L0 362 L0 0 Z"/>
+        <path d="M0 0 L1730 0 L1730 331 L0 331 L0 0 Z"/>
       </clipPath>
       <clipPath clipPathUnits="userSpaceOnUse" id="clipPath2">
-        <path d="M-15 -341 L1715 -341 L1715 21 L-15 21 L-15 -341 Z"/>
+        <path d="M-15 -341 L1715 -341 L1715 -10 L-15 -10 L-15 -341 Z"/>
       </clipPath>
     </defs>
     <g fill="white" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="translate(15,341)" stroke="white">
-      <rect x="-15" width="1730" height="362" y="-341" clip-path="url(#clipPath2)" stroke="none"/>
+      <rect x="-15" width="1730" height="331" y="-341" clip-path="url(#clipPath2)" stroke="none"/>
     </g>
     <g fill="url(#linearGradient1)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,15,341)" stroke="url(#linearGradient1)">
       <ellipse rx="60" ry="22.5" clip-path="url(#clipPath2)" cx="345" cy="-160" stroke="none"/>
@@ -107,7 +95,7 @@
     <g fill="url(#linearGradient3)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,15,341)" stroke="url(#linearGradient3)">
       <circle r="22.5" clip-path="url(#clipPath2)" cx="22.5" cy="-160" stroke="none"/>
     </g>
-    <g stroke-linecap="butt" transform="matrix(1,0,0,1,15,341)" fill="rgb(153,153,153)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(153,153,153)" stroke-width="2" stroke-miterlimit="1.45">
+    <g stroke-linecap="butt" transform="matrix(1,0,0,1,15,341)" fill="rgb(0,158,0)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(0,158,0)" stroke-width="2" stroke-miterlimit="1.45">
       <circle fill="none" r="22.5" clip-path="url(#clipPath2)" cx="22.5" cy="-160"/>
     </g>
     <g fill="url(#linearGradient4)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,15,341)" stroke="url(#linearGradient4)">
@@ -225,76 +213,42 @@
     </g>
     <g stroke-linecap="butt" transform="matrix(1,0,0,1,15,341)" fill="rgb(0,53,158)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(0,53,158)" stroke-width="2" stroke-miterlimit="1.45">
       <rect fill="none" x="1580" width="120" height="45" y="-220" clip-path="url(#clipPath2)"/>
-    </g>
-    <g fill="url(#linearGradient16)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,15,341)" stroke="url(#linearGradient16)">
-      <rect x="0" width="181.3586" height="45" y="-39.0953" clip-path="url(#clipPath2)" stroke="none"/>
-    </g>
-    <g stroke-linecap="butt" font-size="13px" transform="matrix(1,0,0,1,15,341)" fill="rgb(0,32,97)" text-rendering="geometricPrecision" font-family="sans-serif" shape-rendering="geometricPrecision" stroke="rgb(0,32,97)" font-weight="bold" stroke-miterlimit="1.45">
-      <text x="63.5526" xml:space="preserve" y="-19.3375" clip-path="url(#clipPath2)" stroke="none">Ereignis</text>
-      <text x="14.2503" xml:space="preserve" y="-4.027" clip-path="url(#clipPath2)" stroke="none">(Zustelldienst signiert)</text>
-    </g>
-    <g stroke-linecap="butt" transform="matrix(1,0,0,1,15,341)" fill="rgb(0,53,158)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(0,53,158)" stroke-width="2" stroke-miterlimit="1.45">
-      <rect fill="none" x="0" width="181.3586" height="45" y="-39.0953" clip-path="url(#clipPath2)"/>
-    </g>
-    <g fill="url(#linearGradient17)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,15,341)" stroke="url(#linearGradient17)">
-      <rect x="197.3099" width="134.4373" height="45" y="-39.0953" clip-path="url(#clipPath2)" stroke="none"/>
-    </g>
-    <g stroke-linecap="butt" font-size="13px" transform="matrix(1,0,0,1,15,341)" fill="rgb(0,97,0)" text-rendering="geometricPrecision" font-family="sans-serif" shape-rendering="geometricPrecision" stroke="rgb(0,97,0)" font-weight="bold" stroke-miterlimit="1.45">
-      <text x="237.4018" xml:space="preserve" y="-19.3375" clip-path="url(#clipPath2)" stroke="none">Ereignis</text>
-      <text x="212.1413" xml:space="preserve" y="-4.027" clip-path="url(#clipPath2)" stroke="none">(Client signiert)</text>
-    </g>
-    <g stroke-linecap="butt" transform="matrix(1,0,0,1,15,341)" fill="rgb(0,158,0)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(0,158,0)" stroke-width="2" stroke-miterlimit="1.45">
-      <rect fill="none" x="197.3099" width="134.4373" height="45" y="-39.0953" clip-path="url(#clipPath2)"/>
-    </g>
-    <g fill="url(#linearGradient18)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,15,341)" stroke="url(#linearGradient18)">
-      <ellipse rx="60" ry="22.5" clip-path="url(#clipPath2)" cx="407.6985" cy="-16.5953" stroke="none"/>
-    </g>
-    <g stroke-linecap="butt" transform="matrix(1,0,0,1,15,341)" fill="rgb(158,105,0)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(158,105,0)" stroke-width="2" stroke-miterlimit="1.45">
-      <ellipse rx="60" fill="none" ry="22.5" clip-path="url(#clipPath2)" cx="407.6985" cy="-16.5953"/>
-    </g>
-    <g stroke-linecap="butt" transform="matrix(1,0,0,1,15,341)" text-rendering="geometricPrecision" font-family="sans-serif" shape-rendering="geometricPrecision" font-weight="bold" stroke-miterlimit="1.45">
-      <text x="388.5471" xml:space="preserve" y="-12.0602" clip-path="url(#clipPath2)" stroke="none">Status</text>
-    </g>
-    <g font-size="16px" stroke-linecap="butt" transform="matrix(1,0,0,1,15,341)" text-rendering="geometricPrecision" font-family="sans-serif" shape-rendering="geometricPrecision" font-weight="bold" stroke-miterlimit="1.45">
-      <text x="6" xml:space="preserve" y="-51.207" clip-path="url(#clipPath2)" stroke="none">Legende:</text>
-    </g>
-    <g text-rendering="geometricPrecision" stroke-miterlimit="1.45" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,15,341)" stroke-linecap="butt">
-      <path fill="none" d="M225 -160 L277 -160" clip-path="url(#clipPath2)"/>
-      <path d="M285 -160 L273 -165 L276 -160 L273 -155 Z" clip-path="url(#clipPath2)" stroke="none"/>
-      <path fill="none" d="M45 -160 L96.9707 -160" clip-path="url(#clipPath2)"/>
-      <path d="M104.9707 -160 L92.9707 -165 L95.9707 -160 L92.9707 -155 Z" clip-path="url(#clipPath2)" stroke="none"/>
-      <path fill="none" d="M405 -160 L456.9707 -160" clip-path="url(#clipPath2)"/>
-      <path d="M464.9707 -160 L452.9707 -165 L455.9707 -160 L452.9707 -155 Z" clip-path="url(#clipPath2)" stroke="none"/>
-      <path fill="none" d="M585 -160 L637 -160" clip-path="url(#clipPath2)"/>
-      <path d="M645 -160 L633 -165 L636 -160 L633 -155 Z" clip-path="url(#clipPath2)" stroke="none"/>
-      <path fill="none" d="M763.1247 -165.625 L826.5 -165.625 L826.5 -197.5 L848.9702 -197.5" clip-path="url(#clipPath2)"/>
-      <path d="M856.9702 -197.5 L844.9702 -202.5 L847.9702 -197.5 L844.9702 -192.5 Z" clip-path="url(#clipPath2)" stroke="none"/>
-      <path fill="none" d="M977 -197.5 L1029 -197.5" clip-path="url(#clipPath2)"/>
-      <path d="M1037 -197.5 L1025 -202.5 L1028 -197.5 L1025 -192.5 Z" clip-path="url(#clipPath2)" stroke="none"/>
-      <path fill="none" d="M1141.7634 -182.5 L1187.5 -182.5 L1187.5 -144.5 L1209.9702 -144.5" clip-path="url(#clipPath2)"/>
-      <path d="M1217.9702 -144.5 L1205.9702 -149.5 L1208.9702 -144.5 L1205.9702 -139.5 Z" clip-path="url(#clipPath2)" stroke="none"/>
-      <path fill="none" d="M1338 -144.5 L1399.0312 -144.5" clip-path="url(#clipPath2)"/>
-      <path d="M1407.0312 -144.5 L1395.0312 -149.5 L1398.0312 -144.5 L1395.0312 -139.5 Z" clip-path="url(#clipPath2)" stroke="none"/>
-      <path fill="none" d="M763.1247 -154.375 L826.5 -154.375 L826.5 -122.5 L848.9702 -122.5" clip-path="url(#clipPath2)"/>
-      <path d="M856.9702 -122.5 L844.9702 -127.5 L847.9702 -122.5 L844.9702 -117.5 Z" clip-path="url(#clipPath2)" stroke="none"/>
-      <path fill="none" d="M977 -122.5 L1007.5 -122.5 L1007.5 -91.5 L1368.5 -91.5 L1368.5 -122 L1399.0312 -122" clip-path="url(#clipPath2)"/>
-      <path d="M1407.0312 -122 L1395.0312 -127 L1398.0312 -122 L1395.0312 -117 Z" clip-path="url(#clipPath2)" stroke="none"/>
-      <path fill="none" d="M744.7059 -176.875 L795.5 -176.875 L795.5 -303.5 L848.97 -303.5" clip-path="url(#clipPath2)"/>
-      <path d="M856.97 -303.5 L844.97 -308.5 L847.97 -303.5 L844.97 -298.5 Z" clip-path="url(#clipPath2)" stroke="none"/>
-      <path fill="none" d="M744.7059 -143.125 L795.5 -143.125 L795.5 -47.5 L848.97 -47.5" clip-path="url(#clipPath2)"/>
-      <path d="M856.97 -47.5 L844.97 -52.5 L847.97 -47.5 L844.97 -42.5 Z" clip-path="url(#clipPath2)" stroke="none"/>
-      <path fill="none" d="M1141.7634 -212.5 L1187.5 -212.5 L1187.5 -250.5 L1209.9702 -250.5" clip-path="url(#clipPath2)"/>
-      <path d="M1217.9702 -250.5 L1205.9702 -255.5 L1208.9702 -250.5 L1205.9702 -245.5 Z" clip-path="url(#clipPath2)" stroke="none"/>
-      <path fill="none" d="M977 -303.5 L1368.5 -303.5 L1368.5 -273 L1399.0312 -273" clip-path="url(#clipPath2)"/>
-      <path d="M1407.0312 -273 L1395.0312 -278 L1398.0312 -273 L1395.0312 -268 Z" clip-path="url(#clipPath2)" stroke="none"/>
-      <path fill="none" d="M1338 -250.5 L1399.0312 -250.5" clip-path="url(#clipPath2)"/>
-      <path d="M1407.0312 -250.5 L1395.0312 -255.5 L1398.0312 -250.5 L1395.0312 -245.5 Z" clip-path="url(#clipPath2)" stroke="none"/>
-      <path fill="none" d="M1157 -197.5 L1571.9741 -197.5" clip-path="url(#clipPath2)"/>
-      <path d="M1579.9741 -197.5 L1567.9741 -202.5 L1570.9741 -197.5 L1567.9741 -192.5 Z" clip-path="url(#clipPath2)" stroke="none"/>
-      <path fill="none" d="M1519 -133.25 L1549.5 -133.25 L1549.5 -182.5 L1571.9702 -182.5" clip-path="url(#clipPath2)"/>
-      <path d="M1579.9702 -182.5 L1567.9702 -187.5 L1570.9702 -182.5 L1567.9702 -177.5 Z" clip-path="url(#clipPath2)" stroke="none"/>
-      <path fill="none" d="M1519 -261.75 L1549.5 -261.75 L1549.5 -212.5 L1571.9702 -212.5" clip-path="url(#clipPath2)"/>
-      <path d="M1579.9702 -212.5 L1567.9702 -217.5 L1570.9702 -212.5 L1567.9702 -207.5 Z" clip-path="url(#clipPath2)" stroke="none"/>
+      <path fill="none" d="M225 -160 L277 -160" stroke-width="1" clip-path="url(#clipPath2)" stroke="black"/>
+      <path fill="black" d="M285 -160 L273 -165 L276 -160 L273 -155 Z" stroke-width="1" clip-path="url(#clipPath2)" stroke="none"/>
+      <path fill="none" d="M45 -160 L96.9707 -160" stroke-width="1" clip-path="url(#clipPath2)" stroke="black"/>
+      <path fill="black" d="M104.9707 -160 L92.9707 -165 L95.9707 -160 L92.9707 -155 Z" stroke-width="1" clip-path="url(#clipPath2)" stroke="none"/>
+      <path fill="none" d="M405 -160 L456.9707 -160" stroke-width="1" clip-path="url(#clipPath2)" stroke="black"/>
+      <path fill="black" d="M464.9707 -160 L452.9707 -165 L455.9707 -160 L452.9707 -155 Z" stroke-width="1" clip-path="url(#clipPath2)" stroke="none"/>
+      <path fill="none" d="M585 -160 L637 -160" stroke-width="1" clip-path="url(#clipPath2)" stroke="black"/>
+      <path fill="black" d="M645 -160 L633 -165 L636 -160 L633 -155 Z" stroke-width="1" clip-path="url(#clipPath2)" stroke="none"/>
+      <path fill="none" d="M763.1247 -165.625 L826.5 -165.625 L826.5 -197.5 L848.9702 -197.5" stroke-width="1" clip-path="url(#clipPath2)" stroke="black"/>
+      <path fill="black" d="M856.9702 -197.5 L844.9702 -202.5 L847.9702 -197.5 L844.9702 -192.5 Z" stroke-width="1" clip-path="url(#clipPath2)" stroke="none"/>
+      <path fill="none" d="M977 -197.5 L1029 -197.5" stroke-width="1" clip-path="url(#clipPath2)" stroke="black"/>
+      <path fill="black" d="M1037 -197.5 L1025 -202.5 L1028 -197.5 L1025 -192.5 Z" stroke-width="1" clip-path="url(#clipPath2)" stroke="none"/>
+      <path fill="none" d="M1141.7634 -182.5 L1187.5 -182.5 L1187.5 -144.5 L1209.9702 -144.5" stroke-width="1" clip-path="url(#clipPath2)" stroke="black"/>
+      <path fill="black" d="M1217.9702 -144.5 L1205.9702 -149.5 L1208.9702 -144.5 L1205.9702 -139.5 Z" stroke-width="1" clip-path="url(#clipPath2)" stroke="none"/>
+      <path fill="none" d="M1338 -144.5 L1399.0312 -144.5" stroke-width="1" clip-path="url(#clipPath2)" stroke="black"/>
+      <path fill="black" d="M1407.0312 -144.5 L1395.0312 -149.5 L1398.0312 -144.5 L1395.0312 -139.5 Z" stroke-width="1" clip-path="url(#clipPath2)" stroke="none"/>
+      <path fill="none" d="M763.1247 -154.375 L826.5 -154.375 L826.5 -122.5 L848.9702 -122.5" stroke-width="1" clip-path="url(#clipPath2)" stroke="black"/>
+      <path fill="black" d="M856.9702 -122.5 L844.9702 -127.5 L847.9702 -122.5 L844.9702 -117.5 Z" stroke-width="1" clip-path="url(#clipPath2)" stroke="none"/>
+      <path fill="none" d="M977 -122.5 L1007.5 -122.5 L1007.5 -91.5 L1368.5 -91.5 L1368.5 -122 L1399.0312 -122" stroke-width="1" clip-path="url(#clipPath2)" stroke="black"/>
+      <path fill="black" d="M1407.0312 -122 L1395.0312 -127 L1398.0312 -122 L1395.0312 -117 Z" stroke-width="1" clip-path="url(#clipPath2)" stroke="none"/>
+      <path fill="none" d="M744.7059 -176.875 L795.5 -176.875 L795.5 -303.5 L848.97 -303.5" stroke-width="1" clip-path="url(#clipPath2)" stroke="black"/>
+      <path fill="black" d="M856.97 -303.5 L844.97 -308.5 L847.97 -303.5 L844.97 -298.5 Z" stroke-width="1" clip-path="url(#clipPath2)" stroke="none"/>
+      <path fill="none" d="M744.7059 -143.125 L795.5 -143.125 L795.5 -47.5 L848.97 -47.5" stroke-width="1" clip-path="url(#clipPath2)" stroke="black"/>
+      <path fill="black" d="M856.97 -47.5 L844.97 -52.5 L847.97 -47.5 L844.97 -42.5 Z" stroke-width="1" clip-path="url(#clipPath2)" stroke="none"/>
+      <path fill="none" d="M1141.7634 -212.5 L1187.5 -212.5 L1187.5 -250.5 L1209.9702 -250.5" stroke-width="1" clip-path="url(#clipPath2)" stroke="black"/>
+      <path fill="black" d="M1217.9702 -250.5 L1205.9702 -255.5 L1208.9702 -250.5 L1205.9702 -245.5 Z" stroke-width="1" clip-path="url(#clipPath2)" stroke="none"/>
+      <path fill="none" d="M977 -303.5 L1368.5 -303.5 L1368.5 -273 L1399.0312 -273" stroke-width="1" clip-path="url(#clipPath2)" stroke="black"/>
+      <path fill="black" d="M1407.0312 -273 L1395.0312 -278 L1398.0312 -273 L1395.0312 -268 Z" stroke-width="1" clip-path="url(#clipPath2)" stroke="none"/>
+      <path fill="none" d="M1338 -250.5 L1399.0312 -250.5" stroke-width="1" clip-path="url(#clipPath2)" stroke="black"/>
+      <path fill="black" d="M1407.0312 -250.5 L1395.0312 -255.5 L1398.0312 -250.5 L1395.0312 -245.5 Z" stroke-width="1" clip-path="url(#clipPath2)" stroke="none"/>
+      <path fill="none" d="M1157 -197.5 L1571.9741 -197.5" stroke-width="1" clip-path="url(#clipPath2)" stroke="black"/>
+      <path fill="black" d="M1579.9741 -197.5 L1567.9741 -202.5 L1570.9741 -197.5 L1567.9741 -192.5 Z" stroke-width="1" clip-path="url(#clipPath2)" stroke="none"/>
+      <path fill="none" d="M1519 -133.25 L1549.5 -133.25 L1549.5 -182.5 L1571.9702 -182.5" stroke-width="1" clip-path="url(#clipPath2)" stroke="black"/>
+      <path fill="black" d="M1579.9702 -182.5 L1567.9702 -187.5 L1570.9702 -182.5 L1567.9702 -177.5 Z" stroke-width="1" clip-path="url(#clipPath2)" stroke="none"/>
+      <path fill="none" d="M1519 -261.75 L1549.5 -261.75 L1549.5 -212.5 L1571.9702 -212.5" stroke-width="1" clip-path="url(#clipPath2)" stroke="black"/>
+      <path fill="black" d="M1579.9702 -212.5 L1567.9702 -217.5 L1570.9702 -212.5 L1567.9702 -207.5 Z" stroke-width="1" clip-path="url(#clipPath2)" stroke="none"/>
     </g>
   </g>
 </svg>
-- 
GitLab