diff --git a/docs/getting-started/event-log.mdx b/docs/getting-started/event-log.mdx
index 82fda349182baa4e8675e0306f4dda46cfeb15f3..cfd52f8e45e8b6fe7edc24af5ff0f6694197ee3f 100644
--- a/docs/getting-started/event-log.mdx
+++ b/docs/getting-started/event-log.mdx
@@ -119,8 +119,8 @@ verifyClientSignature(securityEventToken, keyId);
 ```java
 boolean validateTokenStructure(SignedJWT securityEventToken) {
   try {
-    validateHeader(signedJWT.getHeader());
-    validatePayload(signedJWT.getJWTClaimsSet());
+    validateHeader(securityEventToken.getHeader());
+    validatePayload(securityEventToken.getJWTClaimsSet());
   } catch (ParseException e) {
     throw new RuntimeException("The payload of the SET could not get parsed properly.");
   }
@@ -207,7 +207,7 @@ boolean verifyZustelldienstSignature(SignedJWT securityEventToken, String keyId)
   }
 
   JWSVerifier jwsVerifier = new RSASSAVerifier(publicKey.toRSAKey());
-  return signedJWT.verify(jwsVerifier);
+  return securityEventToken.verify(jwsVerifier);
 }
 ```
 
@@ -296,7 +296,7 @@ boolean verifyClientSignature(SignedJWT securityEventToken, String keyId) {
   }
 
   JWSVerifier jwsVerifier = new RSASSAVerifier(publicKey.toRSAKey());
-  return signedJWT.verify(jwsVerifier);
+  return securityEventToken.verify(jwsVerifier);
 }
 ```
 
diff --git a/docs/getting-started/receiving/decrypt.mdx b/docs/getting-started/receiving/decrypt.mdx
index 49a5b1691c6855f74da9d7f2dda84463e6a0b209..3d2444574c3b524c9905ea710efff62fc08aabe0 100644
--- a/docs/getting-started/receiving/decrypt.mdx
+++ b/docs/getting-started/receiving/decrypt.mdx
@@ -1,5 +1,5 @@
 ---
-sidebar_position: 6
+sidebar_position: 7
 title: Entschlüsseln
 ---
 
diff --git a/docs/getting-started/receiving/destination.mdx b/docs/getting-started/receiving/destination.mdx
index 9e47d566e3b3590b7cc896991486be7e60488796..33cb81f7f63c32e56d31587531ab2037fae6950d 100644
--- a/docs/getting-started/receiving/destination.mdx
+++ b/docs/getting-started/receiving/destination.mdx
@@ -94,6 +94,12 @@ Neu angelegte Zustellpunkte haben nach der Erstellung den Status `created` und s
 Hiermit soll verhindert werden, dass Einreichungen an den Zustellpunkt übersendet werden, ohne das ein empfangsbereites System vorliegt, dass die Einreichungen für diesen Zustellpunkt an der API abrufen kann.
 
 Daher ist zwingend vor der Aktivierung eines Zustellpunktes [ein API-Client anzulegen](../../account.mdx) und diesem Zustellpunkt zuzuweisen (siehe nächster Abschnitt).
+
+Anschließend kann der Zustellpunkt entweder über das Self-Service-Portal oder über die Submission API [in den Status `active` versetzt werden](../../details/destination-management.mdx#status-des-zustellpunkts-ändern).
+:::
+
+:::caution Hinweis
+Um eine [Auffindbarkeit des Zustellpunktes über die Routing API](../sending/get-destination.mdx) zu ermöglichen, müssen die konfigurierten Zuständigkeitsinformationen zunächst in einem an den Portalverbund angeschlossenen Landes-Redaktionssystem des FIM-Bausteins Leistungen hinterlegt werden. Weitere Informationen hierzu finden sich im Artikel [Konfiguration des Antragsroutings](./routing.mdx).
 :::
 
 ## Zugriff auf Zustellpunkte einrichten
diff --git a/docs/getting-started/receiving/download-submission.mdx b/docs/getting-started/receiving/download-submission.mdx
index 721534fa177f9005e0e1cba8fb5c8b71229324e0..c8ed2452b78b5ffdfe87dfa3f73bfb8829fd27e0 100644
--- a/docs/getting-started/receiving/download-submission.mdx
+++ b/docs/getting-started/receiving/download-submission.mdx
@@ -1,5 +1,5 @@
 ---
-sidebar_position: 5
+sidebar_position: 6
 title: Einreichung herunterladen
 ---
 
diff --git a/docs/getting-started/receiving/process-and-acknowledge.mdx b/docs/getting-started/receiving/process-and-acknowledge.mdx
index 6ee0016960ee85dbbf91cb04de0c8fe0c57ddc13..59c0a32f4671d34107cd5439f7f6841dd2729f9f 100644
--- a/docs/getting-started/receiving/process-and-acknowledge.mdx
+++ b/docs/getting-started/receiving/process-and-acknowledge.mdx
@@ -1,5 +1,5 @@
 ---
-sidebar_position: 8
+sidebar_position: 9
 title: Empfangsbestätigung
 ---
 
diff --git a/docs/getting-started/receiving/query.mdx b/docs/getting-started/receiving/query.mdx
index 92dc23637db0b570873a00c575c8c4ff23cba56d..c80d08004545656cafb719e022f3fb18504758cb 100644
--- a/docs/getting-started/receiving/query.mdx
+++ b/docs/getting-started/receiving/query.mdx
@@ -1,5 +1,5 @@
 ---
-sidebar_position: 4
+sidebar_position: 5
 title: Vorhandensein neuer Einreichungen prüfen
 ---
 
diff --git a/docs/getting-started/receiving/routing.mdx b/docs/getting-started/receiving/routing.mdx
new file mode 100644
index 0000000000000000000000000000000000000000..5f44d084a83bd41a6c0fedd725ea8ac874e469b6
--- /dev/null
+++ b/docs/getting-started/receiving/routing.mdx
@@ -0,0 +1,20 @@
+---
+title: Konfiguration des Antragsroutings
+sidebar_position: 4
+---
+
+import useBaseUrl from '@docusaurus/useBaseUrl';
+import Tabs from '@theme/Tabs'
+import TabItem from '@theme/TabItem'
+
+Um eine [Auffindbarkeit des Zustellpunktes über die Routing API](../sending/get-destination.mdx) zu ermöglichen, müssen die konfigurierten Zuständigkeitsinformationen zunächst in einem an den Portalverbund angeschlossenen Landes-Redaktionssystem des FIM-Bausteins Leistungen hinterlegt werden.
+
+Die zu einem Zustellpunkt gehörigen Zuständigkeits-/Adressierungsinformationen können im Self-Service-Portal über einen Button in der Zustellpunkt-Übersichtsliste in die Zwischenablage kopiert werden.
+Von der Zwischenablage können diese Informationen dann in das zuständige Redaktionssystem kopiert/import werden.
+
+<div class="center">
+  <img width="800" alt="Button in der Zustellpunkt-Ãœbersichtsliste"
+       src={useBaseUrl('/images/ssp/destination-overview-export-address-information.png')}/>
+</div>
+
+Nach der Übernahme der Adressierungsinformationen in das Redaktionssystem werden diese im Format XZuFi an das [Onlinegateway des Portalverbund (PVOG)](https://servicesuche.bund.de/) übermittelt und sind anschließend [über die Routing API abrufbar](../sending/get-destination.mdx).
diff --git a/docs/getting-started/receiving/validate.mdx b/docs/getting-started/receiving/validate.mdx
index 64d29e2200662258c8de784347d8c0e51efa81c9..f4957f5a57c0170644c2f57613f4525f3bdce848 100644
--- a/docs/getting-started/receiving/validate.mdx
+++ b/docs/getting-started/receiving/validate.mdx
@@ -1,5 +1,5 @@
 ---
-sidebar_position: 7
+sidebar_position: 8
 title: Schemavalidierung
 ---
 
diff --git a/docs/getting-started/sending/get-destination.mdx b/docs/getting-started/sending/get-destination.mdx
index 35cb1a894f42386186a3314219bcf97b9975baf7..b175e35df4fa0cd7b2d306c2fa1240be8d0644b2 100644
--- a/docs/getting-started/sending/get-destination.mdx
+++ b/docs/getting-started/sending/get-destination.mdx
@@ -7,7 +7,7 @@ import ApiLink from '@site/src/components/ApiLink'
 import Tabs from '@theme/Tabs'
 import TabItem from '@theme/TabItem'
 
-## Zustellpunkt und `destinationId` ermitteln
+## Zustellpunkt und `destinationId` über die Routing API ermitteln
 
 :::caution Hinweis
 Bis zur Bereitstellung des Routingdienstes können [Zustellpunkt-Informationen über die Submission API abgerufen werden (siehe unten)](#submissionapi).
@@ -71,7 +71,7 @@ Beispiel für die Response:
   "routes": [
     {
       "destinationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
-      "destinationSignature": "eyJ0eXAiOiJKT1NFIiwiYWxnIjoiUFM1MTIiLCJraWQiOiJlOWJjMDk3YS1jZTUxLTQwMzYtOTU2Mi1kMmFkZTg4MmRiMGQiLCJjdHkiOiJhcHBsaWNhdGlvbi9qb3NlIn0.eyJkZXN0aW5hdGlvbklEIjoiOGNlYjJmOTktMTJmMC00OGQxLWE0OTctYzkzMjBiM2M2MTY5IiwiZ2ViaWV0SURzIjpbInVybjpkZTpidW5kOmRlc3RhdGlzOmJldm9lbGtlcnVuZ3NzdGF0aXN0aWs6c2NobHVlc3NlbDpyczowODQyNTUwMTAwNTUiXSwibGVpc3R1bmdJRHMiOlsidXJuOmRlOmZpbTpsZWlrYTpsZWlzdHVuZzo5OTExMDA0NDAwMDAwMCJdLCJzdWJtaXNzaW9uSG9zdCI6Inp1c3RlbGxkaWVuc3QtMDEuZnJlaXN0YWF0LmJheWVybiJ9.g5DXbNfsm4n8Gsohbon-fNxvxF2DSff9hq2nG3iPxFAiOhNAp9rxnayuBgUJwwv5IYPH_Bk-LF87p-DkQFpiUP9ZxfXTsjQOmJAL-LOVtvXcALRwiz5zMZW3FfiuWNu2ECE34uZluHZOYd57LoeJhudlPdD_5tRYOD4ch4W6QbDjLx_CYa7Q3WFOQxHgcWbournwq-eAW9YhDVnT2Ofolz79-oN6tDtHlF94u8z2iwz01fIfko55X6L23ukMX0qlf8yiA31tXdmWwCIi7qobJB13NsvjlszfYc5CiU2mGcDgx5kX8gW1GEoHvG_yDxQyTqArEH4D7kfw12AJWpqgubKZLawQLMUgAH9tvC8bhMVUsek51NRSc7XB3KXJ_ljIgFpRPZFViWhY2dZ5QhdMLxdH1BSSLms2ZkSVLmx43DpH9WvECBc6CfWpA3Ir59I54aR2HAaSWq_EInYMK2Wnlz6ckQuhulEMUdgE2c6nVENYn8kjJBD3gG5GF8ofJFaLKtqDK6bylvD07ndiQ6r36spDtN1r-hteTGxDB7ZczJL-W6dYaFWDqdKQGHqnlYKqp2l2cxX0uQYiL9Zk1wY_4RwjoKzYw-rRrcU-RsKVsxhfqPe2qHKvPDs3OVhPgkEtnE-mG-sY7GXSbOds7N34aeqrW0ifiOEnOEvqgFq4NuE",
+      "destinationSignature": "eyJraWQiOiJmT0hzdExPNGJlQnEwcHgtMDFwTEoyUnhQbUJEakNtbEtIQk84ZzVXLVNBIiwidHlwIjoiand0IiwiYWxnIjoiUFM1MTIifQ.eyJzdWJtaXNzaW9uSG9zdCI6InN1Ym1pc3Npb24tYXBpLWRldi5maXQtY29ubmVjdC5maXRrby5kZXYiLCJpc3MiOiJodHRwczpcL1wvcG9ydGFsLmF1dGgtZGV2LmZpdC1jb25uZWN0LmZpdGtvLmRldiIsInNlcnZpY2VzIjpbeyJnZWJpZXRJRHMiOlsidXJuOmRlOmJ1bmQ6ZGVzdGF0aXM6YmV2b2Vsa2VydW5nc3N0YXRpc3RpazpzY2hsdWVzc2VsOnJzOjEyMDY0NTQxMCJdLCJsZWlzdHVuZ0lEcyI6WyJ1cm46ZGU6ZmltOmxlaWthOmxlaXN0dW5nOjk5MTM0MDA1MDE3MDAwIl19XSwiZGVzdGluYXRpb25JZCI6ImFjNzE1ZjM0LTMzM2UtNDFmNC05YmI1LTE4NmIzMDllYTIzMyIsImlhdCI6MTYzNzg2MzQ4MSwianRpIjoiMmQxNDI2ZjItZDY3My00NmRlLTg2OGUtZDk2ODQ0ZDI0ZmUxIn0.gSfjbRck_BmhkVx-P-E9UexlQudEZV8auYTHXrCSM4ja3gDg2VGlpCjH3-WBvgdLp7zv0J0z9en6PecF73QV4ltik0c7j4tbpAPz9tmTu0pedjVrbkbWj4b4H-EyYt1IJeDyrZJglZ1EB4b_4mk5HNZHgZnbMx0QLhRci8-wJf76hJgoWHkebpXNjdHHqndFbpGa7HCiul1XeJVv8Ny6Fgb7Nu-c5-YmVl5kZSCmxURAZlZubk3jBaIfMOEXIth3B4FtOvEiEXkWTtH0r99eZkYdK-ykLuefenS_Ib56ZpZ67Sw3T-LuV5pIzhq--REL6PaCOvRkU88SS1iW8LmiwEIxCIwFNEpnohNYjy4ZG8CnCfD4SztRA9nQYohdh2Cc_3MafUX7wjz1vqlonmZ7m4QYfZCqtl3IkcJLeayBU5OHTlcvHAQRIfgvP9SJApJr_Y2p3p4fHePOVStxLMlCOCYcmf0EBibvUsuwbEbmeppP72OFOkCwA9I82Z0SnxLdaHLXup2f_z0OnJtxrJAZnhREyYSvL2HOJusNKfpNy360C7Kf2g-BzAEvD4K5LzqWhKrWgztn4SDmgWL_Z3Ez1e2ZqTzfmJXxE_WGit2Lr0rBd9vTPGYKidBLZ8B-2JJZCPbrqlTxPdWImPrgcZP0qpNsJdls4OJo7xz5ozwrR4Y",
       "destinationParameters": {
         "submissionUrl": "https://submission-api.fit-connect.example.org/v1",
         "status": "active",
@@ -122,7 +122,7 @@ Beispiel für die Response:
 ```
 
 :::note Hinweis
-Sofern eine Destination-ID und die Adresse des zuständigen Zustelldienstes bereits bekannt sind, können die in einem Zustellpunkt hinterlegten technischen Parameter auch über den Endpunkt <ApiLink to="/v1/destinations/{destinationId}" /> der Submission API des zuständigen Zustelldienstes angefragt werden.
+Sofern eine Destination-ID und die Adresse des zuständigen Zustelldienstes bereits bekannt sind, können die in einem Zustellpunkt hinterlegten technischen Parameter auch über den Endpunkt <ApiLink to="/v1/destinations/{destinationId}" /> der Submission API des zuständigen Zustelldienstes [abgerufen werden (siehe unten)](#submissionapi).
 :::
 
 Diese Informationen sind:
@@ -133,57 +133,151 @@ Diese Informationen sind:
   - einer Liste an Regionen (`regions`), für die die Verwaltungsleistung angeboten wird.
 - Schlüssel-ID (Key-ID, `kid`) des öffentlichen Verschlüsselungsschlüssels (`encryptionKid`): Empfangende Systeme veröffentlichen die Schlüssel-ID ihres Verschlüsselungsschlüssels für die Verschlüsselung von Einreichungen. Der dazugehörige JSON Web Key (JWK) ist in einer Antwort des Routingdienstes im Attribut `publicKeys` enthalten und kann auch über den Endpunkt <ApiLink to="/v1/destinations/{destinationId}/keys/{keyId}" /> abgefragt werden.
 
-### Abruf der Zustellpunkt-Informationen über die Submission API {#submissionapi}
-Zum Abruf der Zustellpunkt-Informationen stellt die Submission API einen Endpunkt bereit, der über Angabe des Parameters `destinationId` die technischen Parameter der Einreichung für den jeweiligen Zustellpunkt ausgibt.
+### Inhalt der Adressierungsinformationen (Parameter `destinationSignature`)
+Der dekodierte Inhalt (Payload) der Adressierungsinformationen sieht beispielhaft wie folgt aus (Leerzeichen und Zeilenumbrüche dienen ausschließlich der besseren Lesbarkeit):
+```json
+{
+  "submissionHost": "submission-api-testing.fit-connect.fitko.dev",
+  "iss": "https://portal.auth-testing.fit-connect.fitko.dev",
+  "services": [
+    {
+      "gebietIDs": [
+        "urn:de:bund:destatis:bevoelkerungsstatistik:schluessel:rs:12345"
+      ],
+      "leistungIDs": [
+        "urn:de:fim:leika:leistung:100"
+      ]
+    }
+  ],
+  "destinationId": "0c438057-ec3e-4ce0-b154-1683b5d3c2e8",
+  "iat": 1637685592,
+  "jti": "ae37e58b-e280-4706-b99e-738f24c8d98f"
+}
+```
 
-:::note Hinweis
-Die URL der Submission API findet sich im Artikel [Erste Schritte](../overview.md#test-infrastruktur).
-:::
+### Signaturprüfung der vom Self-Service Portal (SSP) signierten Adressierungsinformationen (Parameter `destinationSignature`)
+Bei den signierten Adressierungsinformationen handelt es sich um signierte JSON Web Tokens (JWTs).
+Um die Signatur der vom Self-Service-Portal signierten JWTs zu überprüfen, ist es notwendig, auf die verwendeten Schlüssel (im Format JSON Web Key, kurz JWK) zugreifen zu können.
+Das Self-Service-Portal stellt ein JSON Web Key Set (JWKS) öffentlich zugänglich über den Endpunkt `/.well-known/jwks.json` bereit.
+Für unser Testsystem ist das JWKS z.B. [hier](https://portal.auth-testing.fit-connect.fitko.dev/.well-known/jwks.json) verfügbar.
+
+Ein Beispiel für ein JWKS 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 JWKS kann die Signatur der Adressierungsinformationen überprüft werden.
+Hierfür muss der Schlüssel mit der passenden Schlüssel-ID (Key-ID) aus dem `kid`-Header der Adressierungsinformationen im JWKS ermittelt werden.
+Dann kann man mit diesem und einer entsprechenden Bibliothek eine Signaturprüfung durchführen.
 
 <Tabs
-  defaultValue="curl"
+  defaultValue="java"
   values={[
-    { label: 'curl', value: 'curl', },
+    { label: 'Java (Spring)', value: 'java', },
   ]
-  }>
-<TabItem value="curl">
+}>
+<TabItem value="java">
 
-Über `curl` können diese Information mit dem folgenden Aufruf abgerufen werden.
+Im folgenden Beispiel wird die Bibliothek [nimbus-jose-jwt](https://connect2id.com/products/nimbus-jose-jwt) für die Prüfung genutzt.
 
-```bash
-$ export SERVICE_URL=...
-$ export JWT_TOKEN=eyJhbGciOiJIUzI1NiJ9.eyJJc3N1Z...NL-MKFrDGvn9TvkA
-$ export DESTINATION_ID=7a2668ad-3081-407c-9358-7ce4b6144b02
-$ curl \
-    -H "Authorization: Bearer $JWT_TOKEN" \
-    -H "Content-Type: application/json" \
-    -X GET $SERVICE_URL/v1/destinations/$DESTINATION_ID
+```java
+    SignedJWT signedJWT = SignedJWT.parse(destinationSignature);
+    String keyId = signedJWT.getHeader().getKeyID();
+    String requestedServiceIdentifier = "urn:de:fim:leika:leistung:100";
+    String requestedRegion = "urn:de:bund:destatis:bevoelkerungsstatistik:schluessel:rs:11111";
 
-> {
-  "destinationId": "7881dba9-4055-4854-8b6d-11ea5b7f3047",
-  "services": [
-    {
-      "identifier": "urn:de:fim:leika:leistung:99010003001006",
-      "submissionSchemas": [
-        {
-          "schemaUri": "https://schema.fitko.de/fim/s00000121_1.0.0.schema.json",
-          "mimeType": "application/json"
+    Boolean validToken = validateToken(signedJWT, requestedServiceIdentifier, requestedRegion);
+    Boolean validTokenSignature = verifySSPSignature(signedJWT, keyId);
+
+    Boolean validJWT = validToken && validTokenSignature;
+```
+
+```java
+    static boolean validateToken(SignedJWT signedJWT, String requestedServiceIdentifier, String requestedRegion) {
+        try {
+            validateHeader(signedJWT.getHeader());
+            validatePayload(signedJWT.getJWTClaimsSet(), requestedServiceIdentifier, requestedRegion);
+            return true;
+        } catch (ParseException e) {
+            throw new RuntimeException("The payload of the SET could not get parsed properly.");
         }
-      ],
-      "regions": [
-        "DE094750156156",
-        "DE09330411"
-      ]
     }
-  ],
-  "encryptionKid": "c66e4423-e28d-4a1f-911d-818f9ab60221"
-}
+
+    static 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("jwt"), "The provided typ in the SET header is not jwt");
+        validateTrueOrElseThrow(header.getKeyID() != null, "The kid the SET was signed with is not set.");
+    }
+
+    static private void validatePayload(JWTClaimsSet payload, String requestedServiceIdentifier, String requestedRegion) throws ParseException {
+        validateTrueOrElseThrow(payload.getClaim("iss") != null, "The claim iss is missing in the payload of the JWT.");
+        validateTrueOrElseThrow(payload.getClaim("iat") != null, "The claim iat is missing in the payload of the JWT.");
+        validateTrueOrElseThrow(payload.getClaim("jti") != null, "The claim jti is missing in the payload of the JWT.");
+        validateTrueOrElseThrow(payload.getClaim("destinationId") != null, "The claim destinationId is missing in the payload of the JWT.");
+        validateTrueOrElseThrow(payload.getClaim("submissionHost") != null, "The claim submissionHost is missing in the payload of the JWT.");
+        validateTrueOrElseThrow(payload.getClaim("services") != null, "The claim services is missing in the payload of the JWT.");
+        validateTrueOrElseThrow(!((JSONArray) payload.getClaim("services")).isEmpty(), "At least one service is needed.");
+        validateTrueOrElseThrow(
+                ((JSONArray) payload.getClaim("services")).stream().anyMatch(service -> (
+                        ((JSONArray) ((JSONObject) service).get("gebietIDs")).contains(requestedRegion) &&
+                                ((JSONArray) ((JSONObject) service).get("leistungIDs")).contains(requestedServiceIdentifier)
+                        )
+                ),
+                String.format("Requested region '%s' or requested serviceIdentifier '%s' not found", requestedRegion, requestedServiceIdentifier));
+    }
+
+    static private void validateTrueOrElseThrow(boolean expression, String msg) {
+        if (!expression) {
+            throw new RuntimeException(msg);
+        }
+    }
+```
+
+```java
+    static final String SSP_BASE_URL = "https://portal.auth-dev.fit-connect.fitko.dev";
+
+    static boolean verifySSPSignature(SignedJWT signedJWT, String keyId) throws IOException, ParseException, JOSEException {
+
+        JWKSet jwks = JWKSet.load(new URL(SSP_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);
+    }
 ```
+
 </TabItem>
 </Tabs>
 
-### Verwaltungspolitische Gebiete ermitteln
 
+### Verwaltungspolitische Gebiete ermitteln
 Falls für die Abfrage der `destinationId` kein amtlicher Gemeindeschlüssel oder ein amtlicher Regionalschlüssel bekannt ist, kann über den Endpunkt [/areas](../../apis/routing-api.mdx#get-/areas) nach passenden verwaltungspolitischen Gebieten gesucht werden.
 
 Der Endpunkt [/areas](../../apis/routing-api.mdx#get-/areas) implementiert Pagination.
@@ -263,3 +357,56 @@ Beispiel für die Response
     ]
 }
 ```
+
+## Zustellpunkt-Informationen über die Submission API ermitteln {#submissionapi}
+Zum Abruf der Zustellpunkt-Informationen stellt die Submission API einen Endpunkt bereit, der über Angabe des Parameters `destinationId` die technischen Parameter der Einreichung für den jeweiligen Zustellpunkt ausgibt. Diese kann genutzt werden, wenn die `destinationId` bereits bekannt ist. Die angebotenen Informationen über eine Destination unterscheiden sich fachlich nicht von den Information aus der Routing API. Bei der Submission API muss lediglich der Verschlüsselungsschlüssel über einen zusätzlichen Endpunkt abgerufen werden, anstatt diesen zusammen mit den anderen Informationen in einer Response zu erhalten (siehe Artikel [Verschlüsseln](encrypt.mdx)).
+
+:::note Hinweis
+Die URL der Submission API findet sich im Artikel [Erste Schritte](../overview.md#test-infrastruktur).
+:::
+
+<Tabs
+  defaultValue="curl"
+  values={[
+    { label: 'curl', value: 'curl', },
+  ]
+  }>
+<TabItem value="curl">
+
+Über `curl` können diese Information mit dem folgenden Aufruf abgerufen werden.
+
+```bash
+$ export SERVICE_URL=...
+$ export JWT_TOKEN=eyJhbGciOiJIUzI1NiJ9.eyJJc3N1Z...NL-MKFrDGvn9TvkA
+$ export DESTINATION_ID=13ad2349-975c-4167-bcd8-da606b4e1d84
+$ curl \
+    -H "Authorization: Bearer $JWT_TOKEN" \
+    -H "Content-Type: application/json" \
+    -X GET $SERVICE_URL/v1/destinations/$DESTINATION_ID
+
+{
+  "destinationId": "13ad2349-975c-4167-bcd8-da606b4e1d84",
+  "status": "active",
+  "services": [
+    {
+      "identifier": "urn:de:fim:leika:leistung:99107004018000",
+      "submissionSchemas": [
+        {
+          "schemaUri": "https://schema.fitko.de/fim/s00000122_1.0.0.schema.json",
+          "mimeType": "application/json"
+        }
+      ],
+      "regions": [
+        "DE09415061516",
+        "DE09420411"
+      ]
+    }
+  ],
+  "encryptionKid": "e4142167-7f03-4d4f-a8c9-c7ecc78f55f8",
+  "metadataVersions": [
+    "1.0.0"
+  ]
+}
+```
+</TabItem>
+</Tabs>
diff --git a/static/images/ssp/destination-overview-export-address-information.png b/static/images/ssp/destination-overview-export-address-information.png
new file mode 100644
index 0000000000000000000000000000000000000000..4eb91b7291d98eb84fbf9ac96b004bb6b4b29bc1
Binary files /dev/null and b/static/images/ssp/destination-overview-export-address-information.png differ
diff --git a/versioned_docs/version-FIT-Connect_v1/apis/metadata.mdx b/versioned_docs/version-FIT-Connect_v1/apis/metadata.mdx
index 1ad439588cdc679f77aebe33def43a935a9dba92..9566e44b1cb4ca2391cf02f65219e837249a248a 100644
--- a/versioned_docs/version-FIT-Connect_v1/apis/metadata.mdx
+++ b/versioned_docs/version-FIT-Connect_v1/apis/metadata.mdx
@@ -5,4 +5,4 @@ hide_table_of_contents: true
 
 import JSONSchema from '@site/src/components/JSONSchema'
 
-<JSONSchema version = {"1.*.*"}/>
+<JSONSchema version = {"1.*.*"} />
diff --git a/versioned_docs/version-FIT-Connect_v1/getting-started/encryption.mdx b/versioned_docs/version-FIT-Connect_v1/getting-started/encryption.mdx
index 402066d6b7c21ad5c85a9141b1413f532601c896..83047e421d0e654c5506a0fa47951c14ddeba2b6 100644
--- a/versioned_docs/version-FIT-Connect_v1/getting-started/encryption.mdx
+++ b/versioned_docs/version-FIT-Connect_v1/getting-started/encryption.mdx
@@ -18,7 +18,7 @@ Für besonders schutzbedürftige personenbezogene Daten ist es notwendig, dass d
 
 Dafür stehen Anbietern von Online-Antragsverfahren eine Vielzahl von Bibliotheken zu Verfügung, um die erforderlichen Operationen im Browser der  Anwender:in auszuführen.
 So verlassen sämtliche Inhaltsdaten das Endgerät der Nutzer:in immer verschlüsselt.
-Beispiele wie Anträge im Rahmen von FIT-Connect verschlüsselt werden können, finden Sie unter [Verschlüsselung](https://docs.fitko.de/fit-connect/docs/next/getting-started/sending/encrypt/).
+Beispiele wie Anträge im Rahmen von FIT-Connect verschlüsselt werden können, finden Sie unter [Verschlüsselung](./sending/encrypt.mdx).
 
 ## Grundlagen zur eingesetzten Verschlüsselung
 
diff --git a/versioned_docs/version-FIT-Connect_v1/getting-started/event-log.mdx b/versioned_docs/version-FIT-Connect_v1/getting-started/event-log.mdx
index 82fda349182baa4e8675e0306f4dda46cfeb15f3..cfd52f8e45e8b6fe7edc24af5ff0f6694197ee3f 100644
--- a/versioned_docs/version-FIT-Connect_v1/getting-started/event-log.mdx
+++ b/versioned_docs/version-FIT-Connect_v1/getting-started/event-log.mdx
@@ -119,8 +119,8 @@ verifyClientSignature(securityEventToken, keyId);
 ```java
 boolean validateTokenStructure(SignedJWT securityEventToken) {
   try {
-    validateHeader(signedJWT.getHeader());
-    validatePayload(signedJWT.getJWTClaimsSet());
+    validateHeader(securityEventToken.getHeader());
+    validatePayload(securityEventToken.getJWTClaimsSet());
   } catch (ParseException e) {
     throw new RuntimeException("The payload of the SET could not get parsed properly.");
   }
@@ -207,7 +207,7 @@ boolean verifyZustelldienstSignature(SignedJWT securityEventToken, String keyId)
   }
 
   JWSVerifier jwsVerifier = new RSASSAVerifier(publicKey.toRSAKey());
-  return signedJWT.verify(jwsVerifier);
+  return securityEventToken.verify(jwsVerifier);
 }
 ```
 
@@ -296,7 +296,7 @@ boolean verifyClientSignature(SignedJWT securityEventToken, String keyId) {
   }
 
   JWSVerifier jwsVerifier = new RSASSAVerifier(publicKey.toRSAKey());
-  return signedJWT.verify(jwsVerifier);
+  return securityEventToken.verify(jwsVerifier);
 }
 ```
 
diff --git a/versioned_docs/version-FIT-Connect_v1/getting-started/receiving/decrypt.mdx b/versioned_docs/version-FIT-Connect_v1/getting-started/receiving/decrypt.mdx
index 49a5b1691c6855f74da9d7f2dda84463e6a0b209..3d2444574c3b524c9905ea710efff62fc08aabe0 100644
--- a/versioned_docs/version-FIT-Connect_v1/getting-started/receiving/decrypt.mdx
+++ b/versioned_docs/version-FIT-Connect_v1/getting-started/receiving/decrypt.mdx
@@ -1,5 +1,5 @@
 ---
-sidebar_position: 6
+sidebar_position: 7
 title: Entschlüsseln
 ---
 
diff --git a/versioned_docs/version-FIT-Connect_v1/getting-started/receiving/destination.mdx b/versioned_docs/version-FIT-Connect_v1/getting-started/receiving/destination.mdx
index 9e47d566e3b3590b7cc896991486be7e60488796..33cb81f7f63c32e56d31587531ab2037fae6950d 100644
--- a/versioned_docs/version-FIT-Connect_v1/getting-started/receiving/destination.mdx
+++ b/versioned_docs/version-FIT-Connect_v1/getting-started/receiving/destination.mdx
@@ -94,6 +94,12 @@ Neu angelegte Zustellpunkte haben nach der Erstellung den Status `created` und s
 Hiermit soll verhindert werden, dass Einreichungen an den Zustellpunkt übersendet werden, ohne das ein empfangsbereites System vorliegt, dass die Einreichungen für diesen Zustellpunkt an der API abrufen kann.
 
 Daher ist zwingend vor der Aktivierung eines Zustellpunktes [ein API-Client anzulegen](../../account.mdx) und diesem Zustellpunkt zuzuweisen (siehe nächster Abschnitt).
+
+Anschließend kann der Zustellpunkt entweder über das Self-Service-Portal oder über die Submission API [in den Status `active` versetzt werden](../../details/destination-management.mdx#status-des-zustellpunkts-ändern).
+:::
+
+:::caution Hinweis
+Um eine [Auffindbarkeit des Zustellpunktes über die Routing API](../sending/get-destination.mdx) zu ermöglichen, müssen die konfigurierten Zuständigkeitsinformationen zunächst in einem an den Portalverbund angeschlossenen Landes-Redaktionssystem des FIM-Bausteins Leistungen hinterlegt werden. Weitere Informationen hierzu finden sich im Artikel [Konfiguration des Antragsroutings](./routing.mdx).
 :::
 
 ## Zugriff auf Zustellpunkte einrichten
diff --git a/versioned_docs/version-FIT-Connect_v1/getting-started/receiving/download-submission.mdx b/versioned_docs/version-FIT-Connect_v1/getting-started/receiving/download-submission.mdx
index 721534fa177f9005e0e1cba8fb5c8b71229324e0..c8ed2452b78b5ffdfe87dfa3f73bfb8829fd27e0 100644
--- a/versioned_docs/version-FIT-Connect_v1/getting-started/receiving/download-submission.mdx
+++ b/versioned_docs/version-FIT-Connect_v1/getting-started/receiving/download-submission.mdx
@@ -1,5 +1,5 @@
 ---
-sidebar_position: 5
+sidebar_position: 6
 title: Einreichung herunterladen
 ---
 
diff --git a/versioned_docs/version-FIT-Connect_v1/getting-started/receiving/process-and-acknowledge.mdx b/versioned_docs/version-FIT-Connect_v1/getting-started/receiving/process-and-acknowledge.mdx
index 6ee0016960ee85dbbf91cb04de0c8fe0c57ddc13..59c0a32f4671d34107cd5439f7f6841dd2729f9f 100644
--- a/versioned_docs/version-FIT-Connect_v1/getting-started/receiving/process-and-acknowledge.mdx
+++ b/versioned_docs/version-FIT-Connect_v1/getting-started/receiving/process-and-acknowledge.mdx
@@ -1,5 +1,5 @@
 ---
-sidebar_position: 8
+sidebar_position: 9
 title: Empfangsbestätigung
 ---
 
diff --git a/versioned_docs/version-FIT-Connect_v1/getting-started/receiving/query.mdx b/versioned_docs/version-FIT-Connect_v1/getting-started/receiving/query.mdx
index 92dc23637db0b570873a00c575c8c4ff23cba56d..c80d08004545656cafb719e022f3fb18504758cb 100644
--- a/versioned_docs/version-FIT-Connect_v1/getting-started/receiving/query.mdx
+++ b/versioned_docs/version-FIT-Connect_v1/getting-started/receiving/query.mdx
@@ -1,5 +1,5 @@
 ---
-sidebar_position: 4
+sidebar_position: 5
 title: Vorhandensein neuer Einreichungen prüfen
 ---
 
diff --git a/versioned_docs/version-FIT-Connect_v1/getting-started/receiving/routing.mdx b/versioned_docs/version-FIT-Connect_v1/getting-started/receiving/routing.mdx
new file mode 100644
index 0000000000000000000000000000000000000000..5f44d084a83bd41a6c0fedd725ea8ac874e469b6
--- /dev/null
+++ b/versioned_docs/version-FIT-Connect_v1/getting-started/receiving/routing.mdx
@@ -0,0 +1,20 @@
+---
+title: Konfiguration des Antragsroutings
+sidebar_position: 4
+---
+
+import useBaseUrl from '@docusaurus/useBaseUrl';
+import Tabs from '@theme/Tabs'
+import TabItem from '@theme/TabItem'
+
+Um eine [Auffindbarkeit des Zustellpunktes über die Routing API](../sending/get-destination.mdx) zu ermöglichen, müssen die konfigurierten Zuständigkeitsinformationen zunächst in einem an den Portalverbund angeschlossenen Landes-Redaktionssystem des FIM-Bausteins Leistungen hinterlegt werden.
+
+Die zu einem Zustellpunkt gehörigen Zuständigkeits-/Adressierungsinformationen können im Self-Service-Portal über einen Button in der Zustellpunkt-Übersichtsliste in die Zwischenablage kopiert werden.
+Von der Zwischenablage können diese Informationen dann in das zuständige Redaktionssystem kopiert/import werden.
+
+<div class="center">
+  <img width="800" alt="Button in der Zustellpunkt-Ãœbersichtsliste"
+       src={useBaseUrl('/images/ssp/destination-overview-export-address-information.png')}/>
+</div>
+
+Nach der Übernahme der Adressierungsinformationen in das Redaktionssystem werden diese im Format XZuFi an das [Onlinegateway des Portalverbund (PVOG)](https://servicesuche.bund.de/) übermittelt und sind anschließend [über die Routing API abrufbar](../sending/get-destination.mdx).
diff --git a/versioned_docs/version-FIT-Connect_v1/getting-started/receiving/validate.mdx b/versioned_docs/version-FIT-Connect_v1/getting-started/receiving/validate.mdx
index 64d29e2200662258c8de784347d8c0e51efa81c9..f4957f5a57c0170644c2f57613f4525f3bdce848 100644
--- a/versioned_docs/version-FIT-Connect_v1/getting-started/receiving/validate.mdx
+++ b/versioned_docs/version-FIT-Connect_v1/getting-started/receiving/validate.mdx
@@ -1,5 +1,5 @@
 ---
-sidebar_position: 7
+sidebar_position: 8
 title: Schemavalidierung
 ---
 
diff --git a/versioned_docs/version-FIT-Connect_v1/getting-started/sending/get-destination.mdx b/versioned_docs/version-FIT-Connect_v1/getting-started/sending/get-destination.mdx
index 35cb1a894f42386186a3314219bcf97b9975baf7..b175e35df4fa0cd7b2d306c2fa1240be8d0644b2 100644
--- a/versioned_docs/version-FIT-Connect_v1/getting-started/sending/get-destination.mdx
+++ b/versioned_docs/version-FIT-Connect_v1/getting-started/sending/get-destination.mdx
@@ -7,7 +7,7 @@ import ApiLink from '@site/src/components/ApiLink'
 import Tabs from '@theme/Tabs'
 import TabItem from '@theme/TabItem'
 
-## Zustellpunkt und `destinationId` ermitteln
+## Zustellpunkt und `destinationId` über die Routing API ermitteln
 
 :::caution Hinweis
 Bis zur Bereitstellung des Routingdienstes können [Zustellpunkt-Informationen über die Submission API abgerufen werden (siehe unten)](#submissionapi).
@@ -71,7 +71,7 @@ Beispiel für die Response:
   "routes": [
     {
       "destinationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
-      "destinationSignature": "eyJ0eXAiOiJKT1NFIiwiYWxnIjoiUFM1MTIiLCJraWQiOiJlOWJjMDk3YS1jZTUxLTQwMzYtOTU2Mi1kMmFkZTg4MmRiMGQiLCJjdHkiOiJhcHBsaWNhdGlvbi9qb3NlIn0.eyJkZXN0aW5hdGlvbklEIjoiOGNlYjJmOTktMTJmMC00OGQxLWE0OTctYzkzMjBiM2M2MTY5IiwiZ2ViaWV0SURzIjpbInVybjpkZTpidW5kOmRlc3RhdGlzOmJldm9lbGtlcnVuZ3NzdGF0aXN0aWs6c2NobHVlc3NlbDpyczowODQyNTUwMTAwNTUiXSwibGVpc3R1bmdJRHMiOlsidXJuOmRlOmZpbTpsZWlrYTpsZWlzdHVuZzo5OTExMDA0NDAwMDAwMCJdLCJzdWJtaXNzaW9uSG9zdCI6Inp1c3RlbGxkaWVuc3QtMDEuZnJlaXN0YWF0LmJheWVybiJ9.g5DXbNfsm4n8Gsohbon-fNxvxF2DSff9hq2nG3iPxFAiOhNAp9rxnayuBgUJwwv5IYPH_Bk-LF87p-DkQFpiUP9ZxfXTsjQOmJAL-LOVtvXcALRwiz5zMZW3FfiuWNu2ECE34uZluHZOYd57LoeJhudlPdD_5tRYOD4ch4W6QbDjLx_CYa7Q3WFOQxHgcWbournwq-eAW9YhDVnT2Ofolz79-oN6tDtHlF94u8z2iwz01fIfko55X6L23ukMX0qlf8yiA31tXdmWwCIi7qobJB13NsvjlszfYc5CiU2mGcDgx5kX8gW1GEoHvG_yDxQyTqArEH4D7kfw12AJWpqgubKZLawQLMUgAH9tvC8bhMVUsek51NRSc7XB3KXJ_ljIgFpRPZFViWhY2dZ5QhdMLxdH1BSSLms2ZkSVLmx43DpH9WvECBc6CfWpA3Ir59I54aR2HAaSWq_EInYMK2Wnlz6ckQuhulEMUdgE2c6nVENYn8kjJBD3gG5GF8ofJFaLKtqDK6bylvD07ndiQ6r36spDtN1r-hteTGxDB7ZczJL-W6dYaFWDqdKQGHqnlYKqp2l2cxX0uQYiL9Zk1wY_4RwjoKzYw-rRrcU-RsKVsxhfqPe2qHKvPDs3OVhPgkEtnE-mG-sY7GXSbOds7N34aeqrW0ifiOEnOEvqgFq4NuE",
+      "destinationSignature": "eyJraWQiOiJmT0hzdExPNGJlQnEwcHgtMDFwTEoyUnhQbUJEakNtbEtIQk84ZzVXLVNBIiwidHlwIjoiand0IiwiYWxnIjoiUFM1MTIifQ.eyJzdWJtaXNzaW9uSG9zdCI6InN1Ym1pc3Npb24tYXBpLWRldi5maXQtY29ubmVjdC5maXRrby5kZXYiLCJpc3MiOiJodHRwczpcL1wvcG9ydGFsLmF1dGgtZGV2LmZpdC1jb25uZWN0LmZpdGtvLmRldiIsInNlcnZpY2VzIjpbeyJnZWJpZXRJRHMiOlsidXJuOmRlOmJ1bmQ6ZGVzdGF0aXM6YmV2b2Vsa2VydW5nc3N0YXRpc3RpazpzY2hsdWVzc2VsOnJzOjEyMDY0NTQxMCJdLCJsZWlzdHVuZ0lEcyI6WyJ1cm46ZGU6ZmltOmxlaWthOmxlaXN0dW5nOjk5MTM0MDA1MDE3MDAwIl19XSwiZGVzdGluYXRpb25JZCI6ImFjNzE1ZjM0LTMzM2UtNDFmNC05YmI1LTE4NmIzMDllYTIzMyIsImlhdCI6MTYzNzg2MzQ4MSwianRpIjoiMmQxNDI2ZjItZDY3My00NmRlLTg2OGUtZDk2ODQ0ZDI0ZmUxIn0.gSfjbRck_BmhkVx-P-E9UexlQudEZV8auYTHXrCSM4ja3gDg2VGlpCjH3-WBvgdLp7zv0J0z9en6PecF73QV4ltik0c7j4tbpAPz9tmTu0pedjVrbkbWj4b4H-EyYt1IJeDyrZJglZ1EB4b_4mk5HNZHgZnbMx0QLhRci8-wJf76hJgoWHkebpXNjdHHqndFbpGa7HCiul1XeJVv8Ny6Fgb7Nu-c5-YmVl5kZSCmxURAZlZubk3jBaIfMOEXIth3B4FtOvEiEXkWTtH0r99eZkYdK-ykLuefenS_Ib56ZpZ67Sw3T-LuV5pIzhq--REL6PaCOvRkU88SS1iW8LmiwEIxCIwFNEpnohNYjy4ZG8CnCfD4SztRA9nQYohdh2Cc_3MafUX7wjz1vqlonmZ7m4QYfZCqtl3IkcJLeayBU5OHTlcvHAQRIfgvP9SJApJr_Y2p3p4fHePOVStxLMlCOCYcmf0EBibvUsuwbEbmeppP72OFOkCwA9I82Z0SnxLdaHLXup2f_z0OnJtxrJAZnhREyYSvL2HOJusNKfpNy360C7Kf2g-BzAEvD4K5LzqWhKrWgztn4SDmgWL_Z3Ez1e2ZqTzfmJXxE_WGit2Lr0rBd9vTPGYKidBLZ8B-2JJZCPbrqlTxPdWImPrgcZP0qpNsJdls4OJo7xz5ozwrR4Y",
       "destinationParameters": {
         "submissionUrl": "https://submission-api.fit-connect.example.org/v1",
         "status": "active",
@@ -122,7 +122,7 @@ Beispiel für die Response:
 ```
 
 :::note Hinweis
-Sofern eine Destination-ID und die Adresse des zuständigen Zustelldienstes bereits bekannt sind, können die in einem Zustellpunkt hinterlegten technischen Parameter auch über den Endpunkt <ApiLink to="/v1/destinations/{destinationId}" /> der Submission API des zuständigen Zustelldienstes angefragt werden.
+Sofern eine Destination-ID und die Adresse des zuständigen Zustelldienstes bereits bekannt sind, können die in einem Zustellpunkt hinterlegten technischen Parameter auch über den Endpunkt <ApiLink to="/v1/destinations/{destinationId}" /> der Submission API des zuständigen Zustelldienstes [abgerufen werden (siehe unten)](#submissionapi).
 :::
 
 Diese Informationen sind:
@@ -133,57 +133,151 @@ Diese Informationen sind:
   - einer Liste an Regionen (`regions`), für die die Verwaltungsleistung angeboten wird.
 - Schlüssel-ID (Key-ID, `kid`) des öffentlichen Verschlüsselungsschlüssels (`encryptionKid`): Empfangende Systeme veröffentlichen die Schlüssel-ID ihres Verschlüsselungsschlüssels für die Verschlüsselung von Einreichungen. Der dazugehörige JSON Web Key (JWK) ist in einer Antwort des Routingdienstes im Attribut `publicKeys` enthalten und kann auch über den Endpunkt <ApiLink to="/v1/destinations/{destinationId}/keys/{keyId}" /> abgefragt werden.
 
-### Abruf der Zustellpunkt-Informationen über die Submission API {#submissionapi}
-Zum Abruf der Zustellpunkt-Informationen stellt die Submission API einen Endpunkt bereit, der über Angabe des Parameters `destinationId` die technischen Parameter der Einreichung für den jeweiligen Zustellpunkt ausgibt.
+### Inhalt der Adressierungsinformationen (Parameter `destinationSignature`)
+Der dekodierte Inhalt (Payload) der Adressierungsinformationen sieht beispielhaft wie folgt aus (Leerzeichen und Zeilenumbrüche dienen ausschließlich der besseren Lesbarkeit):
+```json
+{
+  "submissionHost": "submission-api-testing.fit-connect.fitko.dev",
+  "iss": "https://portal.auth-testing.fit-connect.fitko.dev",
+  "services": [
+    {
+      "gebietIDs": [
+        "urn:de:bund:destatis:bevoelkerungsstatistik:schluessel:rs:12345"
+      ],
+      "leistungIDs": [
+        "urn:de:fim:leika:leistung:100"
+      ]
+    }
+  ],
+  "destinationId": "0c438057-ec3e-4ce0-b154-1683b5d3c2e8",
+  "iat": 1637685592,
+  "jti": "ae37e58b-e280-4706-b99e-738f24c8d98f"
+}
+```
 
-:::note Hinweis
-Die URL der Submission API findet sich im Artikel [Erste Schritte](../overview.md#test-infrastruktur).
-:::
+### Signaturprüfung der vom Self-Service Portal (SSP) signierten Adressierungsinformationen (Parameter `destinationSignature`)
+Bei den signierten Adressierungsinformationen handelt es sich um signierte JSON Web Tokens (JWTs).
+Um die Signatur der vom Self-Service-Portal signierten JWTs zu überprüfen, ist es notwendig, auf die verwendeten Schlüssel (im Format JSON Web Key, kurz JWK) zugreifen zu können.
+Das Self-Service-Portal stellt ein JSON Web Key Set (JWKS) öffentlich zugänglich über den Endpunkt `/.well-known/jwks.json` bereit.
+Für unser Testsystem ist das JWKS z.B. [hier](https://portal.auth-testing.fit-connect.fitko.dev/.well-known/jwks.json) verfügbar.
+
+Ein Beispiel für ein JWKS 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 JWKS kann die Signatur der Adressierungsinformationen überprüft werden.
+Hierfür muss der Schlüssel mit der passenden Schlüssel-ID (Key-ID) aus dem `kid`-Header der Adressierungsinformationen im JWKS ermittelt werden.
+Dann kann man mit diesem und einer entsprechenden Bibliothek eine Signaturprüfung durchführen.
 
 <Tabs
-  defaultValue="curl"
+  defaultValue="java"
   values={[
-    { label: 'curl', value: 'curl', },
+    { label: 'Java (Spring)', value: 'java', },
   ]
-  }>
-<TabItem value="curl">
+}>
+<TabItem value="java">
 
-Über `curl` können diese Information mit dem folgenden Aufruf abgerufen werden.
+Im folgenden Beispiel wird die Bibliothek [nimbus-jose-jwt](https://connect2id.com/products/nimbus-jose-jwt) für die Prüfung genutzt.
 
-```bash
-$ export SERVICE_URL=...
-$ export JWT_TOKEN=eyJhbGciOiJIUzI1NiJ9.eyJJc3N1Z...NL-MKFrDGvn9TvkA
-$ export DESTINATION_ID=7a2668ad-3081-407c-9358-7ce4b6144b02
-$ curl \
-    -H "Authorization: Bearer $JWT_TOKEN" \
-    -H "Content-Type: application/json" \
-    -X GET $SERVICE_URL/v1/destinations/$DESTINATION_ID
+```java
+    SignedJWT signedJWT = SignedJWT.parse(destinationSignature);
+    String keyId = signedJWT.getHeader().getKeyID();
+    String requestedServiceIdentifier = "urn:de:fim:leika:leistung:100";
+    String requestedRegion = "urn:de:bund:destatis:bevoelkerungsstatistik:schluessel:rs:11111";
 
-> {
-  "destinationId": "7881dba9-4055-4854-8b6d-11ea5b7f3047",
-  "services": [
-    {
-      "identifier": "urn:de:fim:leika:leistung:99010003001006",
-      "submissionSchemas": [
-        {
-          "schemaUri": "https://schema.fitko.de/fim/s00000121_1.0.0.schema.json",
-          "mimeType": "application/json"
+    Boolean validToken = validateToken(signedJWT, requestedServiceIdentifier, requestedRegion);
+    Boolean validTokenSignature = verifySSPSignature(signedJWT, keyId);
+
+    Boolean validJWT = validToken && validTokenSignature;
+```
+
+```java
+    static boolean validateToken(SignedJWT signedJWT, String requestedServiceIdentifier, String requestedRegion) {
+        try {
+            validateHeader(signedJWT.getHeader());
+            validatePayload(signedJWT.getJWTClaimsSet(), requestedServiceIdentifier, requestedRegion);
+            return true;
+        } catch (ParseException e) {
+            throw new RuntimeException("The payload of the SET could not get parsed properly.");
         }
-      ],
-      "regions": [
-        "DE094750156156",
-        "DE09330411"
-      ]
     }
-  ],
-  "encryptionKid": "c66e4423-e28d-4a1f-911d-818f9ab60221"
-}
+
+    static 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("jwt"), "The provided typ in the SET header is not jwt");
+        validateTrueOrElseThrow(header.getKeyID() != null, "The kid the SET was signed with is not set.");
+    }
+
+    static private void validatePayload(JWTClaimsSet payload, String requestedServiceIdentifier, String requestedRegion) throws ParseException {
+        validateTrueOrElseThrow(payload.getClaim("iss") != null, "The claim iss is missing in the payload of the JWT.");
+        validateTrueOrElseThrow(payload.getClaim("iat") != null, "The claim iat is missing in the payload of the JWT.");
+        validateTrueOrElseThrow(payload.getClaim("jti") != null, "The claim jti is missing in the payload of the JWT.");
+        validateTrueOrElseThrow(payload.getClaim("destinationId") != null, "The claim destinationId is missing in the payload of the JWT.");
+        validateTrueOrElseThrow(payload.getClaim("submissionHost") != null, "The claim submissionHost is missing in the payload of the JWT.");
+        validateTrueOrElseThrow(payload.getClaim("services") != null, "The claim services is missing in the payload of the JWT.");
+        validateTrueOrElseThrow(!((JSONArray) payload.getClaim("services")).isEmpty(), "At least one service is needed.");
+        validateTrueOrElseThrow(
+                ((JSONArray) payload.getClaim("services")).stream().anyMatch(service -> (
+                        ((JSONArray) ((JSONObject) service).get("gebietIDs")).contains(requestedRegion) &&
+                                ((JSONArray) ((JSONObject) service).get("leistungIDs")).contains(requestedServiceIdentifier)
+                        )
+                ),
+                String.format("Requested region '%s' or requested serviceIdentifier '%s' not found", requestedRegion, requestedServiceIdentifier));
+    }
+
+    static private void validateTrueOrElseThrow(boolean expression, String msg) {
+        if (!expression) {
+            throw new RuntimeException(msg);
+        }
+    }
+```
+
+```java
+    static final String SSP_BASE_URL = "https://portal.auth-dev.fit-connect.fitko.dev";
+
+    static boolean verifySSPSignature(SignedJWT signedJWT, String keyId) throws IOException, ParseException, JOSEException {
+
+        JWKSet jwks = JWKSet.load(new URL(SSP_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);
+    }
 ```
+
 </TabItem>
 </Tabs>
 
-### Verwaltungspolitische Gebiete ermitteln
 
+### Verwaltungspolitische Gebiete ermitteln
 Falls für die Abfrage der `destinationId` kein amtlicher Gemeindeschlüssel oder ein amtlicher Regionalschlüssel bekannt ist, kann über den Endpunkt [/areas](../../apis/routing-api.mdx#get-/areas) nach passenden verwaltungspolitischen Gebieten gesucht werden.
 
 Der Endpunkt [/areas](../../apis/routing-api.mdx#get-/areas) implementiert Pagination.
@@ -263,3 +357,56 @@ Beispiel für die Response
     ]
 }
 ```
+
+## Zustellpunkt-Informationen über die Submission API ermitteln {#submissionapi}
+Zum Abruf der Zustellpunkt-Informationen stellt die Submission API einen Endpunkt bereit, der über Angabe des Parameters `destinationId` die technischen Parameter der Einreichung für den jeweiligen Zustellpunkt ausgibt. Diese kann genutzt werden, wenn die `destinationId` bereits bekannt ist. Die angebotenen Informationen über eine Destination unterscheiden sich fachlich nicht von den Information aus der Routing API. Bei der Submission API muss lediglich der Verschlüsselungsschlüssel über einen zusätzlichen Endpunkt abgerufen werden, anstatt diesen zusammen mit den anderen Informationen in einer Response zu erhalten (siehe Artikel [Verschlüsseln](encrypt.mdx)).
+
+:::note Hinweis
+Die URL der Submission API findet sich im Artikel [Erste Schritte](../overview.md#test-infrastruktur).
+:::
+
+<Tabs
+  defaultValue="curl"
+  values={[
+    { label: 'curl', value: 'curl', },
+  ]
+  }>
+<TabItem value="curl">
+
+Über `curl` können diese Information mit dem folgenden Aufruf abgerufen werden.
+
+```bash
+$ export SERVICE_URL=...
+$ export JWT_TOKEN=eyJhbGciOiJIUzI1NiJ9.eyJJc3N1Z...NL-MKFrDGvn9TvkA
+$ export DESTINATION_ID=13ad2349-975c-4167-bcd8-da606b4e1d84
+$ curl \
+    -H "Authorization: Bearer $JWT_TOKEN" \
+    -H "Content-Type: application/json" \
+    -X GET $SERVICE_URL/v1/destinations/$DESTINATION_ID
+
+{
+  "destinationId": "13ad2349-975c-4167-bcd8-da606b4e1d84",
+  "status": "active",
+  "services": [
+    {
+      "identifier": "urn:de:fim:leika:leistung:99107004018000",
+      "submissionSchemas": [
+        {
+          "schemaUri": "https://schema.fitko.de/fim/s00000122_1.0.0.schema.json",
+          "mimeType": "application/json"
+        }
+      ],
+      "regions": [
+        "DE09415061516",
+        "DE09420411"
+      ]
+    }
+  ],
+  "encryptionKid": "e4142167-7f03-4d4f-a8c9-c7ecc78f55f8",
+  "metadataVersions": [
+    "1.0.0"
+  ]
+}
+```
+</TabItem>
+</Tabs>