diff --git a/.asciidoctorconfig.adoc b/.asciidoctorconfig.adoc
deleted file mode 100644
index 53b403dbc31cdb4f939b947eed416e49e9823b1f..0000000000000000000000000000000000000000
--- a/.asciidoctorconfig.adoc
+++ /dev/null
@@ -1,12 +0,0 @@
-// +++++++++++++++++++++++++++++++++++++++++++++++++++++++
-// +  Initial AsciiDoc editor configuration file - V1.0  +
-// ++++++++++++++++++++++++++++++++++++++++++++++++++++++
-// 
-// Did not found any configuration files, so create this at project root level.
-// If you do not like those files to be generated - you can turn it off inside Asciidoctor Editor preferences.
-// 
-// You can define editor specific parts here.
-// For example: with next line you could set imagesdir attribute to subfolder "images" relative to the folder where this config file is located.
-// :imagesdir: {asciidoctorconfigdir}/images
-// 
-// For more information please take a look at https://github.com/de-jcup/eclipse-asciidoctor-editor/wiki/Asciidoctor-configfiles
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 89f529039d8b29db74176a73fdd2e8e1a2a52c44..eb9a5c7a5cef1559000db690461d6dc715f1271d 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -22,10 +22,10 @@ stages:
   - test
   - publish
 
-build:
+package:
   stage: build
   script:
-    - mvn clean compile $MAVEN_CLI_OPTS
+    - mvn clean package -DskipTests=true $MAVEN_CLI_OPTS
   artifacts:
     paths:
       - target/*.jar
@@ -35,6 +35,21 @@ test:
   script:
     - mvn test $MAVEN_CLI_OPTS
 
+.helm:
+  before_script:
+    - apk add --no-cache helm git curl
+  script:
+    - helm package --version=${HELM_CHART_VERSION} src/main/helm
+    - curl -u ${NEXUS_USER}:${NEXUS_PASSWORD} https://nexus.ozg-sh.de/service/rest/v1/components?repository=${NEXUS_HELM_REPO_NAME} -F file=@${PROJECT_ARTIFACTID}-${HELM_CHART_VERSION}.tgz
+
+test-helm:
+  stage: test
+  before_script:
+    - !reference [ .helm, before_script ]
+    - helm plugin install https://github.com/helm-unittest/helm-unittest.git
+  script:
+    - sh run_helm_test.sh
+
 verify:
   stage: test
   script:
@@ -51,7 +66,7 @@ push-merge-request-image-gitlab:
   stage: publish
   extends: .get-version
   script:
-    - export IMAGE_TAGS="${CI_REGISTRY_IMAGE}:MR-${CI_MERGE_REQUEST_IID}-${PROJECT_VERSION}"
+    - export IMAGE_TAGS="${CI_REGISTRY_IMAGE}:${PROJECT_VERSION}-MR-${CI_MERGE_REQUEST_IID},${CI_REGISTRY_IMAGE}:${PROJECT_VERSION}-MR-${CI_MERGE_REQUEST_IID}-${CI_COMMIT_SHORT_SHA}"
     - mvn deploy -Pgitlab-deploy $MAVEN_DEPLOY_CLI_OPTS $MAVEN_CLI_OPTS
   rules:
     - if: $CI_PIPELINE_SOURCE == 'merge_request_event'
@@ -61,51 +76,113 @@ push-merge-request-image-nexus:
   stage: publish
   extends: .get-version
   script:
-    - export IMAGE_TAGS="${NEXUS_IMAGE_PREFIX}:MR-${CI_MERGE_REQUEST_IID}-${PROJECT_VERSION}"
+    - export IMAGE_TAGS="${NEXUS_IMAGE_PREFIX}:${PROJECT_VERSION}-MR-${CI_MERGE_REQUEST_IID},${NEXUS_IMAGE_PREFIX}:${PROJECT_VERSION}-MR-${CI_MERGE_REQUEST_IID}-${CI_COMMIT_SHORT_SHA}"
     - mvn deploy -Pnexus-deploy $MAVEN_DEPLOY_CLI_OPTS $MAVEN_CLI_OPTS
   rules:
     - if: $CI_PIPELINE_SOURCE == 'merge_request_event'
   when: manual
 
+push-merge-request-helm-nexus:
+  stage: publish
+  variables:
+    NEXUS_HELM_REPO_NAME: ozg-base-apps-snapshot
+  before_script:
+    - !reference [.get-version, before_script]
+    - !reference [.helm, before_script]
+  script:
+    - export HELM_CHART_VERSION=${PROJECT_VERSION}-MR-${CI_MERGE_REQUEST_IID}
+    - !reference [.helm, script]
+    - export HELM_CHART_VERSION=${PROJECT_VERSION}-MR-${CI_MERGE_REQUEST_IID}-${CI_COMMIT_SHORT_SHA}
+    - !reference [.helm, script]
+  rules:
+    - if: $CI_PIPELINE_SOURCE == 'merge_request_event'
+  when: manual
+  artifacts:
+    paths:
+      - "*.tgz"
+
+push-keystore-assembler-image-nexus:
+  stage: publish
+  image: docker:latest
+  script:
+    - docker build -f keystore-truststore-from-tls-secret.dockerfile -t keystore-truststore-from-tls-secret:latest .
+    - echo "$NEXUS_PASSWORD" | docker login -u "$NEXUS_USER" --password-stdin docker.ozg-sh.de
+    - docker tag keystore-truststore-from-tls-secret:latest docker.ozg-sh.de/keystore-truststore-from-tls-secret:latest
+    - docker push docker.ozg-sh.de/keystore-truststore-from-tls-secret:latest
+  when: manual
+  rules:
+    - if: $CI_PIPELINE_SOURCE == 'merge_request_event'
+
 # Snapshot jobs
 push-snapshot-image-gitlab:
   stage: publish
   extends: .get-version
   script:
-    - export IMAGE_TAGS="${CI_REGISTRY_IMAGE}:main-${PROJECT_VERSION},${CI_REGISTRY_IMAGE}:snapshot-latest"
+    - export IMAGE_TAGS="${CI_REGISTRY_IMAGE}:${PROJECT_VERSION}-main,${CI_REGISTRY_IMAGE}:${PROJECT_VERSION}-main-${CI_COMMIT_SHORT_SHA},${CI_REGISTRY_IMAGE}:snapshot-latest"
     - mvn deploy -Pgitlab-deploy $MAVEN_DEPLOY_CLI_OPTS $MAVEN_CLI_OPTS
-  # only:
-  #   - main
-  rules:
-    - when: never  # Step disabled until gitlab container registry works
+  only:
+    - main
 
 push-snapshot-image-nexus:
   stage: publish
   extends: .get-version
   script:
-    - export IMAGE_TAGS="${NEXUS_IMAGE_PREFIX}:main-${PROJECT_VERSION},${NEXUS_IMAGE_PREFIX}:snapshot-latest"
+    - export IMAGE_TAGS="${NEXUS_IMAGE_PREFIX}:${PROJECT_VERSION}-main,${NEXUS_IMAGE_PREFIX}:${PROJECT_VERSION}-main-${CI_COMMIT_SHORT_SHA},${NEXUS_IMAGE_PREFIX}:snapshot-latest"
     - mvn deploy -Pnexus-deploy $MAVEN_DEPLOY_CLI_OPTS $MAVEN_CLI_OPTS
   only:
     - main
 
+push-snapshot-helm-nexus:
+  stage: publish
+  variables:
+    NEXUS_HELM_REPO_NAME: ozg-base-apps-snapshot
+  before_script:
+    - !reference [.get-version, before_script]
+    - !reference [.helm, before_script]
+  script:
+    - export HELM_CHART_VERSION=${PROJECT_VERSION}-main
+    - !reference [ .helm, script ]
+    - export HELM_CHART_VERSION=${PROJECT_VERSION}-main-${CI_COMMIT_SHORT_SHA}
+    - !reference [.helm, script]
+  only:
+    - main
+  artifacts:
+    paths:
+      - "*.tgz"
+
 # Release jobs
 push-release-image-gitlab:
   stage: publish
   extends: .get-version
   script:
     - mvn versions:set -DnewVersion=${CI_COMMIT_TAG} $MAVEN_CLI_OPTS
-    - export IMAGE_TAGS="${CI_REGISTRY_IMAGE}:release-${CI_COMMIT_TAG},${CI_REGISTRY_IMAGE}:latest"
+    - export IMAGE_TAGS="${CI_REGISTRY_IMAGE}:${CI_COMMIT_TAG},${CI_REGISTRY_IMAGE}:${CI_COMMIT_TAG}-release,${CI_REGISTRY_IMAGE}:latest"
     - mvn deploy -Pgitlab-deploy $MAVEN_DEPLOY_CLI_OPTS $MAVEN_CLI_OPTS
   rules:
     - if: $CI_COMMIT_TAG
-      when: never  # Step disabled until gitlab container registry works
 
 push-release-image-nexus:
   stage: publish
   extends: .get-version
   script:
     - mvn versions:set -DnewVersion=${CI_COMMIT_TAG} $MAVEN_CLI_OPTS
-    - export IMAGE_TAGS="${NEXUS_IMAGE_PREFIX}:release-${CI_COMMIT_TAG},${NEXUS_IMAGE_PREFIX}:latest"
+    - export IMAGE_TAGS="${NEXUS_IMAGE_PREFIX}:${CI_COMMIT_TAG},${NEXUS_IMAGE_PREFIX}:${CI_COMMIT_TAG}-release,${NEXUS_IMAGE_PREFIX}:latest"
     - mvn deploy -Pnexus-deploy $MAVEN_DEPLOY_CLI_OPTS $MAVEN_CLI_OPTS
   rules:
     - if: $CI_COMMIT_TAG
+
+push-release-helm-nexus:
+  stage: publish
+  variables:
+    NEXUS_HELM_REPO_NAME: ozg-base-apps
+  before_script:
+    - !reference [.get-version, before_script]
+    - !reference [.helm, before_script]
+  script:
+    - export HELM_CHART_VERSION=${PROJECT_VERSION}
+    - !reference [.helm, script]
+  rules:
+    - if: $CI_COMMIT_TAG
+  artifacts:
+    paths:
+      - "*.tgz"
\ No newline at end of file
diff --git a/README.adoc b/README.adoc
deleted file mode 100644
index bb8a83131d60f3bded7e479b5d9bbd287b423e45..0000000000000000000000000000000000000000
--- a/README.adoc
+++ /dev/null
@@ -1,94 +0,0 @@
-:toc:
-:toc-title: Inhalt
-:toclevels: 3
-
-## Build
-
-.Bauen des Projektes 
-[source,bash]
-----
-$ mvn clean package
-----
-
-.Bauen des Projektes mit einem Profil
-[source,bash]
-----
-$ mvn clean package -P <Profilename>
-----
-
-Profile werden immer in der Reihenfolge angewendet, in welcher Sie angegeben wurden.
-
-.Verfügbare Profilnamen
-- "zip" - Erstellen von einer Zip-Datei mit allem Projektinhalten
-- "plantuml" - Umwandeln der *.puml-Grafiken in das SVG-Format zum Einbetten in die Dokumentation
-- "asciidoctor" - Erstellen der Dokumentation im Format HTML und PDF 
-
-.Beispiel
-[source,bash]
-----
-$ mvn clean package -P plantuml,asciidoctor
-----
-
-## Release-Erstellung
-
-Eine Konsole im Projektverzeichnis öffnen und in den develop Branch wechseln.
-
-[source,bash]
-```
-$ git checkout develop
-```
-
-Branch aktualisieren.
-[source,bash]
-```
-$ git pull
-```
-
-Release beginnen. In der Konsole wird die nächste Releaseversion abgefragt.
-**Wichtig: Es dürfen keine Release-Branches (origin/release/...) mehr offen sein, 
-anderenfalls kann kein neues Release gestartet werden. Weiterhin dürfen keine unveröffentlichten Änderungen im Projekt vorhanden sein.**
-
-[source,bash]
-```
-$ mvn clean package gitflow:release-start
-```
-In diesem Schritt wird ein Release-Branch erzeugt. In diesem können bei Bedarf letzte Änderungen durchgeführt werden.
-
-**Wichtig:** Es soll kein Push zurück ins Repository erfolgen, die Änderungen werden nur via Commit ins Repository übertragen.
-Release abschließen ohne Deployment. Das Deployment übernimmt GitLab.
-
-[source,bash]
-```
-$ mvn gitflow:release-finish
-```
-
-
-== ASCIIDOC
-
-Für die Projektdokumentation wird ASCIIDOC verwendet. ASCIIDOC bietet viel mehr
-Möglichkeiten bei der Dokumentation als Markdown.
-
-=== Editor
-
-Es gibt die verschiedensten Editoren für ASCIIDOC Dateien
-(siehe https://docs.asciidoctor.org/asciidoctor/latest/tooling/[Link]). Der Eclipse
-ASCIDOC Editor hat Probleme SVG Dateien korrekt im Preview anzuzeigen. Der Editor für
-Visual Studio Code hat diese Probleme nicht.
-
-== PlantUML
-
-Für die Erstellung von Klassendiagrammen und Sequenzdiagrammen wird
-https://plantuml.com[PlantUML] verwendet. Die Diagramme werden in die ASCIIDOC Dokumente
-als SVG Grafik eingebunden. Dies ist wichtig, da anderenfalls die Diagramme im GitLab
-Projekt nicht dargestellt werden. Das Rendern von PlantUML Diagrammen ist im GitLab nicht
-aktiviert.
-
-=== Umwandeln in eine SVG Grafik
-
-Die Umwandlung in SVG erfolgt durch den Build mit dem Profil "asciidoctor".
-
-[source,bash]
-----
-$ mvn clean package -Pasciidoctor
-----
-
diff --git a/README.md b/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..a6ee46c332d167f84f21a9e58dc3ee13128c4138
--- /dev/null
+++ b/README.md
@@ -0,0 +1,3 @@
+# XTA-Test-Server
+
+Ein XTA-Server ohne Nutzer-Zugriffsbeschränkung für integrative Test-Umgebungen
\ No newline at end of file
diff --git a/build/assembly.xml b/build/assembly.xml
deleted file mode 100644
index 79c7b94b1d84643745f3ef32c6f81f8d7f12b794..0000000000000000000000000000000000000000
--- a/build/assembly.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<assembly xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3"
-    xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd">
-
-    <id>xta2v3</id>
-    <formats>
-        <format>zip</format>
-    </formats>
-    <baseDirectory>${project.artifactId}</baseDirectory>
-    <includeBaseDirectory>true</includeBaseDirectory>
-    <fileSets>
-        <fileSet>
-            <directory>${project.build.directory}/pdf</directory>
-            <outputDirectory>pdf</outputDirectory>
-            <includes>
-                <include>*.pdf</include>
-            </includes>
-        </fileSet>
-        <fileSet>
-            <directory>${project.build.directory}/html</directory>
-            <outputDirectory>html</outputDirectory>
-            <includes>
-                <include>*.html</include>
-                <include>images/*.png</include>
-                <include>puml/*.svg</include>
-            </includes>
-        </fileSet>
-        <fileSet>
-            <directory>${project.basedir}/src/main/resources/store</directory>
-            <outputDirectory>/</outputDirectory>
-            <includes>
-                <include>xta-test-client-john-smith_keystore.p12</include>
-                <include>xta-test-server_keystore.p12</include>
-                <include>xta-test_truststore.jks</include>
-            </includes>
-        </fileSet>
-    </fileSets>
-    <files>
-        <file>
-            <source>${project.build.directory}/${project.artifactId}-${project.version}.jar</source>
-            <outputDirectory>/</outputDirectory>
-        </file>
-        <file>
-            <source>${project.basedir}/build/resources/application-local.yml</source>
-            <outputDirectory>/</outputDirectory>
-        </file>
-    </files>
-</assembly>
\ No newline at end of file
diff --git a/build/resources/application-local.yml b/build/resources/application-local.yml
deleted file mode 100644
index 49cc6e1cb8e602572d0aeb94cb74120e3e52ce4d..0000000000000000000000000000000000000000
--- a/build/resources/application-local.yml
+++ /dev/null
@@ -1,38 +0,0 @@
-# Konfiguration für den XTA-Server
-spring:
-  servlet:
-    multipart:
-      max-file-size: 10MB
-      max-request-size: 10MB
-      
-server:
-  port: 8443
-  tomcat.max-http-post-size: 10MB
-  tomcat.max-swallow-size: 10MB
-  ssl:
-    # enthaelt den privaten und oeffentlichen Schluessel der Anwendung (SSL-Zertifikat für Webbrowser)
-    key-store: ./xta-test-server_keystore.p12
-    key-store-password: password
-    key-store-type: pkcs12
-    # Alias im KeyStore
-    key-alias: xta-test-server
-    key-password: password
-    # enthaelt alle vertrauenswuerdigen Zertifikate oder Oberzertifikate
-    trust-store: ./xta-test_truststore.jks
-    trust-store-password: password
-    trust-store-type: JKS
-    client-auth: want
-app:
-  server:
-    # Extra Port, auf welchem der Server hören soll (für http)
-    http-port: 8080
-
-logging:
-  level:
-    ROOT: INFO
-    # no auto configuration report
-    org.springframework.boot.autoconfigure.logging.ConditionEvaluationReportLoggingListener: INFO
-    org.springframework.security: WARN
-    org.springframework.web: INFO
-    org.apache.cxf: INFO
-
diff --git a/doc/bedienungsanleitung.adoc b/doc/bedienungsanleitung.adoc
deleted file mode 100644
index 5e1a1f07c056fd4124142e0b85c3ba38691ae0f0..0000000000000000000000000000000000000000
--- a/doc/bedienungsanleitung.adoc
+++ /dev/null
@@ -1,226 +0,0 @@
-= Bedienungsanleitung
-:toc:
-:toc-title: Inhalt
-:toclevels: 3
-:docinfo: shared
-
-In diesem Dokument wird die Verwendung der XTA Test Applikation beschrieben.
-
-== Starten der Anwendung
-
-=== Voraussetzungen
-
-Zum Starten der Anwendung wird mindestens ein Java in der Version 21 benötigt. Ist keine
-entsprechende Java Version verfügbar, dann kann von der https://adoptium.net/[Adoptium]
-Seite ein OpenJDK heruntergeladen werden.
-
-Können nicht die mitgelieferten Zertifikate und Keystores verwendet werden, dann sind in
-der Datei *application-local.yml* die entsprechenden Konfigurationsparameter anzupassen.
-Das Erstellen von KeyStores und TrustStores ist innerhalb des Themas
-xref:erstellen_von_zertifikaten.adoc["Erstellen von Zertifikaten"] beschrieben.
-
-=== Konfigurationsparameter
-
-Die Konfiguration ist in der *application-local.yml* und einer *config.yaml* Datei abgelegt. Die Anwendung verwendet den Port 8080
-und den Port 8443 als Standard. Sind diese Ports schon belegt, dann sind die entsprechenden
-Konfigurationsparameter anzupassen. Sofern die Datei *config.yaml* nicht existiert, so wird diese beim ersten Start der Anwendung erstellt.
-
-==== Konfiguration in der application*.yml
-
-|===
-| Konfigurationsparameter | Beschreibung
-
-| server.port | Https Port der Anwendung
-| server.ssl.key-store | Pfad zum KeyStore. Dieser enthält den privaten und öffentlichen Schlüssel der Anwendung
-| server.ssl.key-store-password | Passwort des KeyStores
-| server.ssl.key-alias | Alias im KeyStore
-| server.ssl.key-password | Passwort für den Schlüssel im KeyStore
-| server.ssl.trust-store | Pfad zum TrustStore. Dieser enthält alle vertrauenswürdigen Zertifikate oder Oberzertifikate
-| server.ssl.trust-store-password | Password des TrustStores
-| app.server.http-port | Http Port der Anwendung
-| logging.level.ROOT | Generelles Log-Level der Anwendung 
-| logging.level.<Paketname> | Loglevel für ein Paket und dessen Kinder festlegen
-
-|===
-
-==== Konfiguration in der config.yaml
-|===
-| Konfigurationsparameter | Beschreibung
-
-| protocolMetadata.softwareManufacturer | Hersteller des zu testenden Produkts
-| protocolMetadata.softwareName | Name des zu testenden Produkts
-| protocolMetadata.softwareVersion | Version des zu testenden Produkts
-| protocolMetadata.street | Firmenadresse (Straße) des Herstellers des zu testenden Produktes
-| protocolMetadata.streetNo | Firmenadresse (Hausnummer) des Herstellers des zu testenden Produktes
-| protocolMetadata.zipCode | Firmenadresse (Postleitzahl) des Herstellers des zu testenden Produktes
-| protocolMetadata.city | Firmenadresse (Stadt) des Herstellers des zu testenden Produktes
-| protocolMetadata.addressAddition | Firmenadresse (Zusatzangaben) des Herstellers des zu testenden Produktes
-
-| clientProperties.serverUrl.managementPort | Url zum Management-Port des zu testenden Produkts
-| clientProperties.serverUrl.sendPort | Url zum Send-Port des zu testenden Produkts
-| clientProperties.serverUrl.msgBoxPort | Url zum Messagebox-Port des zu testenden Produkts
-| clientProperties.checkHostnameInCertificate | Soll der Hostname im Server Zertifikat geprüft werden (default=true)
-| clientProperties.keyStore | Pfad zum KeyStore. Dieser enthält den privaten und öffentlichen Schlüssel des Clients
-| clientProperties.keyStorePassword | Passwort des KeyStores
-| clientProperties.keyPassword | Passwort für den Schlüssel im KeyStore
-| clientProperties.keyAlias | Alias im KeyStore
-| clientProperties.trustStore | Pfad zum TrustStore. Dieser enthält das vertrauenswürdige Zertifikat des Servers oder ein Oberzertifikat
-| clientProperties.trustStorePassword | Password des TrustStores
-| authorIdentifierConfig.identifierScheme | Ausweisung des Schemas zur Interpretation des PartyIdentifiers/Bezeichners, z.B. iso6523-actorid-upis für Peppol Participant Identifier Scheme.
-| authorIdentifierConfig.name | Optionaler menschenlesbarer Name zur Darstellung in User Agents (bekannt z.B. aus eMail). Im XÖV-Umfeld muss hier der Name der Behörde / öffentlichen Stelle eingetragen werden.
-| authorIdentifierConfig.value | Eindeutige Identifikation eines Kommunikationspartners anhand einer Kennung. Im XÖV-Umfeld muss hier die eindeutige Kennzeichnung der Behörde eingetragen werden.
-| authorIdentifierConfig.organizationCategory | Fachkategorie des identifizierten Kommunikationspartners innerhalb der Domäne.
-| readerIdentifierConfig.identifierScheme | Ausweisung des Schemas zur Interpretation des PartyIdentifiers/Bezeichners, z.B. iso6523-actorid-upis für Peppol Participant Identifier Scheme.
-| readerIdentifierConfig.name | Optionaler menschenlesbarer Name zur Darstellung in User Agents (bekannt z.B. aus eMail). Im XÖV-Umfeld muss hier der Name der Behörde / öffentlichen Stelle eingetragen werden.
-| readerIdentifierConfig.value | Eindeutige Identifikation eines Kommunikationspartners anhand einer Kennung. Im XÖV-Umfeld muss hier die eindeutige Kennzeichnung der Behörde eingetragen werden.
-| readerIdentifierConfig.organizationCategory | Fachkategorie des identifizierten Kommunikationspartners innerhalb der Domäne.
-| senderIdentifierConfig.identifierScheme | Ausweisung des Schemas zur Interpretation des PartyIdentifiers/Bezeichners, z.B. iso6523-actorid-upis für Peppol Participant Identifier Scheme.
-| senderIdentifierConfig.name | Optionaler menschenlesbarer Name zur Darstellung in User Agents (bekannt z.B. aus eMail). Im XÖV-Umfeld muss hier der Name der Behörde / öffentlichen Stelle eingetragen werden.
-| senderIdentifierConfig.value | Eindeutige Identifikation eines Kommunikationspartners anhand einer Kennung. Im XÖV-Umfeld muss hier die eindeutige Kennzeichnung der Behörde eingetragen werden.
-| senderIdentifierConfig.organizationCategory |Fachkategorie des identifizierten Kommunikationspartners innerhalb der Domäne.
-| lookupServiceUri | Beim Methodenaufruf "lookupService" aus dem XTA Standard wird der angegebene Service URI verwendet.
-| deliveryAttributesServiceQuality | Das Element ServiceQuality ist vorgesehen, um in den Daten des Transportauftrags die Service Qualitäten ansprechen zu können, die bei der Ausführung des Transportauftrags zu berücksichtigen sind.
-| qualifierConfig.qualifierSubject | Dieses optionale Element bietet Raum für informatorischen Begleittext.
-| qualifierConfig.qualifierService | Spezifischer Dienst im Kontext eines bestimmten Geschäftsfalls.
-| qualifierConfig.messageTypeCode | Nachrichtentypen werden über Codes aus Listen definiert
-| qualifierConfig.messageTypeListUri | Codeliste von Nachrichtentypen
-| qualifierConfig.messageTypeListVersionId | Version der Codeliste
-| qualifierConfig.messageTypePayloadSchema | Angabe des Namespace für den Nachrichtentyp als URI
-| qualifierConfig.businessScenarioUndefined | Achtung: wenn ausgefüllt, werden die restlichen Angaben zum Geschäftsszenario ignoriert! Freitextliche Angabe eines nicht in einer Codeliste definierten Geschäftsszenarios.
-| qualifierConfig.businessScenarioCode | Code innerhalb der Codeliste, um das Szenario zu bestimmen
-| qualifierConfig.businessScenarioListUri | Pfad zum Dokument, mit welchem das Szenario definiert wird (Codeliste)
-| qualifierConfig.businessScenarioListVersionId | Version der Codeliste
-
-|===
-
-=== Start
-
-Eine Konsole im Programmordner starten und folgendes Kommando ausführen. Der Platzhalter
-ist mit der jeweiligen Version zu ersetzen.
-
-----
-java -jar xta-test-server-[VERSION].jar --spring.config.import=file:./application-local.yml
-----
-
-Sofern mehrere Umgebungen gleichzeitig gestartet werden sollen, so kann man sowohl die *application-xxx.yml*, als auch die 
-genutzte Serverkonfiguration beim Start der Anwendung mitgeben.
-
-----
-java -jar xta-test-server-[VERSION].jar --spring.config.import=file:./application-local.yml -DconfigFileName=file:config_second.yaml
-----
-
-Der Parameter "-DconfigFileName=file:config_second.yaml" ist wie folgt aufgebaut:
-
-- -D: Angabe eines Startparameters für die Anwendung
-- configFileName: Parameter, welcher gesetzt werden soll
-- file:config_second.yaml: "file" bedeutet nutze eine lokale Datei, "config_second.yaml" ist der Name der zu nutzenden Config-Datei.
-
-
-Nachdem der Server gestartet ist, kann die Benutzeroberfläche über http://localhost:8080
-oder https://localhost:8443 geöffnet werden. Wurde der Port geändert, so ist dieser in
-entsprechen in der Url anzupassen.
-
-== Benutzeroberfläche
-
-Die XTA Test Applikation besitzt eine Weboberfläche, über die die Anwendung konfiguriert
-und gesteuert wird.
-
-.Menüs
-* <<Menue-Steuerung, Steuerung>>
-* <<Menue-Einstellungen, Einstellungen>>
-* <<Menue-Anpassung, Content-Anpassung>>
-* <<Menue-Report, Report>>
-
-=== Steuerung [[Menue-Steuerung]]
-
-.Abschnitt Report
-
-Über den Button "Report zurücksetzen" kann ein Report gelöscht/zurückgesetzt werden.
-
-.Abschnitt Szenario
-
-Szenarien können hier ausgewählt und gestartet werden. Nach der Auswahl eines Szenarios
-wird darunter eine entsprechende Beschreibung angezeigt. Die Beschreibung enthält welche
-Rolle die XTA Test Applikation einnimmt.
-Nachdem ein Szenario gestartet wurde, ist es möglich dieses über den Button "Aktuelles
-Szenario Neustarten" zurückzusetzen.
-
-=== Einstellungen [[Menue-Einstellungen]]
-
-In diesem Menü können die folgenden Informationen angepasst werden:
-
-* Protokolleinstellungen
-* Verbindungseinstellungen
-* Endpunkte
-
-Die Einstellungen werden über die Laufzeit des Programmes hinweg gespeichert und müssen nicht
-bei jedem Neustart neu eingegeben werden.
-
-.Protokolleinstellungen
-
-Hier kann der Softwarehersteller und das Produkt für den Report konfiguriert
-werden.
-
-.Verbindungseinstellungen
-Hier können die Parameter für die Vertrauensstellung der Software und die Client-Zertifikate
-konfiguriert werden. Ebenso kann die Prüfung auf korrekte Hostnamen aktiviert oder deaktiviert werden.
-
-.Endpunkte
-In diesem Menüpunkt können die zu nutzenden Endpunkte angepasst werden, welche für die Kommunikation
-als XTA-Client genutzt werden sollen. Die URL sollten in einer Vertrauenstellung mit dem XTA-Server sein
-um keine Zertifikatsfehler hervorzurufen. Die Endpunkte sind generell ohne den Zusatz "?wsdl" anzugeben.
-
-
-
-=== Content-Konfiguration [[Menue-Anpassung]]
-
-In diesem Abschnitt kann der Inhalt des Generic Content Containers für den Nachrichtenversand
-angepasst werden. Die Einstellungen, welche hier getroffen werden, werden in allen
-Antworten / Anfragen von Client und Server verwendet.
-
-Man hat die Möglichkeit, zwischen einem Standardcontainer und einem angepassten Container
-zu wählen. Der Standardcontainer ist in der Anwendung vordefiniert und kann über den
-Button „Vorschau herunterladen“ eingesehen werden. Bei dem angepassten Container hat man
-selbst die Möglichkeit, unverschlüsselte oder verschlüsselte Container zu erstellen.
-Dazu müssen die entsprechenden Parameter in der Eingabemaske eingetragen und gespeichert
-werden. Den gespeicherten Container kann man sich über „Vorschau herunterladen“ anzeigen
-lassen.
-
-=== Report [[Menue-Report]]
-
-Zeigt den XTA Konformitätsbericht. Dieser kann über Drucken in ein PDF Dokument überführt
-werden.
-
-== Nutzung der Schnittstellen
-
-Nach dem Start der Testumgebung sind die Schnittstellen unter Url http://localhost:8080/MB_XTA-WS
-bzw. https://localhost:8443/MB_XTA-WS aufrufbar, sofern die Standardkonfiguration verwendet wurde.
-
-Für die unterschiedlichen Ports des XTA-Service sind unter der genannten Adresse alle Serviceadressen genannt.
-
-Die Testumgebung prüft bei jeder Anfrage, ob alle Sicherheitseinstellungen (Policies) eingehalten wurden. Sofern eine oder mehrere nicht 
-eingehalten wurde, so wird ein SOAP-Fault mit der entsprechenden Beschreibung zurück gegeben. 
-Die einzuhalten Policies sind aktuell:
-
-- WS-Adressing
-- MTOM (SOAP Message Transmission Optimization Mechanism)
-- Nutzung von HTTPS
-- Gegebenenfalls muss bei Antworten eine Signaturbestätigung (SignatureConfirmation) mit gesendet werden
-
-=== Aufruf der WSDL-Datei
-Die WSDL-Datei ist immer unter der Adresse des Services mit dem Zusatz ?wsdl aufrufbar (z.B. https://localhost:8443/services/XTAService/ManagementPort?wsdl ).
-
-=== HTTPS Kommunikation
-
-Für die Kommunikation mittels HTTPs ist ein Client-Zertifikat notwendig, um den Client gegenüber der Testumgebung zu authentifizieren. Innerhalb der ZIP-Dateien der Testumgebung sind bereits mehrere Zertifikate und Keystores hinterlegt, die für die Kommunikation mit der Testumgebung genutzt werden können:
-
-* xta-test-client-john-smith_keystore.p12 - Dieser Keystore beinhaltet ein Client-Zertifikat, das für die Kommunikation mit der Testumgebung verwendet werden kann. Sofern die Testumgebung in der Standardkonfiguration gestartet wurde, stuft die Umgebung das Zertifikat als vertrauenswürdig ein.
-
-
-=== Test mit SoapUI
-
-Um einfache XTA-Anfragen mit der Testumgebung zu testen kann das Tool SoapUI mit dem im Ordner "soapui" liegenden Beispielprojekt verwendet werden. Für eine erfolgreiche Herstellung einer HTTPs-Verbindung muss das Client-Zertifikat in den Einstellungen hinterlegt werden.
-Dieses Zertifikat wird anschließend für alle Requests genutzt.
-
-image:./images/soapui_cert.png["Notwendige Einstellungen für Client-Zertifikate in SoapUI"]
-
diff --git a/doc/docinfo-footer.html b/doc/docinfo-footer.html
deleted file mode 100644
index aa814ac766185a703b29cd049c16042173ade7de..0000000000000000000000000000000000000000
--- a/doc/docinfo-footer.html
+++ /dev/null
@@ -1,4 +0,0 @@
-<p class="footer-text">
-<!-- We can use document attributes: -->
-Copyright © 2021-{docyear} Koordinierungsstelle für IT-Standards (KoSIT) | <a href="https://www.xoev.de/">https://www.xoev.de</a>
-</p>
\ No newline at end of file
diff --git a/doc/docinfo.html b/doc/docinfo.html
deleted file mode 100644
index 10481094e14571739906f64e74f85ef754d80f4f..0000000000000000000000000000000000000000
--- a/doc/docinfo.html
+++ /dev/null
@@ -1,17 +0,0 @@
-<style>
-/* Change CSS overflow for table of contents. */
-#toc.toc2, #toc { overflow: scroll; }
-
-/* Change styling for footer text. */
-.footer-text {
-    color: rgba(255,255,255,.8);
-    background: rgba(0,0,0,.8);
-    padding-left: 1.25em;
-}
-.footer-text>a:link, .footer-text>a:visited  {
-    color: rgba(255,255,255,.8);
-}
-#footer-text {
-    padding-bottom: 0;
-}
-</style>
\ No newline at end of file
diff --git a/doc/erstellen_von_zertifikaten.adoc b/doc/erstellen_von_zertifikaten.adoc
deleted file mode 100644
index fb404138e1a2285feae2138dc0fbd04489cbab93..0000000000000000000000000000000000000000
--- a/doc/erstellen_von_zertifikaten.adoc
+++ /dev/null
@@ -1,226 +0,0 @@
-= Erstellen von Zertifikaten
-:toc:
-:toc-title: Inhalt
-:toclevels: 3
-:docinfo: shared
-
-== Tools
-
-Für die einfache Erstellung der Privaten Schlüssel, der Zertifikate und der Zertifikatspeicher können folgende Tools verwendet werden.
-
-  * https://hohnstaedt.de/xca/[XCA]
-  * https://keystore-explorer.org/[KeyStore Explorer]
-
-Wer mit OpenSSL und dem Java Keytool vertraut ist, kann auch diese Programme für die Erzeugung der benötigten Dateien verwenden.
-Im folgenden ist die Erstellung mit den oben genannten Tools beschrieben.
-
-==  Erstellen einer CA mit XCA
-
-Das XCA Programm öffnen und eine neue Datenbank erstellen (Menü -> Datei -> Neue Datenbank).
-
-=== Vorlagen
-
-Damit nicht bei jedem Zertifikat erneut die richtigen Einstellungen getroffen und alle benötigten Felder ausgefüllt werden müssen können Vorlagen angelegt werden.
-Wir legen uns für die Root CA, für die Applikation (Server) und für die Clients Vorlagen an.
-
-==== Vorlage für Root CA
-
-Im Tab Vorlagen den Button "Neue Vorlagen" wählen. Im Auswahldialog "[default] CA" wählen.
-
-Die Vorlage entsprechend der Screenshots ausfüllen.
-
-.Tab Inhaber
-image:./images/xca_template_root_ca_01.png["Tab Inhaber"]
-
-.Tab Erweiterungen
-image:./images/xca_template_root_ca_02.png["Tab Erweiterungen"]
-
-.Tab Schlüsselverwendung
-image:./images/xca_template_root_ca_03.png["Tab Schlüsselverwendung"]
-
-.Tab Netscape
-image:./images/xca_template_root_ca_04.png["Tab Netscape"]
-
-.Tab Erweitert
-Hier sollte kein Text in rot enthalten sein.
-
-.Tab Kommentar
-Ein ggf. enthaltener Kommentar kann entfernt werden.
-
-==== Vorlage für die Applikation
-
-Im Tab Vorlagen den Button "Neue Vorlagen" wählen. Im Auswahldialog "[default] TLS_server" wählen.
-
-Die Vorlage entsprechend der Screenshots ausfüllen.
-
-.Tab Inhaber
-image:./images/xca_template_app_01.png["Tab Inhaber"]
-
-.Tab Erweiterungen
-Unter "X509v3 Subject Alternative Name" alle alternativen DNS Namen eintragen (inkl. IPs). Wurde ein gültiger Domainname als "commonName" eingetragen,
-dann kann dieser mit "DNS:copycn" übernommen werden.
-
-image:./images/xca_template_app_02.png["Tab Erweiterungen"]
-
-.Tab Schlüsselverwendung
-image:./images/xca_template_app_03.png["Tab Schlüsselverwendung"]
-
-.Tab Netscape
-image:./images/xca_template_app_04.png["Tab Netscape"]
-
-.Tab Erweitert
-Hier sollte kein Text in rot enthalten sein.
-
-.Tab Kommentar
-Ein ggf. enthaltener Kommentar kann entfernt werden.
-
-==== Vorlage für die Clients
-
-Im Tab Vorlagen den Button "Neue Vorlagen" wählen. Im Auswahldialog "[default] TLS_client" wählen.
-
-Die Vorlage entsprechend der Screenshots ausfüllen.
-
-.Tab Inhaber
-Im Feld "commonName" den Benutzernamen und in das Feld "emailAddress" dessen Email Adresse eintragen.
-
-image:./images/xca_template_client_01.png[Tab Inhaber]
-
-.Tab Erweiterungen
-image:./images/xca_template_client_02.png[Tab Erweiterungen]
-
-.Tab Schlüsselverwendung
-image:./images/xca_template_client_03.png[Tab Schlüsselverwendung]
-
-.Tab Netscape
-image:./images/xca_template_client_04.png[Tab Netscape]
-
-.Tab Erweitert
-Hier sollte kein Text in rot enthalten sein.
-
-.Tab Kommentar
-Ein ggf. enthaltener Kommentar kann entfernt werden.
-
-=== Erstellen der Zertifikate
-
-==== Zertifikat der Root CA
-
-Im Tab "Zertifikate" den Button "Neues Zertifikat" wählen.
-
-Das Zertifikat entsprechend der Screenshots ausfüllen.
-
-.Tab Herkunft
-In der Auswahl "Vorlage für das neue Zertifikat" die Vorlage "Root CA" auswählen und anschließend auf den Button "Alles übernehmen" drücken.
-Jetzt wurden alle Felder mit den Werten der Vorlage befüllt.
-
-image:./images/xca_create_certificate_root_ca_01.png[Tab Herkunft]
-
-.Tab Inhaber
-Zuerst im Feld "Interner Name" "XTA Tester Root CA" eintragen. Anschließend über den Button "Erstelle einen neuen Schlüssel" einen neuen Privaten Schlüssel erzeugen.
-
-image:./images/xca_create_certificate_root_ca_02.png[Tab Inhaber]
-
-Nachdem der neue Schlüssel erstellt wurde sollte dieser im Auswahlfeld "Privater Schlüssel" automatisch ausgewählt sein.
-
-image:./images/xca_create_certificate_root_ca_03.png[Tab Inhaber]
-
-Weitere Anpassungen sind nicht notwendig und das Zertifikat kann erstellt werden.
-
-==== Zertifikat der Applikation
-
-Im Tab "Zertifikate" den Button "Neues Zertifikat" wählen.
-
-Das Zertifikat entsprechend der Screenshots ausfüllen.
-
-.Tab Herkunft
-In der Gruppe "Unterschreiben" die Option "Verwende dieses Zertifikat zum Unterschreiben" wählen und die Root CA auswählen.
-In der Auswahl "Vorlage für das neue Zertifikat" die Vorlage "XTA Tester Application" auswählen und anschließend auf den Button "Alles übernehmen" drücken.
-Jetzt wurden alle Felder mit den Werten der Vorlage befüllt.
-
-image:./images/xca_create_certificate_app_01.png[Tab Herkunft]
-
-.Tab Inhaber
-Zuerst im Feld "Interner Name" "XTA Tester Application" eintragen. Anschließend über den Button "Erstelle einen neuen Schlüssel" einen neuen Privaten Schlüssel erzeugen.
-
-image:./images/xca_create_certificate_app_02.png[Tab Inhaber]
-
-Nachdem der neue Schlüssel erstellt wurde sollte dieser im Auswahlfeld "Privater Schlüssel" automatisch ausgewählt sein.
-
-image:./images/xca_create_certificate_app_03.png[Tab Inhaber]
-
-Weitere Anpassungen sind nicht notwendig und das Zertifikat kann erstellt werden.
-
-==== Zertifikat eines Clients
-
-Im Tab "Zertifikate" den Button "Neues Zertifikat" wählen.
-
-Das Zertifikat entsprechend der Screenshots ausfüllen.
-
-.Tab Herkunft
-In der Gruppe "Unterschreiben" die Option "Verwende dieses Zertifikat zum Unterschreiben" wählen und die Root CA auswählen.
-In der Auswahl "Vorlage für das neue Zertifikat" die Vorlage "XTA Tester Client" auswählen und anschließend auf den Button "Alles übernehmen" drücken.
-Jetzt wurden alle Felder mit den Werten der Vorlage befüllt.
-
-image:./images/xca_create_certificate_client_01.png[Tab Herkunft]
-
-.Tab Inhaber
-Zuerst im Feld "Interner Name" "XTA Tester Client [NAME]" eintragen und noch commonName und emailAddress ausfüllen. Anschließend über den Button
-"Erstelle einen neuen Schlüssel" einen neuen Privaten Schlüssel erzeugen.
-
-image:./images/xca_create_certificate_client_02.png[Tab Inhaber]
-
-Nachdem der neue Schlüssel erstellt wurde sollte dieser im Auswahlfeld "Privater Schlüssel" automatisch ausgewählt sein.
-
-image:./images/xca_create_certificate_client_03.png[Tab Inhaber]
-
-Weitere Anpassungen sind nicht notwendig und das Zertifikat kann erstellt werden.
-
-== Erstellen des Keystores
-
-.Privaten Schlüssel der Applikation exportieren
-In XCA in den Tab "Private Schlüssel" wechseln und den Schlüssel "XTA Tester Application" wählen. Über den Button "Export" öffnet sich ein Export-Dialog.
-Den Schlüssel im "PEM" Format unter dem Dateinamen "XTA_Tester_Application.key.pem" exportieren.
-
-.Zertifikat der Applikation exportieren
-In XCA in den Tab "Zertifikate" wechseln und das Zertifikat "XTA Tester Application" wählen. Über den Button "Export" öffnet sich ein Export-Dialog.
-Als Exportformat "PEM Kette" wählen und das Zertifikat unter dem Dateinamen "XTA_Tester_Application.pem" exportieren.
-
-.Erstellen des Keystores mit dem KeyStore Explorer
-Öffnen des *KeyStore Explorers* und einen neuen "PKCS #12" Schlüsselspeicher erzeugen. Anschließend "Schlüsselpaar importieren" wählen. Im sich öffnenden Dialog
-"OpenSSL" wählen. Im folgenden Dialog die CheckBox "Verschlüsselter privater Schlüssel" deaktivieren und in die entsprechenden Felder den Pfad zum privaten Schlüssel
-und dem Zertifikat eintragen. Nach dem Import als Alias "xta-tester-application" verwenden. Jetzt muss noch ein Passwort vergeben werden.
-Zum Abschluss den Keystore noch speichern, auch hier ist ein Passwort anzugeben. Bitte das gleiche Passwort verwenden. Das vergebene Passwort ist später in der
-application.yml Datei zu konfigurieren.
-
-== Erstellen des Truststores
-
-.Root CA exportieren
-In XCA in den Tab "Zertifikate" wechseln und das Zertifikat "XTA Tester Root CA" wählen. Über den Button "Export" öffnet sich ein Export-Dialog.
-Als Exportformat "PEM" wählen und das Zertifikat unter dem Dateinamen "XTA_Tester_Root_CA.crt" exportieren.
-
-.Erstellen des Truststores mit dem KeyStore Explorer
-Öffnen des *KeyStore Explorers* und einen neuen "JKS" Schlüsselspeicher erzeugen. Anschließend "Vertrauenswürdiges Zertifikat importieren" wählen. Im sich öffnenden Dialog
-das exportierte Zertifikat auswählen und anschließend noch als Alias "XTA Tester Root CA" eintragen. Zum Abschluss den Truststore speichern.
-
-== Erstellen einer p12 Datei für einen Client
-
-Es gibt zwei Möglichkeiten.
-Zum einen kann in XCA im Tab "Zertifikate" das Zertifikat inklusive privatem Schlüssel als
-p12-Datei exportiert werden. Dabei ist es wichtig den Eintrag mit Zertifizierungskette zu wählen.
-Die zweite Möglichkeit ist den privaten Schlüssel und das Zertifikat getrennt zu exportieren und anschließend die p12-Datei mit dem KeyStore
-Explorer zu erzeugen.
-
-.Privaten Schlüssel des Clients exportieren
-In XCA in den Tab "Private Schlüssel" wechseln und den Schlüssel "XTA Tester Client [Name]" wählen. Über den Button "Export" öffnet sich ein Export-Dialog.
-Den Schlüssel im "PEM" Format unter dem Dateinamen "XTA_Tester_Client_[NAME].key.pem" exportieren.
-
-.Zertifikat des Clients exportieren
-In XCA in den Tab "Zertifikate" wechseln und das Zertifikat "XTA Tester Client [Name]" wählen. Über den Button "Export" öffnet sich ein Export-Dialog.
-Als Exportformat "PEM Kette" wählen und das Zertifikat unter dem Dateinamen "XTA_Tester_Client_[Name].pem" exportieren.
-
-.Erstellen der p12 Datei mit dem KeyStore Explorer
-Öffnen des *KeyStore Explorers* und einen neuen "PKCS #12" Schlüsselspeicher erzeugen. Anschließend "Schlüsselpaar importieren" wählen. Im sich öffnenden Dialog
-"OpenSSL" wählen. Im folgenden Dialog die CheckBox "Verschlüsselter privater Schlüssel" deaktivieren und in die entsprechenden Felder den Pfad zum privaten Schlüssel
-und dem Zertifikat eintragen. Nach dem Import als Alias "\[Name\] \(xta tester root ca\)" verwenden. Jetzt muss noch ein Passwort vergeben werden.
-Zum Abschluss den Keystore noch speichern, auch hier ist ein Passwort anzugeben. Bitte das gleiche Passwort verwenden. Das Passwort wird benötigt wenn der Keystore auf
-dem  Client eingespielt wird.
-
diff --git a/doc/images/soapui_cert.png b/doc/images/soapui_cert.png
deleted file mode 100644
index 8984be5b12033460f1d819af0c854636fe9cfe31..0000000000000000000000000000000000000000
Binary files a/doc/images/soapui_cert.png and /dev/null differ
diff --git a/doc/images/xca_create_certificate_app_01.png b/doc/images/xca_create_certificate_app_01.png
deleted file mode 100644
index b0b7d0eda79101839ae02cfba80701dc7df7003e..0000000000000000000000000000000000000000
Binary files a/doc/images/xca_create_certificate_app_01.png and /dev/null differ
diff --git a/doc/images/xca_create_certificate_app_02.png b/doc/images/xca_create_certificate_app_02.png
deleted file mode 100644
index c0b5d2324af73b1a97d9d38c3499c4b52957b120..0000000000000000000000000000000000000000
Binary files a/doc/images/xca_create_certificate_app_02.png and /dev/null differ
diff --git a/doc/images/xca_create_certificate_app_03.png b/doc/images/xca_create_certificate_app_03.png
deleted file mode 100644
index 59dee0a19f7aab640b472fbb94298725b22d48c8..0000000000000000000000000000000000000000
Binary files a/doc/images/xca_create_certificate_app_03.png and /dev/null differ
diff --git a/doc/images/xca_create_certificate_client_01.png b/doc/images/xca_create_certificate_client_01.png
deleted file mode 100644
index dac78b0ce950c25a82a12cda362b933517f04010..0000000000000000000000000000000000000000
Binary files a/doc/images/xca_create_certificate_client_01.png and /dev/null differ
diff --git a/doc/images/xca_create_certificate_client_02.png b/doc/images/xca_create_certificate_client_02.png
deleted file mode 100644
index 8599feaf2e395861c4fbc321b70fd3222122955c..0000000000000000000000000000000000000000
Binary files a/doc/images/xca_create_certificate_client_02.png and /dev/null differ
diff --git a/doc/images/xca_create_certificate_client_03.png b/doc/images/xca_create_certificate_client_03.png
deleted file mode 100644
index 002268dee251fbe78ae352a87e75d055273962d8..0000000000000000000000000000000000000000
Binary files a/doc/images/xca_create_certificate_client_03.png and /dev/null differ
diff --git a/doc/images/xca_create_certificate_root_ca_01.png b/doc/images/xca_create_certificate_root_ca_01.png
deleted file mode 100644
index 9b0b8a43caa734170eae04638dfa0d48c11a5345..0000000000000000000000000000000000000000
Binary files a/doc/images/xca_create_certificate_root_ca_01.png and /dev/null differ
diff --git a/doc/images/xca_create_certificate_root_ca_02.png b/doc/images/xca_create_certificate_root_ca_02.png
deleted file mode 100644
index d0985f43c6b4afcc724f6d0b4187c08e002cf92b..0000000000000000000000000000000000000000
Binary files a/doc/images/xca_create_certificate_root_ca_02.png and /dev/null differ
diff --git a/doc/images/xca_create_certificate_root_ca_03.png b/doc/images/xca_create_certificate_root_ca_03.png
deleted file mode 100644
index 91bc9bdc32ba258c9ad513cb941bcae2011afa46..0000000000000000000000000000000000000000
Binary files a/doc/images/xca_create_certificate_root_ca_03.png and /dev/null differ
diff --git a/doc/images/xca_template_app_01.png b/doc/images/xca_template_app_01.png
deleted file mode 100644
index 6d0e18e2fa652e6ad63b64f1e947970d19c83a5f..0000000000000000000000000000000000000000
Binary files a/doc/images/xca_template_app_01.png and /dev/null differ
diff --git a/doc/images/xca_template_app_02.png b/doc/images/xca_template_app_02.png
deleted file mode 100644
index e206d4898d0c7a5f94b29ba224fdd11ca22a5d52..0000000000000000000000000000000000000000
Binary files a/doc/images/xca_template_app_02.png and /dev/null differ
diff --git a/doc/images/xca_template_app_03.png b/doc/images/xca_template_app_03.png
deleted file mode 100644
index 0056d1fcd2c4142b5cacd2d227b4e205a113296b..0000000000000000000000000000000000000000
Binary files a/doc/images/xca_template_app_03.png and /dev/null differ
diff --git a/doc/images/xca_template_app_04.png b/doc/images/xca_template_app_04.png
deleted file mode 100644
index 042761e9d0a1478b53f99a7a6c48de5fea302d0e..0000000000000000000000000000000000000000
Binary files a/doc/images/xca_template_app_04.png and /dev/null differ
diff --git a/doc/images/xca_template_client_01.png b/doc/images/xca_template_client_01.png
deleted file mode 100644
index e38d0ac8719e807b5d7d3b67c3b21334bac81862..0000000000000000000000000000000000000000
Binary files a/doc/images/xca_template_client_01.png and /dev/null differ
diff --git a/doc/images/xca_template_client_02.png b/doc/images/xca_template_client_02.png
deleted file mode 100644
index 03139ca36206f03ef583d69eae4d990f9a037c5e..0000000000000000000000000000000000000000
Binary files a/doc/images/xca_template_client_02.png and /dev/null differ
diff --git a/doc/images/xca_template_client_03.png b/doc/images/xca_template_client_03.png
deleted file mode 100644
index 487d390cade02deee6ca28b95d16e423f6cb7480..0000000000000000000000000000000000000000
Binary files a/doc/images/xca_template_client_03.png and /dev/null differ
diff --git a/doc/images/xca_template_client_04.png b/doc/images/xca_template_client_04.png
deleted file mode 100644
index 6c440a5db3cf8970dea13aa2572203de87ba705f..0000000000000000000000000000000000000000
Binary files a/doc/images/xca_template_client_04.png and /dev/null differ
diff --git a/doc/images/xca_template_root_ca_01.png b/doc/images/xca_template_root_ca_01.png
deleted file mode 100644
index 297bba1b7c8609a53456a195d14caba630041dec..0000000000000000000000000000000000000000
Binary files a/doc/images/xca_template_root_ca_01.png and /dev/null differ
diff --git a/doc/images/xca_template_root_ca_02.png b/doc/images/xca_template_root_ca_02.png
deleted file mode 100644
index cba0ce6abd1dede444e702e7ca4bf017f1f92737..0000000000000000000000000000000000000000
Binary files a/doc/images/xca_template_root_ca_02.png and /dev/null differ
diff --git a/doc/images/xca_template_root_ca_03.png b/doc/images/xca_template_root_ca_03.png
deleted file mode 100644
index 05ba510e6968dd84e1a3e4605173f32fb48edb1c..0000000000000000000000000000000000000000
Binary files a/doc/images/xca_template_root_ca_03.png and /dev/null differ
diff --git a/doc/images/xca_template_root_ca_04.png b/doc/images/xca_template_root_ca_04.png
deleted file mode 100644
index 06530b66aaddc650357f1b9ecbb1c4ed65594a47..0000000000000000000000000000000000000000
Binary files a/doc/images/xca_template_root_ca_04.png and /dev/null differ
diff --git a/doc/index.adoc b/doc/index.adoc
deleted file mode 100644
index 10b371f1e465aee4319052839cafd7665703b144..0000000000000000000000000000000000000000
--- a/doc/index.adoc
+++ /dev/null
@@ -1,33 +0,0 @@
-= XTA Testumgebung
-:toc:
-:toc-title: Inhalt
-:toclevels: 3
-:docinfo: shared
-
-== Vorwort
-Die KoSIT stellt die XTA Testumgebung als ein Tool zur Verfügung, welches primär eine automatisierte Prüfung eines Produkts gegen die Konformitätsvorgaben für XTA 2 Version 3 ermöglicht und eine Konformitätserklärung anhand eines generierten Berichts vereinfacht. Sekundär dient die Testumgebung bei der grundlegenden Implementierung von Methodenaufrufen als ein Hilfsmittel (nicht-normativ). Die aktuelle Spezifikation (normativ) und Konformitätsvorgaben für XTA 2 Version 3 können unter https://www.xoev.de/downloads-2316#XTA heruntergeladen werden.
-
-Zur besseren Nachvollziehbarkeit der internen Abläufe der XTA Testumgebung werden neben der vorliegenden Dokumentation ein SOAP-UI Projekt mit XTA SOAP Requests und der Quellcode zur Verfügung gestellt.
-
-Die XTA Testumgebung ist ein Projekt der KoSIT und wurde im Auftrag durch Nortal AG umgesetzt.
-
-Bei technischen Rückfragen zur Testumgebung bzw. Fehlermeldungen melden Sie dieses bitte bei xta2@nortal.com mit CC an kosit@finanzen.bremen.de .
-
-Bei Rückfragen zum Standard wenden Sie sich bitte an thomas.matern@finanzen.bremen.de oder kosit@finanzen.bremen.de .
-
-== Dokumentation
-* xref:bedienungsanleitung.adoc[Bedienungsanleitung] +
-  Beschreibt das Starten und die Verwendung der XTA-Test-App
-* xref:release_notes.adoc[Release Notes] +
-  Informationen zu den XTA-Test-App Versionen (z.B. Funktionsumfang)
-* xref:erstellen_von_zertifikaten.adoc[Erstellen von Zertifikaten] +
-  Anleitung zum erstellen von Zertifikaten
-* xref:umsetzungsuebersicht.adoc[Umsetzungsübersicht] +
-  Übersicht welche Funktionen/Funktionalitäten in den Methoden aus den Konformitätsvorgaben umgesetzt wurden
-* xref:protokoll.adoc[Protokoll] +
-  Dokumentation der Klassenstruktur für die Protokollierung der Testfälle
-* xref:szenarien.adoc[Szenarien] +
-  Enthält die Dokumentation der Klassenstruktur für die Szenariendefinition und Sequenzdiagramme für jedes
-  Szenario mit Erläuterungen
-* xref:minimaler_parameterinhalt.adoc[Minimaler Parameterinhalt] +
-  Tabelle der Datentypen aus den Konformitätsvorgaben nur mit zusätzlichen Links auf referenzierte Datentypen
diff --git a/doc/minimaler_parameterinhalt.adoc b/doc/minimaler_parameterinhalt.adoc
deleted file mode 100644
index a261b0bcce1167187c6fc3629b55d026bc45f61d..0000000000000000000000000000000000000000
--- a/doc/minimaler_parameterinhalt.adoc
+++ /dev/null
@@ -1,166 +0,0 @@
-= Minimaler Parameter Inhalt
-:toc:
-:toc-title: Inhalt
-:toclevels: 3
-:docinfo: shared
-
-Die Daten stammen aus den "XTA Konformitätsvorgaben Produkt XTA2v3". In der aufbereiteten Tabelle sind Verweise
-enthalten. So ist eine einfache Navigation zwischen den Datentypen möglich.
-
-[cols="1,1,1"]
-|===
-| Parametername | Typ | Abschnitt in XTA Spezifikation
-
-| [[AdditionalReportListType]]*AdditionalReportListType* | | 5.5.1.3
-| + Report | |
-| ++ Key | xta:<<Code.ReportType, Code.ReportType>> | 5.5.1.4
-| ++ Data | xs:base64binary |
-
-| [[Code.ServiceParameterType]]*Code.ServiceParameterType* | Frei wählbare Codeliste, Empfehlung in Spezifikation | 5.5.1.9
-
-| [[Code.RecordType]]*Code.RecordType* | Frei wählbare Codeliste, Empfehlung in Spezifikation | 5.5.1.1
-
-| [[ContentType]]*ContentType* | erweitert xs:base64Binary | 5.5.1.10
-| + contentType | oscimeta:NonEmptyStringType | 2.4.2
-| + encoding | oscimeta:NonEmptyStringType | 2.4.2
-| + filename | oscimeta:NonEmptyStringType | 2.4.2
-| + id | xs:ID |
-| + size | xs:positiveInteger |
-
-| [[DeliveryAttributesType]]*DeliveryAttributesType* | | 5.4.2.3.2.1
-| + Origin | xs:dateTime |
-| + InitialSend | xs:dateTime |
-| + Delivery | xs:dateTime |
-| + InitialFetch | xs:dateTime |
-
-| [[DestinationsType]]*DestinationsType* | | 5.4.2.3.1
-| + oscimeta:Reader | oscimeta:<<PartyType, PartyType>> |
-
-| [[GenericContentContainer]]*GenericContentContainer* | | 5.5.2.1
-| + xenc:EncryptedData | |
-| + ContentContainer | |
-| ++ Message | xta:<<ContentType, ContentType>> |
-| ++ Attachment | xta:<<ContentType, ContentType>> |
-
-| [[GetTransportReportResponse]]*GetTransportReportResponse* | xta:<<TransportReport, TransportReport>> | 5.4.1.3.1
-
-| [[IsServiceAvailableValueType]]*IsServiceAvailableValueType* | | 5.5.1.8
-| + ServiceIsAvailable | xs:boolean |
-| + ServiceIsAvailableUnknown | xs:boolean |
-
-| [[LookupServiceRequest]]*LookupServiceRequest* | | 5.5.2.2
-| + LookupServiceRequestList | |
-| ++ LookupService | xta:<<LookupServiceType, LookupServiceType>> | 5.5.1.6
-
-| [[LookupServiceResponse]]*LookupServiceResponse* | | 5.5.2.3
-| + LookupServiceResultList | |
-| ++ LookupServiceResult | xta:<<LookupServiceResultType, LookupServiceResultType>> | 5.5.1.7
-
-| [[LookupServiceResultType]]*LookupServiceResultType* | erweitert xta:<<LookupServiceType, LookupServiceType>> | 5.5.1.7
-| + oscimeta:Reader | aus <<LookupServiceType, LookupServiceType>> | 2.4.2
-| + ServiceType | aus <<LookupServiceType, LookupServiceType>> |
-| + IsServiceAvailableValue | xta:<<IsServiceAvailableValueType, IsServiceAvailableValueType>> | 5.5.1.8
-| + ServiceParameter | |
-| ++ ParameterType | xta:<<Code.ServiceParameterType, Code.ServiceParameterType>> | 5.5.1.9
-| ++ Resource | xs:base64Binary |
-
-| [[LookupServiceType]]*LookupServiceType* | | 5.5.1.6
-| + oscimeta:Reader | | 2.4.2
-| + ServiceType | xs:anyURI |
-
-| [[MessageID]]*MessageID* | |
-
-| [[MessageMetaData]]*MessageMetaData* | | 5.4.2.3.1
-| + DeliveryAttributes (-) | oscimeta:<<DeliveryAttributesType, DeliveryAttributesType>> | 5.4.2.3.2.1
-| + Originators (-) | oscimeta:<<OriginatorsType, OriginatorsType>> |
-| + Destinations (-) | oscimeta:<<DestinationsType, DestinationsType>> |
-| + MsgIdentification (-) | oscimeta:<<MsgIdentificationType, MsgIdentificationType>> |
-| + Qualifier (-) | oscimeta:<<QualifierType, QualifierType>> |
-
-| [[MessageStatusType]]*MessageStatusType* | | 5.5.1.5
-| + Status | xs:integer |
-| + ErrorList | |
-| ++ Error | xta:<<RecordType, RecordType>> |
-| + WarnList | |
-| ++ Warning | xta:<<RecordType, RecordType>> |
-| + InfoList | |
-| ++ Info | xta:<<RecordType, RecordType>> |
-
-| [[MessageType]]*MessageType* | erweitert oscimeta:KeyCodeType | 5.4.2.3.3.2
-| + payloadSchema | oscimeta:NonEmptyURIType |
-
-| [[MsgBoxCloseRequest]]*MsgBoxCloseRequest* | <<MsgBoxCloseRequestType, MsgBoxCloseRequestType>> | 5.4.3.3.2
-
-| [[MsgBoxCloseRequestType]]*MsgBoxCloseRequestType* | |
-| + MsgBoxRequestID | xs:anyURI |
-| + LastMsgReceived | wsa:AttributedURIType |
-
-| [[MsgBoxFetchRequest]]*MsgBoxFetchRequest* | <<MsgBoxRequestType, MsgBoxRequestType>> | 5.4.3.4.3
-| + osci:MsgSelector | Aus MsgBoxRequestType |
-| + MsgPart | xs:NMTOKEN |
-
-| [[MsgBoxRequestType]]*MsgBoxRequestType* | | 5.4.3.2.2
-| + MsgSelector | osci:<<MsgSelector, MsgSelector>> |
-
-| [[MsgBoxResponse]]*MsgBoxResponse* | <<MsgBoxResponseType, MsgBoxResponseType>> |
-
-| [[MsgBoxResponseType]]*MsgBoxResponseType* | | 5.4.3.2.2
-| +MsgBoxRequestID | xs:anyURI |
-| +NoMessageAvailable | xs:anyURI |
-| +ItemsPending | xs:nonNegativeInteger |
-
-| [[MsgBoxStatusListRequest]]*MsgBoxStatusListRequest* | <<MsgBoxStatusListRequestType, MsgBoxStatusListRequestType>> |
-
-| [[MsgBoxStatusListRequestType]]*MsgBoxStatusListRequestType* | erweitert <<MsgBoxRequestType, MsgBoxRequestType>> | 5.4.3.1.2
-| + osci:MsgSelector | aus <<MsgBoxRequestType, MsgBoxRequestType>> |
-| + ListForm | osci:ListFormEnum |
-| + maxListItems |xs:positiveInteger |
-
-| [[MsgIdentificationType]]*MsgIdentificationType* | | 5.4.2.3.1
-| + MessageID | wsa:<<MessageID, MessageID>> |
-
-| [[MsgSelector]]*MsgSelector* | | 5.4.3.4.1
-| + newEntry | xs:boolean |
-| + MessageID | wsa:<<MessageID, MessageID>> |
-| + MsgBoxEntryTimeFrom | xs:dateTime |
-| + MsgBoxEntryTimeTo | xs:dateTime |
-
-| [[MsgStatusList]]*MsgStatusList* | <<MsgStatusListType, MsgStatusListType>> |
-
-| [[MsgStatusListType]]*MsgStatusListType* | | 5.4.3.5.1.1.2.2
-| + osci:MessageMetaData | <<MessageMetaData, MessageMetaData>> |
-
-| [[OriginatorsType]]*OriginatorsType* | | 5.4.2.3.1
-| + Author | oscimeta:<<PartyType, PartyType>> |
-| + Sender | oscimeta:<<PartyType, PartyType>> |
-
-| [[PartyIdentifierType]]*PartyIdentifierType* | | 5.4.1.6.1
-| + category | oscimeta:NonEmptyStringType |
-| + type | oscimeta:NonEmptyStringType |
-
-| [[PartyType]]*PartyType* | | 5.4.1.6.1
-| + Identifier | oscimeta:<<PartyIdentifierType, PartyIdentifierType>> |
-
-| [[QualifierType]]*QualifierType* | | 5.4.2.3.3.2
-| + Service | xs:anyURI |
-| + BusinessScenario | |
-| ++ Defined | oscimeta:KeyCodeType |
-| ++ Undefined | xs:normalizedString |
-| + MessageType | oscimeta:<<MessageType, MessageType>> |
-
-| [[RecordType]]*RecordType*  | | 5.5.1.1
-| + Timestamp | xs:dateTime|
-| + Code | xta:<<Code.RecordType, Code.RecordType>> | 5.5.1.2
-| + Reason | xs:string |
-
-| [[TransportReport]]*TransportReport* | | 5.5.2.4
-| + ReportTime | xs:dateTime |
-| + XTAServerIdentity | xs:token |
-| + MessageStatus | xta:<<MessageStatusType, MessageStatusType>> | 5.5.1.5
-| + MessageMetaData | oscimeta:<<MessageMetaData, MessageMetaData>> |
-| + AdditionalReports | xta:<<AdditionalReportListType, AdditionalReportListType>> | 5.5.1.3
-|===
-
-Legende: "-" = keine Vorgabe; "\+", "\++", "\+++", usw. = Einrückung zur Anzeige, dass es sich um ein
-Bestandteil der zuvor genannten Struktur handelt; "(-)" = Nicht alle Teile dieser Struktur sind verpflichtend umzusetzen.
-
diff --git a/doc/protokoll.adoc b/doc/protokoll.adoc
deleted file mode 100644
index 91b6b53bd13ddb5701649336322aa7b05e9c983f..0000000000000000000000000000000000000000
--- a/doc/protokoll.adoc
+++ /dev/null
@@ -1,14 +0,0 @@
-= Protokoll
-:toc:
-:toc-title: Inhalt
-:toclevels: 3
-:docinfo: shared
-
-== Aufbau eines Protokolls
-
-Testergebnisse werden in ein Protokoll geschrieben. Ein Protokoll enthält ein oder
-mehrere Szenarien-Protokolle. Jedes Szenarien-Protokoll enthält Ereignisse und deren
-Ergebnisse.
-
-.UML Diagram Protokoll
-image:./puml/protokoll.svg["UML Diagram Protokoll"]
diff --git a/doc/puml/autor_asynchron.puml b/doc/puml/autor_asynchron.puml
deleted file mode 100644
index 13cbec2151ffbea8fad2f67216c2dbeab455fbb5..0000000000000000000000000000000000000000
--- a/doc/puml/autor_asynchron.puml
+++ /dev/null
@@ -1,42 +0,0 @@
-@startuml
-participant "Autor (asynchron)" as autor
-participant "Sender (asynchron)" as sender #LightGreen
-
-activate autor
-
-autor -> sender: checkAccountActive
-note right 
-muss zu einem beliebigen 
-Zeitpunkt aufgerufen werden
-end note
-activate sender
-return
-
-autor -> sender: lookupService
-note right 
-muss zu einem beliebigen 
-Zeitpunkt aufgerufen werden
-end note
-activate sender
-return
-
-autor -> sender: createMessageID
-activate sender
-return
-
-autor -> sender: sendMessage
-note right
-muss nach createMessageID 
-aufgerufen werden
-end note
-activate sender
-return
-
-autor -> sender: getTransportReport
-note right
-muss nach sendMessage
-aufgerufen werden
-end note
-activate sender
-return
-@enduml
\ No newline at end of file
diff --git a/doc/puml/autor_asynchron.svg b/doc/puml/autor_asynchron.svg
deleted file mode 100644
index d109bc7a6c8b96c3d04e02a8025a8ca8535adf0b..0000000000000000000000000000000000000000
--- a/doc/puml/autor_asynchron.svg
+++ /dev/null
@@ -1,52 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="419px" preserveAspectRatio="none" style="width:462px;height:419px;background:#FFFFFF;" version="1.1" viewBox="0 0 462 419" width="462px" zoomAndPan="magnify"><defs><filter height="300%" id="fswn2kptcr76g" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><rect fill="#FFFFFF" filter="url(#fswn2kptcr76g)" height="317.1953" style="stroke:#A80036;stroke-width:1.0;" width="10" x="70.5" y="50.2969"/><rect fill="#FFFFFF" filter="url(#fswn2kptcr76g)" height="26.5664" style="stroke:#A80036;stroke-width:1.0;" width="10" x="228" y="83.9961"/><rect fill="#FFFFFF" filter="url(#fswn2kptcr76g)" height="26.5664" style="stroke:#A80036;stroke-width:1.0;" width="10" x="228" y="152.2617"/><rect fill="#FFFFFF" filter="url(#fswn2kptcr76g)" height="14" style="stroke:#A80036;stroke-width:1.0;" width="10" x="228" y="207.9609"/><rect fill="#FFFFFF" filter="url(#fswn2kptcr76g)" height="26.5664" style="stroke:#A80036;stroke-width:1.0;" width="10" x="228" y="263.6602"/><rect fill="#FFFFFF" filter="url(#fswn2kptcr76g)" height="26.5664" style="stroke:#A80036;stroke-width:1.0;" width="10" x="228" y="331.9258"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:5.0,5.0;" x1="75" x2="75" y1="40.2969" y2="376.4922"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:5.0,5.0;" x1="233" x2="233" y1="40.2969" y2="376.4922"/><rect fill="#FEFECE" filter="url(#fswn2kptcr76g)" height="30.2969" style="stroke:#A80036;stroke-width:1.5;" width="137" x="5" y="5"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="123" x="12" y="24.9951">Autor (asynchron)</text><rect fill="#FEFECE" filter="url(#fswn2kptcr76g)" height="30.2969" style="stroke:#A80036;stroke-width:1.5;" width="137" x="5" y="375.4922"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="123" x="12" y="395.4873">Autor (asynchron)</text><rect fill="#90EE90" filter="url(#fswn2kptcr76g)" height="30.2969" style="stroke:#A80036;stroke-width:1.5;" width="150" x="156" y="5"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="136" x="163" y="24.9951">Sender (asynchron)</text><rect fill="#90EE90" filter="url(#fswn2kptcr76g)" height="30.2969" style="stroke:#A80036;stroke-width:1.5;" width="150" x="156" y="375.4922"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="136" x="163" y="395.4873">Sender (asynchron)</text><rect fill="#FFFFFF" filter="url(#fswn2kptcr76g)" height="317.1953" style="stroke:#A80036;stroke-width:1.0;" width="10" x="70.5" y="50.2969"/><rect fill="#FFFFFF" filter="url(#fswn2kptcr76g)" height="26.5664" style="stroke:#A80036;stroke-width:1.0;" width="10" x="228" y="83.9961"/><rect fill="#FFFFFF" filter="url(#fswn2kptcr76g)" height="26.5664" style="stroke:#A80036;stroke-width:1.0;" width="10" x="228" y="152.2617"/><rect fill="#FFFFFF" filter="url(#fswn2kptcr76g)" height="14" style="stroke:#A80036;stroke-width:1.0;" width="10" x="228" y="207.9609"/><rect fill="#FFFFFF" filter="url(#fswn2kptcr76g)" height="26.5664" style="stroke:#A80036;stroke-width:1.0;" width="10" x="228" y="263.6602"/><rect fill="#FFFFFF" filter="url(#fswn2kptcr76g)" height="26.5664" style="stroke:#A80036;stroke-width:1.0;" width="10" x="228" y="331.9258"/><polygon fill="#A80036" points="216,79.9961,226,83.9961,216,87.9961,220,83.9961" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="80.5" x2="222" y1="83.9961" y2="83.9961"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="128" x="87.5" y="78.9302">checkAccountActive</text><path d="M243,55.2969 L243,95.2969 L449,95.2969 L449,65.2969 L439,55.2969 L243,55.2969 " fill="#FBFB77" filter="url(#fswn2kptcr76g)" style="stroke:#A80036;stroke-width:1.0;"/><path d="M439,55.2969 L439,65.2969 L449,65.2969 L439,55.2969 " fill="#FBFB77" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="167" x="249" y="72.3638">muss zu einem beliebigen</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="185" x="249" y="87.4966">Zeitpunkt aufgerufen werden</text><polygon fill="#A80036" points="91.5,106.5625,81.5,110.5625,91.5,114.5625,87.5,110.5625" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="85.5" x2="232" y1="110.5625" y2="110.5625"/><polygon fill="#A80036" points="216,148.2617,226,152.2617,216,156.2617,220,152.2617" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="80.5" x2="222" y1="152.2617" y2="152.2617"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="89" x="87.5" y="147.1958">lookupService</text><path d="M243,123.5625 L243,163.5625 L449,163.5625 L449,133.5625 L439,123.5625 L243,123.5625 " fill="#FBFB77" filter="url(#fswn2kptcr76g)" style="stroke:#A80036;stroke-width:1.0;"/><path d="M439,123.5625 L439,133.5625 L449,133.5625 L439,123.5625 " fill="#FBFB77" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="167" x="249" y="140.6294">muss zu einem beliebigen</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="185" x="249" y="155.7622">Zeitpunkt aufgerufen werden</text><polygon fill="#A80036" points="91.5,174.8281,81.5,178.8281,91.5,182.8281,87.5,178.8281" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="85.5" x2="232" y1="178.8281" y2="178.8281"/><polygon fill="#A80036" points="216,203.9609,226,207.9609,216,211.9609,220,207.9609" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="80.5" x2="222" y1="207.9609" y2="207.9609"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="111" x="87.5" y="202.895">createMessageID</text><polygon fill="#A80036" points="91.5,217.9609,81.5,221.9609,91.5,225.9609,87.5,221.9609" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="85.5" x2="232" y1="221.9609" y2="221.9609"/><polygon fill="#A80036" points="216,259.6602,226,263.6602,216,267.6602,220,263.6602" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="80.5" x2="222" y1="263.6602" y2="263.6602"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="88" x="87.5" y="258.5942">sendMessage</text><path d="M243,234.9609 L243,274.9609 L453,274.9609 L453,244.9609 L443,234.9609 L243,234.9609 " fill="#FBFB77" filter="url(#fswn2kptcr76g)" style="stroke:#A80036;stroke-width:1.0;"/><path d="M443,234.9609 L443,244.9609 L453,244.9609 L443,234.9609 " fill="#FBFB77" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="185" x="249" y="252.0278">muss nach createMessageID</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="119" x="249" y="267.1606">aufgerufen werden</text><polygon fill="#A80036" points="91.5,286.2266,81.5,290.2266,91.5,294.2266,87.5,290.2266" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="85.5" x2="232" y1="290.2266" y2="290.2266"/><polygon fill="#A80036" points="216,327.9258,226,331.9258,216,335.9258,220,331.9258" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="80.5" x2="222" y1="331.9258" y2="331.9258"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="124" x="87.5" y="326.8599">getTransportReport</text><path d="M243,303.2266 L243,343.2266 L426,343.2266 L426,313.2266 L416,303.2266 L243,303.2266 " fill="#FBFB77" filter="url(#fswn2kptcr76g)" style="stroke:#A80036;stroke-width:1.0;"/><path d="M416,303.2266 L416,313.2266 L426,313.2266 L416,303.2266 " fill="#FBFB77" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="162" x="249" y="320.2935">muss nach sendMessage</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="119" x="249" y="335.4263">aufgerufen werden</text><polygon fill="#A80036" points="91.5,354.4922,81.5,358.4922,91.5,362.4922,87.5,358.4922" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="85.5" x2="232" y1="358.4922" y2="358.4922"/><!--MD5=[3e9668f7f6edc98616711782f94f09ff]
-@startuml
-participant "Autor (asynchron)" as autor
-participant "Sender (asynchron)" as sender #LightGreen
-
-activate autor
-
-autor -> sender: checkAccountActive
-note right 
-muss zu einem beliebigen 
-Zeitpunkt aufgerufen werden
-end note
-activate sender
-return
-
-autor -> sender: lookupService
-note right 
-muss zu einem beliebigen 
-Zeitpunkt aufgerufen werden
-end note
-activate sender
-return
-
-autor -> sender: createMessageID
-activate sender
-return
-
-autor -> sender: sendMessage
-note right
-muss nach createMessageID 
-aufgerufen werden
-end note
-activate sender
-return
-
-autor -> sender: getTransportReport
-note right
-muss nach sendMessage
-aufgerufen werden
-end note
-activate sender
-return
-@enduml
-
-PlantUML version 1.2022.1(Tue Feb 01 19:19:58 CET 2022)
-(GPL source distribution)
-Java Runtime: OpenJDK Runtime Environment
-JVM: OpenJDK 64-Bit Server VM
-Default Encoding: UTF-8
-Language: en
-Country: null
---></g></svg>
\ No newline at end of file
diff --git a/doc/puml/autor_synchron.puml b/doc/puml/autor_synchron.puml
deleted file mode 100644
index e9b8c089a28b65a0b5609991994ad213c35faec0..0000000000000000000000000000000000000000
--- a/doc/puml/autor_synchron.puml
+++ /dev/null
@@ -1,42 +0,0 @@
-@startuml
-participant "Autor (synchron)" as autor
-participant "Sender (synchron)" as sender  #LightGreen
-
-activate autor
-
-autor -> sender: checkAccountActive
-note right 
-muss zu einem beliebigen 
-Zeitpunkt aufgerufen werden
-end note
-activate sender
-return
-
-autor -> sender: lookupService
-note right 
-muss zu einem beliebigen 
-Zeitpunkt aufgerufen werden
-end note
-activate sender
-return
-
-autor -> sender: createMessageID
-activate sender
-return
-
-autor -> sender: sendMessageSync
-note right
-muss nach createMessageID 
-aufgerufen werden
-end note
-activate sender
-return
-
-autor -> sender: getTransportReport
-note right
-muss nach sendMessageSync
-aufgerufen werden
-end note
-activate sender
-return
-@enduml
\ No newline at end of file
diff --git a/doc/puml/autor_synchron.svg b/doc/puml/autor_synchron.svg
deleted file mode 100644
index 2357426d9ca2438ad9accf3f9ba87f6e622eac7f..0000000000000000000000000000000000000000
--- a/doc/puml/autor_synchron.svg
+++ /dev/null
@@ -1,52 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="419px" preserveAspectRatio="none" style="width:461px;height:419px;background:#FFFFFF;" version="1.1" viewBox="0 0 461 419" width="461px" zoomAndPan="magnify"><defs><filter height="300%" id="fz4oqj3uzuxcy" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><rect fill="#FFFFFF" filter="url(#fz4oqj3uzuxcy)" height="317.1953" style="stroke:#A80036;stroke-width:1.0;" width="10" x="66.5" y="50.2969"/><rect fill="#FFFFFF" filter="url(#fz4oqj3uzuxcy)" height="26.5664" style="stroke:#A80036;stroke-width:1.0;" width="10" x="223.5" y="83.9961"/><rect fill="#FFFFFF" filter="url(#fz4oqj3uzuxcy)" height="26.5664" style="stroke:#A80036;stroke-width:1.0;" width="10" x="223.5" y="152.2617"/><rect fill="#FFFFFF" filter="url(#fz4oqj3uzuxcy)" height="14" style="stroke:#A80036;stroke-width:1.0;" width="10" x="223.5" y="207.9609"/><rect fill="#FFFFFF" filter="url(#fz4oqj3uzuxcy)" height="26.5664" style="stroke:#A80036;stroke-width:1.0;" width="10" x="223.5" y="263.6602"/><rect fill="#FFFFFF" filter="url(#fz4oqj3uzuxcy)" height="26.5664" style="stroke:#A80036;stroke-width:1.0;" width="10" x="223.5" y="331.9258"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:5.0,5.0;" x1="71" x2="71" y1="40.2969" y2="376.4922"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:5.0,5.0;" x1="228.5" x2="228.5" y1="40.2969" y2="376.4922"/><rect fill="#FEFECE" filter="url(#fz4oqj3uzuxcy)" height="30.2969" style="stroke:#A80036;stroke-width:1.5;" width="129" x="5" y="5"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="115" x="12" y="24.9951">Autor (synchron)</text><rect fill="#FEFECE" filter="url(#fz4oqj3uzuxcy)" height="30.2969" style="stroke:#A80036;stroke-width:1.5;" width="129" x="5" y="375.4922"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="115" x="12" y="395.4873">Autor (synchron)</text><rect fill="#90EE90" filter="url(#fz4oqj3uzuxcy)" height="30.2969" style="stroke:#A80036;stroke-width:1.5;" width="142" x="155.5" y="5"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="128" x="162.5" y="24.9951">Sender (synchron)</text><rect fill="#90EE90" filter="url(#fz4oqj3uzuxcy)" height="30.2969" style="stroke:#A80036;stroke-width:1.5;" width="142" x="155.5" y="375.4922"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="128" x="162.5" y="395.4873">Sender (synchron)</text><rect fill="#FFFFFF" filter="url(#fz4oqj3uzuxcy)" height="317.1953" style="stroke:#A80036;stroke-width:1.0;" width="10" x="66.5" y="50.2969"/><rect fill="#FFFFFF" filter="url(#fz4oqj3uzuxcy)" height="26.5664" style="stroke:#A80036;stroke-width:1.0;" width="10" x="223.5" y="83.9961"/><rect fill="#FFFFFF" filter="url(#fz4oqj3uzuxcy)" height="26.5664" style="stroke:#A80036;stroke-width:1.0;" width="10" x="223.5" y="152.2617"/><rect fill="#FFFFFF" filter="url(#fz4oqj3uzuxcy)" height="14" style="stroke:#A80036;stroke-width:1.0;" width="10" x="223.5" y="207.9609"/><rect fill="#FFFFFF" filter="url(#fz4oqj3uzuxcy)" height="26.5664" style="stroke:#A80036;stroke-width:1.0;" width="10" x="223.5" y="263.6602"/><rect fill="#FFFFFF" filter="url(#fz4oqj3uzuxcy)" height="26.5664" style="stroke:#A80036;stroke-width:1.0;" width="10" x="223.5" y="331.9258"/><polygon fill="#A80036" points="211.5,79.9961,221.5,83.9961,211.5,87.9961,215.5,83.9961" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="76.5" x2="217.5" y1="83.9961" y2="83.9961"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="128" x="83.5" y="78.9302">checkAccountActive</text><path d="M238,55.2969 L238,95.2969 L444,95.2969 L444,65.2969 L434,55.2969 L238,55.2969 " fill="#FBFB77" filter="url(#fz4oqj3uzuxcy)" style="stroke:#A80036;stroke-width:1.0;"/><path d="M434,55.2969 L434,65.2969 L444,65.2969 L434,55.2969 " fill="#FBFB77" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="167" x="244" y="72.3638">muss zu einem beliebigen</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="185" x="244" y="87.4966">Zeitpunkt aufgerufen werden</text><polygon fill="#A80036" points="87.5,106.5625,77.5,110.5625,87.5,114.5625,83.5,110.5625" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="81.5" x2="227.5" y1="110.5625" y2="110.5625"/><polygon fill="#A80036" points="211.5,148.2617,221.5,152.2617,211.5,156.2617,215.5,152.2617" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="76.5" x2="217.5" y1="152.2617" y2="152.2617"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="89" x="83.5" y="147.1958">lookupService</text><path d="M238,123.5625 L238,163.5625 L444,163.5625 L444,133.5625 L434,123.5625 L238,123.5625 " fill="#FBFB77" filter="url(#fz4oqj3uzuxcy)" style="stroke:#A80036;stroke-width:1.0;"/><path d="M434,123.5625 L434,133.5625 L444,133.5625 L434,123.5625 " fill="#FBFB77" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="167" x="244" y="140.6294">muss zu einem beliebigen</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="185" x="244" y="155.7622">Zeitpunkt aufgerufen werden</text><polygon fill="#A80036" points="87.5,174.8281,77.5,178.8281,87.5,182.8281,83.5,178.8281" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="81.5" x2="227.5" y1="178.8281" y2="178.8281"/><polygon fill="#A80036" points="211.5,203.9609,221.5,207.9609,211.5,211.9609,215.5,207.9609" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="76.5" x2="217.5" y1="207.9609" y2="207.9609"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="111" x="83.5" y="202.895">createMessageID</text><polygon fill="#A80036" points="87.5,217.9609,77.5,221.9609,87.5,225.9609,83.5,221.9609" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="81.5" x2="227.5" y1="221.9609" y2="221.9609"/><polygon fill="#A80036" points="211.5,259.6602,221.5,263.6602,211.5,267.6602,215.5,263.6602" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="76.5" x2="217.5" y1="263.6602" y2="263.6602"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="119" x="83.5" y="258.5942">sendMessageSync</text><path d="M238,234.9609 L238,274.9609 L448,274.9609 L448,244.9609 L438,234.9609 L238,234.9609 " fill="#FBFB77" filter="url(#fz4oqj3uzuxcy)" style="stroke:#A80036;stroke-width:1.0;"/><path d="M438,234.9609 L438,244.9609 L448,244.9609 L438,234.9609 " fill="#FBFB77" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="185" x="244" y="252.0278">muss nach createMessageID</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="119" x="244" y="267.1606">aufgerufen werden</text><polygon fill="#A80036" points="87.5,286.2266,77.5,290.2266,87.5,294.2266,83.5,290.2266" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="81.5" x2="227.5" y1="290.2266" y2="290.2266"/><polygon fill="#A80036" points="211.5,327.9258,221.5,331.9258,211.5,335.9258,215.5,331.9258" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="76.5" x2="217.5" y1="331.9258" y2="331.9258"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="124" x="83.5" y="326.8599">getTransportReport</text><path d="M238,303.2266 L238,343.2266 L452,343.2266 L452,313.2266 L442,303.2266 L238,303.2266 " fill="#FBFB77" filter="url(#fz4oqj3uzuxcy)" style="stroke:#A80036;stroke-width:1.0;"/><path d="M442,303.2266 L442,313.2266 L452,313.2266 L442,303.2266 " fill="#FBFB77" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="193" x="244" y="320.2935">muss nach sendMessageSync</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="119" x="244" y="335.4263">aufgerufen werden</text><polygon fill="#A80036" points="87.5,354.4922,77.5,358.4922,87.5,362.4922,83.5,358.4922" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="81.5" x2="227.5" y1="358.4922" y2="358.4922"/><!--MD5=[06a445e86b855713deee913b1e87020a]
-@startuml
-participant "Autor (synchron)" as autor
-participant "Sender (synchron)" as sender  #LightGreen
-
-activate autor
-
-autor -> sender: checkAccountActive
-note right 
-muss zu einem beliebigen 
-Zeitpunkt aufgerufen werden
-end note
-activate sender
-return
-
-autor -> sender: lookupService
-note right 
-muss zu einem beliebigen 
-Zeitpunkt aufgerufen werden
-end note
-activate sender
-return
-
-autor -> sender: createMessageID
-activate sender
-return
-
-autor -> sender: sendMessageSync
-note right
-muss nach createMessageID 
-aufgerufen werden
-end note
-activate sender
-return
-
-autor -> sender: getTransportReport
-note right
-muss nach sendMessageSync
-aufgerufen werden
-end note
-activate sender
-return
-@enduml
-
-PlantUML version 1.2022.1(Tue Feb 01 19:19:58 CET 2022)
-(GPL source distribution)
-Java Runtime: OpenJDK Runtime Environment
-JVM: OpenJDK 64-Bit Server VM
-Default Encoding: UTF-8
-Language: en
-Country: null
---></g></svg>
\ No newline at end of file
diff --git a/doc/puml/empfaenger_asynchron.puml b/doc/puml/empfaenger_asynchron.puml
deleted file mode 100644
index 2e97129f4443a1e8c525369c942627c536ad4a82..0000000000000000000000000000000000000000
--- a/doc/puml/empfaenger_asynchron.puml
+++ /dev/null
@@ -1,45 +0,0 @@
-@startuml
-participant "Leser (asynchron)" as leser #LightGreen
-participant "Empfänger (asynchron)" as empfaenger
-
-activate leser
-
-leser -> empfaenger: checkAccountActive
-note right 
-muss zu einem beliebigen 
-Zeitpunkt aufgerufen werden
-end note
-activate empfaenger
-return
-
-leser -> empfaenger: getStatusList
-activate empfaenger
-return
-
-
-leser -> empfaenger: getMessage
-note right
-muss nach getStatusList
-aufgerufen werden
-end note
-activate empfaenger
-return
-
-leser -> empfaenger: close
-note right
-muss nach getMessage
-aufgerufen werden
-end note
-activate empfaenger
-return
-
-leser -> empfaenger: getTransportReport
-note right 
-muss zu einem beliebigen
-Zeitpunkt nach getStatusList
-aufgerufen werden
-end note
-activate empfaenger
-return
-
-@enduml
\ No newline at end of file
diff --git a/doc/puml/empfaenger_asynchron.svg b/doc/puml/empfaenger_asynchron.svg
deleted file mode 100644
index 04bc7629cbda421d44cc158a974eac17f55da856..0000000000000000000000000000000000000000
--- a/doc/puml/empfaenger_asynchron.svg
+++ /dev/null
@@ -1,55 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="434px" preserveAspectRatio="none" style="width:472px;height:434px;background:#FFFFFF;" version="1.1" viewBox="0 0 472 434" width="472px" zoomAndPan="magnify"><defs><filter height="300%" id="fi2wohm1vh7gq" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><rect fill="#FFFFFF" filter="url(#fi2wohm1vh7gq)" height="332.3281" style="stroke:#A80036;stroke-width:1.0;" width="10" x="71" y="50.2969"/><rect fill="#FFFFFF" filter="url(#fi2wohm1vh7gq)" height="26.5664" style="stroke:#A80036;stroke-width:1.0;" width="10" x="241.5" y="83.9961"/><rect fill="#FFFFFF" filter="url(#fi2wohm1vh7gq)" height="14" style="stroke:#A80036;stroke-width:1.0;" width="10" x="241.5" y="139.6953"/><rect fill="#FFFFFF" filter="url(#fi2wohm1vh7gq)" height="26.5664" style="stroke:#A80036;stroke-width:1.0;" width="10" x="241.5" y="195.3945"/><rect fill="#FFFFFF" filter="url(#fi2wohm1vh7gq)" height="26.5664" style="stroke:#A80036;stroke-width:1.0;" width="10" x="241.5" y="263.6602"/><rect fill="#FFFFFF" filter="url(#fi2wohm1vh7gq)" height="34.1328" style="stroke:#A80036;stroke-width:1.0;" width="10" x="241.5" y="339.4922"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:5.0,5.0;" x1="76" x2="76" y1="40.2969" y2="391.625"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:5.0,5.0;" x1="246" x2="246" y1="40.2969" y2="391.625"/><rect fill="#90EE90" filter="url(#fi2wohm1vh7gq)" height="30.2969" style="stroke:#A80036;stroke-width:1.5;" width="138" x="5" y="5"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="124" x="12" y="24.9951">Leser (asynchron)</text><rect fill="#90EE90" filter="url(#fi2wohm1vh7gq)" height="30.2969" style="stroke:#A80036;stroke-width:1.5;" width="138" x="5" y="390.625"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="124" x="12" y="410.6201">Leser (asynchron)</text><rect fill="#FEFECE" filter="url(#fi2wohm1vh7gq)" height="30.2969" style="stroke:#A80036;stroke-width:1.5;" width="175" x="157" y="5"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="161" x="164" y="24.9951">Empfänger (asynchron)</text><rect fill="#FEFECE" filter="url(#fi2wohm1vh7gq)" height="30.2969" style="stroke:#A80036;stroke-width:1.5;" width="175" x="157" y="390.625"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="161" x="164" y="410.6201">Empfänger (asynchron)</text><rect fill="#FFFFFF" filter="url(#fi2wohm1vh7gq)" height="332.3281" style="stroke:#A80036;stroke-width:1.0;" width="10" x="71" y="50.2969"/><rect fill="#FFFFFF" filter="url(#fi2wohm1vh7gq)" height="26.5664" style="stroke:#A80036;stroke-width:1.0;" width="10" x="241.5" y="83.9961"/><rect fill="#FFFFFF" filter="url(#fi2wohm1vh7gq)" height="14" style="stroke:#A80036;stroke-width:1.0;" width="10" x="241.5" y="139.6953"/><rect fill="#FFFFFF" filter="url(#fi2wohm1vh7gq)" height="26.5664" style="stroke:#A80036;stroke-width:1.0;" width="10" x="241.5" y="195.3945"/><rect fill="#FFFFFF" filter="url(#fi2wohm1vh7gq)" height="26.5664" style="stroke:#A80036;stroke-width:1.0;" width="10" x="241.5" y="263.6602"/><rect fill="#FFFFFF" filter="url(#fi2wohm1vh7gq)" height="34.1328" style="stroke:#A80036;stroke-width:1.0;" width="10" x="241.5" y="339.4922"/><polygon fill="#A80036" points="229.5,79.9961,239.5,83.9961,229.5,87.9961,233.5,83.9961" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="81" x2="235.5" y1="83.9961" y2="83.9961"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="128" x="88" y="78.9302">checkAccountActive</text><path d="M256,55.2969 L256,95.2969 L462,95.2969 L462,65.2969 L452,55.2969 L256,55.2969 " fill="#FBFB77" filter="url(#fi2wohm1vh7gq)" style="stroke:#A80036;stroke-width:1.0;"/><path d="M452,55.2969 L452,65.2969 L462,65.2969 L452,55.2969 " fill="#FBFB77" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="167" x="262" y="72.3638">muss zu einem beliebigen</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="185" x="262" y="87.4966">Zeitpunkt aufgerufen werden</text><polygon fill="#A80036" points="92,106.5625,82,110.5625,92,114.5625,88,110.5625" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="86" x2="245.5" y1="110.5625" y2="110.5625"/><polygon fill="#A80036" points="229.5,135.6953,239.5,139.6953,229.5,143.6953,233.5,139.6953" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="81" x2="235.5" y1="139.6953" y2="139.6953"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="85" x="88" y="134.6294">getStatusList</text><polygon fill="#A80036" points="92,149.6953,82,153.6953,92,157.6953,88,153.6953" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="86" x2="245.5" y1="153.6953" y2="153.6953"/><polygon fill="#A80036" points="229.5,191.3945,239.5,195.3945,229.5,199.3945,233.5,195.3945" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="81" x2="235.5" y1="195.3945" y2="195.3945"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="78" x="88" y="190.3286">getMessage</text><path d="M256,166.6953 L256,206.6953 L436,206.6953 L436,176.6953 L426,166.6953 L256,166.6953 " fill="#FBFB77" filter="url(#fi2wohm1vh7gq)" style="stroke:#A80036;stroke-width:1.0;"/><path d="M426,166.6953 L426,176.6953 L436,176.6953 L426,166.6953 " fill="#FBFB77" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="159" x="262" y="183.7622">muss nach getStatusList</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="119" x="262" y="198.895">aufgerufen werden</text><polygon fill="#A80036" points="92,217.9609,82,221.9609,92,225.9609,88,221.9609" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="86" x2="245.5" y1="221.9609" y2="221.9609"/><polygon fill="#A80036" points="229.5,259.6602,239.5,263.6602,229.5,267.6602,233.5,263.6602" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="81" x2="235.5" y1="263.6602" y2="263.6602"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="33" x="88" y="258.5942">close</text><path d="M256,234.9609 L256,274.9609 L429,274.9609 L429,244.9609 L419,234.9609 L256,234.9609 " fill="#FBFB77" filter="url(#fi2wohm1vh7gq)" style="stroke:#A80036;stroke-width:1.0;"/><path d="M419,234.9609 L419,244.9609 L429,244.9609 L419,234.9609 " fill="#FBFB77" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="152" x="262" y="252.0278">muss nach getMessage</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="119" x="262" y="267.1606">aufgerufen werden</text><polygon fill="#A80036" points="92,286.2266,82,290.2266,92,294.2266,88,290.2266" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="86" x2="245.5" y1="290.2266" y2="290.2266"/><polygon fill="#A80036" points="229.5,335.4922,239.5,339.4922,229.5,343.4922,233.5,339.4922" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="81" x2="235.5" y1="339.4922" y2="339.4922"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="124" x="88" y="334.4263">getTransportReport</text><path d="M256,303.2266 L256,358.2266 L463,358.2266 L463,313.2266 L453,303.2266 L256,303.2266 " fill="#FBFB77" filter="url(#fi2wohm1vh7gq)" style="stroke:#A80036;stroke-width:1.0;"/><path d="M453,303.2266 L453,313.2266 L463,313.2266 L453,303.2266 " fill="#FBFB77" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="167" x="262" y="320.2935">muss zu einem beliebigen</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="186" x="262" y="335.4263">Zeitpunkt nach getStatusList</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="119" x="262" y="350.5591">aufgerufen werden</text><polygon fill="#A80036" points="92,369.625,82,373.625,92,377.625,88,373.625" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="86" x2="245.5" y1="373.625" y2="373.625"/><!--MD5=[2eb86179027c1267d71a934b4e09d109]
-@startuml
-participant "Leser (asynchron)" as leser #LightGreen
-participant "Empfänger (asynchron)" as empfaenger
-
-activate leser
-
-leser -> empfaenger: checkAccountActive
-note right 
-muss zu einem beliebigen 
-Zeitpunkt aufgerufen werden
-end note
-activate empfaenger
-return
-
-leser -> empfaenger: getStatusList
-activate empfaenger
-return
-
-
-leser -> empfaenger: getMessage
-note right
-muss nach getStatusList
-aufgerufen werden
-end note
-activate empfaenger
-return
-
-leser -> empfaenger: close
-note right
-muss nach getMessage
-aufgerufen werden
-end note
-activate empfaenger
-return
-
-leser -> empfaenger: getTransportReport
-note right 
-muss zu einem beliebigen
-Zeitpunkt nach getStatusList
-aufgerufen werden
-end note
-activate empfaenger
-return
-
-@enduml
-
-PlantUML version 1.2022.1(Tue Feb 01 19:19:58 CET 2022)
-(GPL source distribution)
-Java Runtime: OpenJDK Runtime Environment
-JVM: OpenJDK 64-Bit Server VM
-Default Encoding: UTF-8
-Language: en
-Country: null
---></g></svg>
\ No newline at end of file
diff --git a/doc/puml/empfaenger_synchron.puml b/doc/puml/empfaenger_synchron.puml
deleted file mode 100644
index 7caadd5f3758b1fb4dfcadace943109b893f9685..0000000000000000000000000000000000000000
--- a/doc/puml/empfaenger_synchron.puml
+++ /dev/null
@@ -1,30 +0,0 @@
-@startuml
-participant "Empfänger (synchron)" as empfaenger
-participant "Leser (synchron)" as leser #LightGreen
-
-activate empfaenger
-
-empfaenger -> leser: sendMessageSync
-activate leser
-return
-
-
-
-leser -> empfaenger: checkAccountActive
-note right 
-muss zu einem beliebigen 
-Zeitpunkt aufgerufen werden
-end note
-activate empfaenger
-return 
-
-leser -> empfaenger: getTransportReport
-note right 
-muss zu einem beliebigen 
-Zeitpunkt nach sendMessageSync 
-aufgerufen werden
-end note
-activate empfaenger
-return
-
-@enduml
\ No newline at end of file
diff --git a/doc/puml/empfaenger_synchron.svg b/doc/puml/empfaenger_synchron.svg
deleted file mode 100644
index 9fc62dff9eb8aed800b95fb778a989ab9f2d7e65..0000000000000000000000000000000000000000
--- a/doc/puml/empfaenger_synchron.svg
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="298px" preserveAspectRatio="none" style="width:512px;height:298px;background:#FFFFFF;" version="1.1" viewBox="0 0 512 298" width="512px" zoomAndPan="magnify"><defs><filter height="300%" id="frkv4404e22h" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><rect fill="#FFFFFF" filter="url(#frkv4404e22h)" height="195.7969" style="stroke:#A80036;stroke-width:1.0;" width="10" x="85.5" y="50.2969"/><rect fill="#FFFFFF" filter="url(#frkv4404e22h)" height="26.5664" style="stroke:#A80036;stroke-width:1.0;" width="10" x="90.5" y="127.1289"/><rect fill="#FFFFFF" filter="url(#frkv4404e22h)" height="34.1328" style="stroke:#A80036;stroke-width:1.0;" width="10" x="90.5" y="202.9609"/><rect fill="#FFFFFF" filter="url(#frkv4404e22h)" height="14" style="stroke:#A80036;stroke-width:1.0;" width="10" x="248" y="71.4297"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:5.0,5.0;" x1="90" x2="90" y1="40.2969" y2="255.0938"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:5.0,5.0;" x1="253" x2="253" y1="40.2969" y2="255.0938"/><rect fill="#FEFECE" filter="url(#frkv4404e22h)" height="30.2969" style="stroke:#A80036;stroke-width:1.5;" width="167" x="5" y="5"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="153" x="12" y="24.9951">Empfänger (synchron)</text><rect fill="#FEFECE" filter="url(#frkv4404e22h)" height="30.2969" style="stroke:#A80036;stroke-width:1.5;" width="167" x="5" y="254.0938"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="153" x="12" y="274.0889">Empfänger (synchron)</text><rect fill="#90EE90" filter="url(#frkv4404e22h)" height="30.2969" style="stroke:#A80036;stroke-width:1.5;" width="130" x="186" y="5"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="116" x="193" y="24.9951">Leser (synchron)</text><rect fill="#90EE90" filter="url(#frkv4404e22h)" height="30.2969" style="stroke:#A80036;stroke-width:1.5;" width="130" x="186" y="254.0938"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="116" x="193" y="274.0889">Leser (synchron)</text><rect fill="#FFFFFF" filter="url(#frkv4404e22h)" height="195.7969" style="stroke:#A80036;stroke-width:1.0;" width="10" x="85.5" y="50.2969"/><rect fill="#FFFFFF" filter="url(#frkv4404e22h)" height="26.5664" style="stroke:#A80036;stroke-width:1.0;" width="10" x="90.5" y="127.1289"/><rect fill="#FFFFFF" filter="url(#frkv4404e22h)" height="34.1328" style="stroke:#A80036;stroke-width:1.0;" width="10" x="90.5" y="202.9609"/><rect fill="#FFFFFF" filter="url(#frkv4404e22h)" height="14" style="stroke:#A80036;stroke-width:1.0;" width="10" x="248" y="71.4297"/><polygon fill="#A80036" points="236,67.4297,246,71.4297,236,75.4297,240,71.4297" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="95.5" x2="242" y1="71.4297" y2="71.4297"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="119" x="102.5" y="66.3638">sendMessageSync</text><polygon fill="#A80036" points="106.5,81.4297,96.5,85.4297,106.5,89.4297,102.5,85.4297" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="100.5" x2="252" y1="85.4297" y2="85.4297"/><polygon fill="#A80036" points="111.5,123.1289,101.5,127.1289,111.5,131.1289,107.5,127.1289" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="105.5" x2="252" y1="127.1289" y2="127.1289"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="128" x="117.5" y="122.063">checkAccountActive</text><path d="M258,98.4297 L258,138.4297 L464,138.4297 L464,108.4297 L454,98.4297 L258,98.4297 " fill="#FBFB77" filter="url(#frkv4404e22h)" style="stroke:#A80036;stroke-width:1.0;"/><path d="M454,98.4297 L454,108.4297 L464,108.4297 L454,98.4297 " fill="#FBFB77" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="167" x="264" y="115.4966">muss zu einem beliebigen</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="185" x="264" y="130.6294">Zeitpunkt aufgerufen werden</text><polygon fill="#A80036" points="241,149.6953,251,153.6953,241,157.6953,245,153.6953" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="95.5" x2="247" y1="153.6953" y2="153.6953"/><polygon fill="#A80036" points="111.5,198.9609,101.5,202.9609,111.5,206.9609,107.5,202.9609" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="105.5" x2="252" y1="202.9609" y2="202.9609"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="124" x="117.5" y="197.895">getTransportReport</text><path d="M258,166.6953 L258,221.6953 L503,221.6953 L503,176.6953 L493,166.6953 L258,166.6953 " fill="#FBFB77" filter="url(#frkv4404e22h)" style="stroke:#A80036;stroke-width:1.0;"/><path d="M493,166.6953 L493,176.6953 L503,176.6953 L493,166.6953 " fill="#FBFB77" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="167" x="264" y="183.7622">muss zu einem beliebigen</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="220" x="264" y="198.895">Zeitpunkt nach sendMessageSync</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="119" x="264" y="214.0278">aufgerufen werden</text><polygon fill="#A80036" points="241,233.0938,251,237.0938,241,241.0938,245,237.0938" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="95.5" x2="247" y1="237.0938" y2="237.0938"/><!--MD5=[34bd8260e483dd05848a0dc4aa6abe5c]
-@startuml
-participant "Empfänger (synchron)" as empfaenger
-participant "Leser (synchron)" as leser #LightGreen
-
-activate empfaenger
-
-empfaenger -> leser: sendMessageSync
-activate leser
-return
-
-
-
-leser -> empfaenger: checkAccountActive
-note right 
-muss zu einem beliebigen 
-Zeitpunkt aufgerufen werden
-end note
-activate empfaenger
-return 
-
-leser -> empfaenger: getTransportReport
-note right 
-muss zu einem beliebigen 
-Zeitpunkt nach sendMessageSync 
-aufgerufen werden
-end note
-activate empfaenger
-return
-
-@enduml
-
-PlantUML version 1.2022.1(Tue Feb 01 19:19:58 CET 2022)
-(GPL source distribution)
-Java Runtime: OpenJDK Runtime Environment
-JVM: OpenJDK 64-Bit Server VM
-Default Encoding: UTF-8
-Language: en
-Country: null
---></g></svg>
\ No newline at end of file
diff --git a/doc/puml/leser_asynchron.puml b/doc/puml/leser_asynchron.puml
deleted file mode 100644
index bf50b1baef9a09f54180c3c7f7497ca191ef0b84..0000000000000000000000000000000000000000
--- a/doc/puml/leser_asynchron.puml
+++ /dev/null
@@ -1,42 +0,0 @@
-@startuml
-participant "Leser (asynchron)" as leser
-participant "Empfänger (asynchron)" as empfaenger #LightGreen
-activate leser
-
-leser -> empfaenger: checkAccountActive
-note right 
-muss zu einem beliebigen 
-Zeitpunkt aufgerufen werden
-end note
-activate empfaenger
-return
-
-leser -> empfaenger: getStatusList
-activate empfaenger
-return
-
-leser -> empfaenger: getMessage
-note right
-muss nach getStatusList
-aufgerufen werden
-end note
-activate empfaenger
-return
-
-leser -> empfaenger: close
-note right
-muss nach getMessage
-aufgerufen werden
-end note
-activate empfaenger
-return
-
-leser -> empfaenger: getTransportReport
-note right
-muss zu einem beliebigen
-Zeitpunkt nach getStatusList
-aufgerufen werden
-end note
-activate empfaenger
-return
-@enduml
\ No newline at end of file
diff --git a/doc/puml/leser_asynchron.svg b/doc/puml/leser_asynchron.svg
deleted file mode 100644
index e8a239a89184a06d041b51ab3f0314949a878279..0000000000000000000000000000000000000000
--- a/doc/puml/leser_asynchron.svg
+++ /dev/null
@@ -1,52 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="434px" preserveAspectRatio="none" style="width:472px;height:434px;background:#FFFFFF;" version="1.1" viewBox="0 0 472 434" width="472px" zoomAndPan="magnify"><defs><filter height="300%" id="fwb6a5b900ivh" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><rect fill="#FFFFFF" filter="url(#fwb6a5b900ivh)" height="332.3281" style="stroke:#A80036;stroke-width:1.0;" width="10" x="71" y="50.2969"/><rect fill="#FFFFFF" filter="url(#fwb6a5b900ivh)" height="26.5664" style="stroke:#A80036;stroke-width:1.0;" width="10" x="241.5" y="83.9961"/><rect fill="#FFFFFF" filter="url(#fwb6a5b900ivh)" height="14" style="stroke:#A80036;stroke-width:1.0;" width="10" x="241.5" y="139.6953"/><rect fill="#FFFFFF" filter="url(#fwb6a5b900ivh)" height="26.5664" style="stroke:#A80036;stroke-width:1.0;" width="10" x="241.5" y="195.3945"/><rect fill="#FFFFFF" filter="url(#fwb6a5b900ivh)" height="26.5664" style="stroke:#A80036;stroke-width:1.0;" width="10" x="241.5" y="263.6602"/><rect fill="#FFFFFF" filter="url(#fwb6a5b900ivh)" height="34.1328" style="stroke:#A80036;stroke-width:1.0;" width="10" x="241.5" y="339.4922"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:5.0,5.0;" x1="76" x2="76" y1="40.2969" y2="391.625"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:5.0,5.0;" x1="246" x2="246" y1="40.2969" y2="391.625"/><rect fill="#FEFECE" filter="url(#fwb6a5b900ivh)" height="30.2969" style="stroke:#A80036;stroke-width:1.5;" width="138" x="5" y="5"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="124" x="12" y="24.9951">Leser (asynchron)</text><rect fill="#FEFECE" filter="url(#fwb6a5b900ivh)" height="30.2969" style="stroke:#A80036;stroke-width:1.5;" width="138" x="5" y="390.625"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="124" x="12" y="410.6201">Leser (asynchron)</text><rect fill="#90EE90" filter="url(#fwb6a5b900ivh)" height="30.2969" style="stroke:#A80036;stroke-width:1.5;" width="175" x="157" y="5"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="161" x="164" y="24.9951">Empfänger (asynchron)</text><rect fill="#90EE90" filter="url(#fwb6a5b900ivh)" height="30.2969" style="stroke:#A80036;stroke-width:1.5;" width="175" x="157" y="390.625"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="161" x="164" y="410.6201">Empfänger (asynchron)</text><rect fill="#FFFFFF" filter="url(#fwb6a5b900ivh)" height="332.3281" style="stroke:#A80036;stroke-width:1.0;" width="10" x="71" y="50.2969"/><rect fill="#FFFFFF" filter="url(#fwb6a5b900ivh)" height="26.5664" style="stroke:#A80036;stroke-width:1.0;" width="10" x="241.5" y="83.9961"/><rect fill="#FFFFFF" filter="url(#fwb6a5b900ivh)" height="14" style="stroke:#A80036;stroke-width:1.0;" width="10" x="241.5" y="139.6953"/><rect fill="#FFFFFF" filter="url(#fwb6a5b900ivh)" height="26.5664" style="stroke:#A80036;stroke-width:1.0;" width="10" x="241.5" y="195.3945"/><rect fill="#FFFFFF" filter="url(#fwb6a5b900ivh)" height="26.5664" style="stroke:#A80036;stroke-width:1.0;" width="10" x="241.5" y="263.6602"/><rect fill="#FFFFFF" filter="url(#fwb6a5b900ivh)" height="34.1328" style="stroke:#A80036;stroke-width:1.0;" width="10" x="241.5" y="339.4922"/><polygon fill="#A80036" points="229.5,79.9961,239.5,83.9961,229.5,87.9961,233.5,83.9961" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="81" x2="235.5" y1="83.9961" y2="83.9961"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="128" x="88" y="78.9302">checkAccountActive</text><path d="M256,55.2969 L256,95.2969 L462,95.2969 L462,65.2969 L452,55.2969 L256,55.2969 " fill="#FBFB77" filter="url(#fwb6a5b900ivh)" style="stroke:#A80036;stroke-width:1.0;"/><path d="M452,55.2969 L452,65.2969 L462,65.2969 L452,55.2969 " fill="#FBFB77" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="167" x="262" y="72.3638">muss zu einem beliebigen</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="185" x="262" y="87.4966">Zeitpunkt aufgerufen werden</text><polygon fill="#A80036" points="92,106.5625,82,110.5625,92,114.5625,88,110.5625" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="86" x2="245.5" y1="110.5625" y2="110.5625"/><polygon fill="#A80036" points="229.5,135.6953,239.5,139.6953,229.5,143.6953,233.5,139.6953" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="81" x2="235.5" y1="139.6953" y2="139.6953"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="85" x="88" y="134.6294">getStatusList</text><polygon fill="#A80036" points="92,149.6953,82,153.6953,92,157.6953,88,153.6953" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="86" x2="245.5" y1="153.6953" y2="153.6953"/><polygon fill="#A80036" points="229.5,191.3945,239.5,195.3945,229.5,199.3945,233.5,195.3945" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="81" x2="235.5" y1="195.3945" y2="195.3945"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="78" x="88" y="190.3286">getMessage</text><path d="M256,166.6953 L256,206.6953 L436,206.6953 L436,176.6953 L426,166.6953 L256,166.6953 " fill="#FBFB77" filter="url(#fwb6a5b900ivh)" style="stroke:#A80036;stroke-width:1.0;"/><path d="M426,166.6953 L426,176.6953 L436,176.6953 L426,166.6953 " fill="#FBFB77" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="159" x="262" y="183.7622">muss nach getStatusList</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="119" x="262" y="198.895">aufgerufen werden</text><polygon fill="#A80036" points="92,217.9609,82,221.9609,92,225.9609,88,221.9609" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="86" x2="245.5" y1="221.9609" y2="221.9609"/><polygon fill="#A80036" points="229.5,259.6602,239.5,263.6602,229.5,267.6602,233.5,263.6602" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="81" x2="235.5" y1="263.6602" y2="263.6602"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="33" x="88" y="258.5942">close</text><path d="M256,234.9609 L256,274.9609 L429,274.9609 L429,244.9609 L419,234.9609 L256,234.9609 " fill="#FBFB77" filter="url(#fwb6a5b900ivh)" style="stroke:#A80036;stroke-width:1.0;"/><path d="M419,234.9609 L419,244.9609 L429,244.9609 L419,234.9609 " fill="#FBFB77" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="152" x="262" y="252.0278">muss nach getMessage</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="119" x="262" y="267.1606">aufgerufen werden</text><polygon fill="#A80036" points="92,286.2266,82,290.2266,92,294.2266,88,290.2266" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="86" x2="245.5" y1="290.2266" y2="290.2266"/><polygon fill="#A80036" points="229.5,335.4922,239.5,339.4922,229.5,343.4922,233.5,339.4922" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="81" x2="235.5" y1="339.4922" y2="339.4922"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="124" x="88" y="334.4263">getTransportReport</text><path d="M256,303.2266 L256,358.2266 L463,358.2266 L463,313.2266 L453,303.2266 L256,303.2266 " fill="#FBFB77" filter="url(#fwb6a5b900ivh)" style="stroke:#A80036;stroke-width:1.0;"/><path d="M453,303.2266 L453,313.2266 L463,313.2266 L453,303.2266 " fill="#FBFB77" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="167" x="262" y="320.2935">muss zu einem beliebigen</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="186" x="262" y="335.4263">Zeitpunkt nach getStatusList</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="119" x="262" y="350.5591">aufgerufen werden</text><polygon fill="#A80036" points="92,369.625,82,373.625,92,377.625,88,373.625" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="86" x2="245.5" y1="373.625" y2="373.625"/><!--MD5=[f29eba7c2c5fa9900c305b47517915d5]
-@startuml
-participant "Leser (asynchron)" as leser
-participant "Empfänger (asynchron)" as empfaenger #LightGreen
-activate leser
-
-leser -> empfaenger: checkAccountActive
-note right 
-muss zu einem beliebigen 
-Zeitpunkt aufgerufen werden
-end note
-activate empfaenger
-return
-
-leser -> empfaenger: getStatusList
-activate empfaenger
-return
-
-leser -> empfaenger: getMessage
-note right
-muss nach getStatusList
-aufgerufen werden
-end note
-activate empfaenger
-return
-
-leser -> empfaenger: close
-note right
-muss nach getMessage
-aufgerufen werden
-end note
-activate empfaenger
-return
-
-leser -> empfaenger: getTransportReport
-note right
-muss zu einem beliebigen
-Zeitpunkt nach getStatusList
-aufgerufen werden
-end note
-activate empfaenger
-return
-@enduml
-
-PlantUML version 1.2022.1(Tue Feb 01 19:19:58 CET 2022)
-(GPL source distribution)
-Java Runtime: OpenJDK Runtime Environment
-JVM: OpenJDK 64-Bit Server VM
-Default Encoding: UTF-8
-Language: en
-Country: null
---></g></svg>
\ No newline at end of file
diff --git a/doc/puml/leser_synchron.puml b/doc/puml/leser_synchron.puml
deleted file mode 100644
index 9c44c7e865d8c220b5e44c2c111cf8090900fc85..0000000000000000000000000000000000000000
--- a/doc/puml/leser_synchron.puml
+++ /dev/null
@@ -1,28 +0,0 @@
-@startuml
-participant "Empfänger (synchron)" as empfaenger #LightGreen
-participant "Leser (synchron)" as leser
-
-activate empfaenger
-
-empfaenger -> leser: sendMessageSync
-activate leser
-return
-
-leser -> empfaenger: checkAccountActive
-note right 
-muss zu einem beliebigen 
-Zeitpunkt aufgerufen werden
-end note
-activate empfaenger
-return 
-
-leser -> empfaenger: getTransportReport
-note right 
-muss zu einem beliebigen 
-Zeitpunkt nach sendMessageSync 
-aufgerufen werden
-end note
-activate empfaenger
-return
-
-@enduml
\ No newline at end of file
diff --git a/doc/puml/leser_synchron.svg b/doc/puml/leser_synchron.svg
deleted file mode 100644
index 50458edceba608869e10d375593ff92dd494edac..0000000000000000000000000000000000000000
--- a/doc/puml/leser_synchron.svg
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="298px" preserveAspectRatio="none" style="width:512px;height:298px;background:#FFFFFF;" version="1.1" viewBox="0 0 512 298" width="512px" zoomAndPan="magnify"><defs><filter height="300%" id="fuht812du4teb" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><rect fill="#FFFFFF" filter="url(#fuht812du4teb)" height="195.7969" style="stroke:#A80036;stroke-width:1.0;" width="10" x="85.5" y="50.2969"/><rect fill="#FFFFFF" filter="url(#fuht812du4teb)" height="26.5664" style="stroke:#A80036;stroke-width:1.0;" width="10" x="90.5" y="127.1289"/><rect fill="#FFFFFF" filter="url(#fuht812du4teb)" height="34.1328" style="stroke:#A80036;stroke-width:1.0;" width="10" x="90.5" y="202.9609"/><rect fill="#FFFFFF" filter="url(#fuht812du4teb)" height="14" style="stroke:#A80036;stroke-width:1.0;" width="10" x="248" y="71.4297"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:5.0,5.0;" x1="90" x2="90" y1="40.2969" y2="255.0938"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:5.0,5.0;" x1="253" x2="253" y1="40.2969" y2="255.0938"/><rect fill="#90EE90" filter="url(#fuht812du4teb)" height="30.2969" style="stroke:#A80036;stroke-width:1.5;" width="167" x="5" y="5"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="153" x="12" y="24.9951">Empfänger (synchron)</text><rect fill="#90EE90" filter="url(#fuht812du4teb)" height="30.2969" style="stroke:#A80036;stroke-width:1.5;" width="167" x="5" y="254.0938"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="153" x="12" y="274.0889">Empfänger (synchron)</text><rect fill="#FEFECE" filter="url(#fuht812du4teb)" height="30.2969" style="stroke:#A80036;stroke-width:1.5;" width="130" x="186" y="5"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="116" x="193" y="24.9951">Leser (synchron)</text><rect fill="#FEFECE" filter="url(#fuht812du4teb)" height="30.2969" style="stroke:#A80036;stroke-width:1.5;" width="130" x="186" y="254.0938"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="116" x="193" y="274.0889">Leser (synchron)</text><rect fill="#FFFFFF" filter="url(#fuht812du4teb)" height="195.7969" style="stroke:#A80036;stroke-width:1.0;" width="10" x="85.5" y="50.2969"/><rect fill="#FFFFFF" filter="url(#fuht812du4teb)" height="26.5664" style="stroke:#A80036;stroke-width:1.0;" width="10" x="90.5" y="127.1289"/><rect fill="#FFFFFF" filter="url(#fuht812du4teb)" height="34.1328" style="stroke:#A80036;stroke-width:1.0;" width="10" x="90.5" y="202.9609"/><rect fill="#FFFFFF" filter="url(#fuht812du4teb)" height="14" style="stroke:#A80036;stroke-width:1.0;" width="10" x="248" y="71.4297"/><polygon fill="#A80036" points="236,67.4297,246,71.4297,236,75.4297,240,71.4297" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="95.5" x2="242" y1="71.4297" y2="71.4297"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="119" x="102.5" y="66.3638">sendMessageSync</text><polygon fill="#A80036" points="106.5,81.4297,96.5,85.4297,106.5,89.4297,102.5,85.4297" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="100.5" x2="252" y1="85.4297" y2="85.4297"/><polygon fill="#A80036" points="111.5,123.1289,101.5,127.1289,111.5,131.1289,107.5,127.1289" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="105.5" x2="252" y1="127.1289" y2="127.1289"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="128" x="117.5" y="122.063">checkAccountActive</text><path d="M258,98.4297 L258,138.4297 L464,138.4297 L464,108.4297 L454,98.4297 L258,98.4297 " fill="#FBFB77" filter="url(#fuht812du4teb)" style="stroke:#A80036;stroke-width:1.0;"/><path d="M454,98.4297 L454,108.4297 L464,108.4297 L454,98.4297 " fill="#FBFB77" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="167" x="264" y="115.4966">muss zu einem beliebigen</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="185" x="264" y="130.6294">Zeitpunkt aufgerufen werden</text><polygon fill="#A80036" points="241,149.6953,251,153.6953,241,157.6953,245,153.6953" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="95.5" x2="247" y1="153.6953" y2="153.6953"/><polygon fill="#A80036" points="111.5,198.9609,101.5,202.9609,111.5,206.9609,107.5,202.9609" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="105.5" x2="252" y1="202.9609" y2="202.9609"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="124" x="117.5" y="197.895">getTransportReport</text><path d="M258,166.6953 L258,221.6953 L503,221.6953 L503,176.6953 L493,166.6953 L258,166.6953 " fill="#FBFB77" filter="url(#fuht812du4teb)" style="stroke:#A80036;stroke-width:1.0;"/><path d="M493,166.6953 L493,176.6953 L503,176.6953 L493,166.6953 " fill="#FBFB77" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="167" x="264" y="183.7622">muss zu einem beliebigen</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="220" x="264" y="198.895">Zeitpunkt nach sendMessageSync</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="119" x="264" y="214.0278">aufgerufen werden</text><polygon fill="#A80036" points="241,233.0938,251,237.0938,241,241.0938,245,237.0938" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="95.5" x2="247" y1="237.0938" y2="237.0938"/><!--MD5=[f0cdfba156cfdc4f3777fad0cc26b89a]
-@startuml
-participant "Empfänger (synchron)" as empfaenger #LightGreen
-participant "Leser (synchron)" as leser
-
-activate empfaenger
-
-empfaenger -> leser: sendMessageSync
-activate leser
-return
-
-leser -> empfaenger: checkAccountActive
-note right 
-muss zu einem beliebigen 
-Zeitpunkt aufgerufen werden
-end note
-activate empfaenger
-return 
-
-leser -> empfaenger: getTransportReport
-note right 
-muss zu einem beliebigen 
-Zeitpunkt nach sendMessageSync 
-aufgerufen werden
-end note
-activate empfaenger
-return
-
-@enduml
-
-PlantUML version 1.2022.1(Tue Feb 01 19:19:58 CET 2022)
-(GPL source distribution)
-Java Runtime: OpenJDK Runtime Environment
-JVM: OpenJDK 64-Bit Server VM
-Default Encoding: UTF-8
-Language: en
-Country: null
---></g></svg>
\ No newline at end of file
diff --git a/doc/puml/protokoll.puml b/doc/puml/protokoll.puml
deleted file mode 100644
index b3b89d1f805ed7e2db11e0eeb2b5cefabd20ae15..0000000000000000000000000000000000000000
--- a/doc/puml/protokoll.puml
+++ /dev/null
@@ -1,31 +0,0 @@
-@startuml
-!pragma layout smetana
-class XtaProtocol {
-  ProtocolMetadata metadata
-  List<ScenarioProtocol> scenarioProtocols
-}
-class ProtocolMetadata {
-}
-class ScenarioProtocol {
-  ScenarioDefinition scenarioDefinition
-  List<ScenarioProtocolEvent> scenarioProtocolEvents
-}
-class ScenarioDefinition {
-}
-class ScenarioEventDefinition {
-}
-class ScenarioProtocolEvent {
-  ScenarioEventDefinition eventDefinition
-  boolean partOfTheScenario
-  ScenarioProtocolEventResult eventResult
-}
-class ScenarioProtocolEventResult {
-}
-
-XtaProtocol --> "1" ProtocolMetadata
-XtaProtocol --> "0..*" ScenarioProtocol
-ScenarioProtocol --> "1" ScenarioDefinition
-ScenarioProtocol --> "1..*" ScenarioProtocolEvent
-ScenarioProtocolEvent --> "0..1" ScenarioEventDefinition
-ScenarioProtocolEvent --> "1" ScenarioProtocolEventResult
-@enduml
\ No newline at end of file
diff --git a/doc/puml/protokoll.svg b/doc/puml/protokoll.svg
deleted file mode 100644
index ecfdb874c7568a40c45edf23a51972272edffa0e..0000000000000000000000000000000000000000
--- a/doc/puml/protokoll.svg
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="416px" preserveAspectRatio="none" style="width:659px;height:416px;background:#FFFFFF;" version="1.1" viewBox="0 0 659 416" width="659px" zoomAndPan="magnify"><defs><filter height="300%" id="f14nitd8zcn7ga" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><!--MD5=[956640360af85837b3614180404f3392]
-class XtaProtocol--><rect codeLine="2" fill="#FEFECE" filter="url(#f14nitd8zcn7ga)" height="73.6094" id="XtaProtocol" style="stroke:#A80036;stroke-width:1.5;" width="252" x="76" y="12.6094"/><ellipse cx="161.75" cy="28.6094" fill="#ADD1B2" rx="11" ry="11" style="stroke:#A80036;stroke-width:1.0;"/><path d="M164.7188,34.25 Q164.1406,34.5469 163.5,34.6875 Q162.8594,34.8438 162.1563,34.8438 Q159.6563,34.8438 158.3281,33.2031 Q157.0156,31.5469 157.0156,28.4219 Q157.0156,25.2969 158.3281,23.6406 Q159.6563,21.9844 162.1563,21.9844 Q162.8594,21.9844 163.5,22.1406 Q164.1563,22.2969 164.7188,22.5938 L164.7188,25.3125 Q164.0938,24.7344 163.5,24.4688 Q162.9063,24.1875 162.2813,24.1875 Q160.9375,24.1875 160.25,25.2656 Q159.5625,26.3281 159.5625,28.4219 Q159.5625,30.5156 160.25,31.5938 Q160.9375,32.6563 162.2813,32.6563 Q162.9063,32.6563 163.5,32.3906 Q164.0938,32.1094 164.7188,31.5313 L164.7188,34.25 Z " fill="#000000"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="72" x="182.25" y="32.7637">XtaProtocol</text><line style="stroke:#A80036;stroke-width:1.5;" x1="77" x2="327" y1="44.6094" y2="44.6094"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="156" x="82" y="58.8198">ProtocolMetadata metadata</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="240" x="82" y="71.6245">List&lt;ScenarioProtocol&gt; scenarioProtocols</text><line style="stroke:#A80036;stroke-width:1.5;" x1="77" x2="327" y1="78.2188" y2="78.2188"/><!--MD5=[976b2aaf45a9c905fe74fd2f4e72ee12]
-class ProtocolMetadata--><rect codeLine="6" fill="#FEFECE" filter="url(#f14nitd8zcn7ga)" height="48" id="ProtocolMetadata" style="stroke:#A80036;stroke-width:1.5;" width="144" x="7" y="135.6094"/><ellipse cx="22" cy="151.6094" fill="#ADD1B2" rx="11" ry="11" style="stroke:#A80036;stroke-width:1.0;"/><path d="M24.9688,157.25 Q24.3906,157.5469 23.75,157.6875 Q23.1094,157.8438 22.4063,157.8438 Q19.9063,157.8438 18.5781,156.2031 Q17.2656,154.5469 17.2656,151.4219 Q17.2656,148.2969 18.5781,146.6406 Q19.9063,144.9844 22.4063,144.9844 Q23.1094,144.9844 23.75,145.1406 Q24.4063,145.2969 24.9688,145.5938 L24.9688,148.3125 Q24.3438,147.7344 23.75,147.4688 Q23.1563,147.1875 22.5313,147.1875 Q21.1875,147.1875 20.5,148.2656 Q19.8125,149.3281 19.8125,151.4219 Q19.8125,153.5156 20.5,154.5938 Q21.1875,155.6563 22.5313,155.6563 Q23.1563,155.6563 23.75,155.3906 Q24.3438,155.1094 24.9688,154.5313 L24.9688,157.25 Z " fill="#000000"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="112" x="36" y="155.7637">ProtocolMetadata</text><line style="stroke:#A80036;stroke-width:1.5;" x1="8" x2="150" y1="167.6094" y2="167.6094"/><line style="stroke:#A80036;stroke-width:1.5;" x1="8" x2="150" y1="175.6094" y2="175.6094"/><!--MD5=[a983a378462258ce6b13639e93f264bf]
-class ScenarioProtocol--><rect codeLine="8" fill="#FEFECE" filter="url(#f14nitd8zcn7ga)" height="73.6094" id="ScenarioProtocol" style="stroke:#A80036;stroke-width:1.5;" width="314" x="169" y="122.6094"/><ellipse cx="268.25" cy="138.6094" fill="#ADD1B2" rx="11" ry="11" style="stroke:#A80036;stroke-width:1.0;"/><path d="M271.2188,144.25 Q270.6406,144.5469 270,144.6875 Q269.3594,144.8438 268.6563,144.8438 Q266.1563,144.8438 264.8281,143.2031 Q263.5156,141.5469 263.5156,138.4219 Q263.5156,135.2969 264.8281,133.6406 Q266.1563,131.9844 268.6563,131.9844 Q269.3594,131.9844 270,132.1406 Q270.6563,132.2969 271.2188,132.5938 L271.2188,135.3125 Q270.5938,134.7344 270,134.4688 Q269.4063,134.1875 268.7813,134.1875 Q267.4375,134.1875 266.75,135.2656 Q266.0625,136.3281 266.0625,138.4219 Q266.0625,140.5156 266.75,141.5938 Q267.4375,142.6563 268.7813,142.6563 Q269.4063,142.6563 270,142.3906 Q270.5938,142.1094 271.2188,141.5313 L271.2188,144.25 Z " fill="#000000"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="107" x="288.75" y="142.7637">ScenarioProtocol</text><line style="stroke:#A80036;stroke-width:1.5;" x1="170" x2="482" y1="154.6094" y2="154.6094"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="209" x="175" y="168.8198">ScenarioDefinition scenarioDefinition</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="302" x="175" y="181.6245">List&lt;ScenarioProtocolEvent&gt; scenarioProtocolEvents</text><line style="stroke:#A80036;stroke-width:1.5;" x1="170" x2="482" y1="188.2188" y2="188.2188"/><!--MD5=[9948d5c94fcd17b46d9092490209d322]
-class ScenarioDefinition--><rect codeLine="12" fill="#FEFECE" filter="url(#f14nitd8zcn7ga)" height="48" id="ScenarioDefinition" style="stroke:#A80036;stroke-width:1.5;" width="146" x="146" y="251.6094"/><ellipse cx="161" cy="267.6094" fill="#ADD1B2" rx="11" ry="11" style="stroke:#A80036;stroke-width:1.0;"/><path d="M163.9688,273.25 Q163.3906,273.5469 162.75,273.6875 Q162.1094,273.8438 161.4063,273.8438 Q158.9063,273.8438 157.5781,272.2031 Q156.2656,270.5469 156.2656,267.4219 Q156.2656,264.2969 157.5781,262.6406 Q158.9063,260.9844 161.4063,260.9844 Q162.1094,260.9844 162.75,261.1406 Q163.4063,261.2969 163.9688,261.5938 L163.9688,264.3125 Q163.3438,263.7344 162.75,263.4688 Q162.1563,263.1875 161.5313,263.1875 Q160.1875,263.1875 159.5,264.2656 Q158.8125,265.3281 158.8125,267.4219 Q158.8125,269.5156 159.5,270.5938 Q160.1875,271.6563 161.5313,271.6563 Q162.1563,271.6563 162.75,271.3906 Q163.3438,271.1094 163.9688,270.5313 L163.9688,273.25 Z " fill="#000000"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="114" x="175" y="271.7637">ScenarioDefinition</text><line style="stroke:#A80036;stroke-width:1.5;" x1="147" x2="291" y1="283.6094" y2="283.6094"/><line style="stroke:#A80036;stroke-width:1.5;" x1="147" x2="291" y1="291.6094" y2="291.6094"/><!--MD5=[d51cf72de7635e958c0d6fb982633062]
-class ScenarioEventDefinition--><rect codeLine="14" fill="#FEFECE" filter="url(#f14nitd8zcn7ga)" height="48" id="ScenarioEventDefinition" style="stroke:#A80036;stroke-width:1.5;" width="181" x="233.5" y="354.6094"/><ellipse cx="248.5" cy="370.6094" fill="#ADD1B2" rx="11" ry="11" style="stroke:#A80036;stroke-width:1.0;"/><path d="M251.4688,376.25 Q250.8906,376.5469 250.25,376.6875 Q249.6094,376.8438 248.9063,376.8438 Q246.4063,376.8438 245.0781,375.2031 Q243.7656,373.5469 243.7656,370.4219 Q243.7656,367.2969 245.0781,365.6406 Q246.4063,363.9844 248.9063,363.9844 Q249.6094,363.9844 250.25,364.1406 Q250.9063,364.2969 251.4688,364.5938 L251.4688,367.3125 Q250.8438,366.7344 250.25,366.4688 Q249.6563,366.1875 249.0313,366.1875 Q247.6875,366.1875 247,367.2656 Q246.3125,368.3281 246.3125,370.4219 Q246.3125,372.5156 247,373.5938 Q247.6875,374.6563 249.0313,374.6563 Q249.6563,374.6563 250.25,374.3906 Q250.8438,374.1094 251.4688,373.5313 L251.4688,376.25 Z " fill="#000000"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="149" x="262.5" y="374.7637">ScenarioEventDefinition</text><line style="stroke:#A80036;stroke-width:1.5;" x1="234.5" x2="413.5" y1="386.6094" y2="386.6094"/><line style="stroke:#A80036;stroke-width:1.5;" x1="234.5" x2="413.5" y1="394.6094" y2="394.6094"/><!--MD5=[e613b82239d3482aaa7f0d587cef59c8]
-class ScenarioProtocolEvent--><rect codeLine="16" fill="#FEFECE" filter="url(#f14nitd8zcn7ga)" height="86.4141" id="ScenarioProtocolEvent" style="stroke:#A80036;stroke-width:1.5;" width="244" x="310" y="232.6094"/><ellipse cx="356.75" cy="248.6094" fill="#ADD1B2" rx="11" ry="11" style="stroke:#A80036;stroke-width:1.0;"/><path d="M359.7188,254.25 Q359.1406,254.5469 358.5,254.6875 Q357.8594,254.8438 357.1563,254.8438 Q354.6563,254.8438 353.3281,253.2031 Q352.0156,251.5469 352.0156,248.4219 Q352.0156,245.2969 353.3281,243.6406 Q354.6563,241.9844 357.1563,241.9844 Q357.8594,241.9844 358.5,242.1406 Q359.1563,242.2969 359.7188,242.5938 L359.7188,245.3125 Q359.0938,244.7344 358.5,244.4688 Q357.9063,244.1875 357.2813,244.1875 Q355.9375,244.1875 355.25,245.2656 Q354.5625,246.3281 354.5625,248.4219 Q354.5625,250.5156 355.25,251.5938 Q355.9375,252.6563 357.2813,252.6563 Q357.9063,252.6563 358.5,252.3906 Q359.0938,252.1094 359.7188,251.5313 L359.7188,254.25 Z " fill="#000000"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="142" x="377.25" y="252.7637">ScenarioProtocolEvent</text><line style="stroke:#A80036;stroke-width:1.5;" x1="311" x2="553" y1="264.6094" y2="264.6094"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="222" x="316" y="278.8198">ScenarioEventDefinition eventDefinition</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="156" x="316" y="291.6245">boolean partOfTheScenario</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="232" x="316" y="304.4292">ScenarioProtocolEventResult eventResult</text><line style="stroke:#A80036;stroke-width:1.5;" x1="311" x2="553" y1="311.0234" y2="311.0234"/><!--MD5=[533816cd4a4b4bf49ddb1bf3f87fabac]
-class ScenarioProtocolEventResult--><rect codeLine="21" fill="#FEFECE" filter="url(#f14nitd8zcn7ga)" height="48" id="ScenarioProtocolEventResult" style="stroke:#A80036;stroke-width:1.5;" width="213" x="432.5" y="354.6094"/><ellipse cx="447.5" cy="370.6094" fill="#ADD1B2" rx="11" ry="11" style="stroke:#A80036;stroke-width:1.0;"/><path d="M450.4688,376.25 Q449.8906,376.5469 449.25,376.6875 Q448.6094,376.8438 447.9063,376.8438 Q445.4063,376.8438 444.0781,375.2031 Q442.7656,373.5469 442.7656,370.4219 Q442.7656,367.2969 444.0781,365.6406 Q445.4063,363.9844 447.9063,363.9844 Q448.6094,363.9844 449.25,364.1406 Q449.9063,364.2969 450.4688,364.5938 L450.4688,367.3125 Q449.8438,366.7344 449.25,366.4688 Q448.6563,366.1875 448.0313,366.1875 Q446.6875,366.1875 446,367.2656 Q445.3125,368.3281 445.3125,370.4219 Q445.3125,372.5156 446,373.5938 Q446.6875,374.6563 448.0313,374.6563 Q448.6563,374.6563 449.25,374.3906 Q449.8438,374.1094 450.4688,373.5313 L450.4688,376.25 Z " fill="#000000"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="181" x="461.5" y="374.7637">ScenarioProtocolEventResult</text><line style="stroke:#A80036;stroke-width:1.5;" x1="433.5" x2="644.5" y1="386.6094" y2="386.6094"/><line style="stroke:#A80036;stroke-width:1.5;" x1="433.5" x2="644.5" y1="394.6094" y2="394.6094"/><path d="M160.7006,86.8723 C142.4155,102.9275 121.4502,121.336 105.3359,135.4852 " fill="none" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="105.3359,135.4852,114.738,132.5527,109.0931,132.1862,109.4596,126.5412,105.3359,135.4852" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="8" x="96.3359" y="131.5521">1</text><path d="M243.6352,86.8723 C256.7217,98.2703 271.1701,110.8543 284.2637,122.2584 " fill="none" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="284.2637,122.2584,280.104,113.331,280.4933,118.9745,274.8498,119.3637,284.2637,122.2584" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="23" x="260.2637" y="118.3253">0..*</text><path d="M292.1445,196.6797 C275.3686,214.5531 255.6002,235.6148 240.8466,251.3336 " fill="none" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="240.8466,251.3336,249.9225,247.5088,244.2684,247.6879,244.0893,242.0338,240.8466,251.3336" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="8" x="231.8466" y="247.4005">1</text><path d="M359.5391,196.6797 C370.0928,208.0299 381.8421,220.666 392.7554,232.4029 " fill="none" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="392.7554,232.4029,389.5563,223.0881,389.3507,228.7413,383.6976,228.5357,392.7554,232.4029" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="23" x="368.7554" y="228.4698">1..*</text><path d="M386.824,318.8573 C373.7607,331.0739 359.9893,343.9528 348.6801,354.5289 " fill="none" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="348.6801,354.5289,357.9856,351.3031,352.332,351.1137,352.5213,345.4601,348.6801,354.5289" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="24" x="323.6801" y="350.5958">0..1</text><path d="M476.7577,318.8573 C489.7,331.0739 503.344,343.9528 514.5485,354.5289 " fill="none" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="514.5485,354.5289,510.7493,345.4423,510.9125,351.0968,505.258,351.2599,514.5485,354.5289" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="8" x="505.5485" y="350.5958">1</text><!--MD5=[459ac5a8b084f9a9e3d3408a02f889ff]
-@startuml
-!pragma layout smetana
-class XtaProtocol {
-  ProtocolMetadata metadata
-  List<ScenarioProtocol> scenarioProtocols
-}
-class ProtocolMetadata {
-}
-class ScenarioProtocol {
-  ScenarioDefinition scenarioDefinition
-  List<ScenarioProtocolEvent> scenarioProtocolEvents
-}
-class ScenarioDefinition {
-}
-class ScenarioEventDefinition {
-}
-class ScenarioProtocolEvent {
-  ScenarioEventDefinition eventDefinition
-  boolean partOfTheScenario
-  ScenarioProtocolEventResult eventResult
-}
-class ScenarioProtocolEventResult {
-}
-
-XtaProtocol - -> "1" ProtocolMetadata
-XtaProtocol - -> "0..*" ScenarioProtocol
-ScenarioProtocol - -> "1" ScenarioDefinition
-ScenarioProtocol - -> "1..*" ScenarioProtocolEvent
-ScenarioProtocolEvent - -> "0..1" ScenarioEventDefinition
-ScenarioProtocolEvent - -> "1" ScenarioProtocolEventResult
-@enduml
-
-PlantUML version 1.2022.1(Tue Feb 01 19:19:58 CET 2022)
-(GPL source distribution)
-Java Runtime: OpenJDK Runtime Environment
-JVM: OpenJDK 64-Bit Server VM
-Default Encoding: UTF-8
-Language: en
-Country: null
---></g></svg>
\ No newline at end of file
diff --git a/doc/puml/sender_asynchron.puml b/doc/puml/sender_asynchron.puml
deleted file mode 100644
index db3e6f0550b20180e60a9a9a28caa4dfbc530ec3..0000000000000000000000000000000000000000
--- a/doc/puml/sender_asynchron.puml
+++ /dev/null
@@ -1,41 +0,0 @@
-@startuml
-participant "Autor (asynchron)" as autor #LightGreen
-participant "Sender (asynchron)" as sender
-activate autor
-
-autor -> sender: checkAccountActive
-note right 
-muss zu einem beliebigen 
-Zeitpunkt aufgerufen werden
-end note
-activate sender
-return
-
-autor -> sender: lookupService
-note right 
-muss zu einem beliebigen 
-Zeitpunkt aufgerufen werden
-end note
-activate sender
-return
-
-autor -> sender: createMessageID
-activate sender
-return
-
-autor -> sender: sendMessage
-note right
-muss nach createMessageID 
-aufgerufen werden
-end note
-activate sender
-return
-
-autor -> sender: getTransportReport
-note right
-muss nach sendMessage
-aufgerufen werden
-end note
-activate sender
-return
-@enduml
\ No newline at end of file
diff --git a/doc/puml/sender_asynchron.svg b/doc/puml/sender_asynchron.svg
deleted file mode 100644
index 70d412633103bc427a8aa8b1dce1da0cd56f44ed..0000000000000000000000000000000000000000
--- a/doc/puml/sender_asynchron.svg
+++ /dev/null
@@ -1,51 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="419px" preserveAspectRatio="none" style="width:462px;height:419px;background:#FFFFFF;" version="1.1" viewBox="0 0 462 419" width="462px" zoomAndPan="magnify"><defs><filter height="300%" id="f1bixwqvqtv3vv" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><rect fill="#FFFFFF" filter="url(#f1bixwqvqtv3vv)" height="317.1953" style="stroke:#A80036;stroke-width:1.0;" width="10" x="70.5" y="50.2969"/><rect fill="#FFFFFF" filter="url(#f1bixwqvqtv3vv)" height="26.5664" style="stroke:#A80036;stroke-width:1.0;" width="10" x="228" y="83.9961"/><rect fill="#FFFFFF" filter="url(#f1bixwqvqtv3vv)" height="26.5664" style="stroke:#A80036;stroke-width:1.0;" width="10" x="228" y="152.2617"/><rect fill="#FFFFFF" filter="url(#f1bixwqvqtv3vv)" height="14" style="stroke:#A80036;stroke-width:1.0;" width="10" x="228" y="207.9609"/><rect fill="#FFFFFF" filter="url(#f1bixwqvqtv3vv)" height="26.5664" style="stroke:#A80036;stroke-width:1.0;" width="10" x="228" y="263.6602"/><rect fill="#FFFFFF" filter="url(#f1bixwqvqtv3vv)" height="26.5664" style="stroke:#A80036;stroke-width:1.0;" width="10" x="228" y="331.9258"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:5.0,5.0;" x1="75" x2="75" y1="40.2969" y2="376.4922"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:5.0,5.0;" x1="233" x2="233" y1="40.2969" y2="376.4922"/><rect fill="#90EE90" filter="url(#f1bixwqvqtv3vv)" height="30.2969" style="stroke:#A80036;stroke-width:1.5;" width="137" x="5" y="5"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="123" x="12" y="24.9951">Autor (asynchron)</text><rect fill="#90EE90" filter="url(#f1bixwqvqtv3vv)" height="30.2969" style="stroke:#A80036;stroke-width:1.5;" width="137" x="5" y="375.4922"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="123" x="12" y="395.4873">Autor (asynchron)</text><rect fill="#FEFECE" filter="url(#f1bixwqvqtv3vv)" height="30.2969" style="stroke:#A80036;stroke-width:1.5;" width="150" x="156" y="5"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="136" x="163" y="24.9951">Sender (asynchron)</text><rect fill="#FEFECE" filter="url(#f1bixwqvqtv3vv)" height="30.2969" style="stroke:#A80036;stroke-width:1.5;" width="150" x="156" y="375.4922"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="136" x="163" y="395.4873">Sender (asynchron)</text><rect fill="#FFFFFF" filter="url(#f1bixwqvqtv3vv)" height="317.1953" style="stroke:#A80036;stroke-width:1.0;" width="10" x="70.5" y="50.2969"/><rect fill="#FFFFFF" filter="url(#f1bixwqvqtv3vv)" height="26.5664" style="stroke:#A80036;stroke-width:1.0;" width="10" x="228" y="83.9961"/><rect fill="#FFFFFF" filter="url(#f1bixwqvqtv3vv)" height="26.5664" style="stroke:#A80036;stroke-width:1.0;" width="10" x="228" y="152.2617"/><rect fill="#FFFFFF" filter="url(#f1bixwqvqtv3vv)" height="14" style="stroke:#A80036;stroke-width:1.0;" width="10" x="228" y="207.9609"/><rect fill="#FFFFFF" filter="url(#f1bixwqvqtv3vv)" height="26.5664" style="stroke:#A80036;stroke-width:1.0;" width="10" x="228" y="263.6602"/><rect fill="#FFFFFF" filter="url(#f1bixwqvqtv3vv)" height="26.5664" style="stroke:#A80036;stroke-width:1.0;" width="10" x="228" y="331.9258"/><polygon fill="#A80036" points="216,79.9961,226,83.9961,216,87.9961,220,83.9961" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="80.5" x2="222" y1="83.9961" y2="83.9961"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="128" x="87.5" y="78.9302">checkAccountActive</text><path d="M243,55.2969 L243,95.2969 L449,95.2969 L449,65.2969 L439,55.2969 L243,55.2969 " fill="#FBFB77" filter="url(#f1bixwqvqtv3vv)" style="stroke:#A80036;stroke-width:1.0;"/><path d="M439,55.2969 L439,65.2969 L449,65.2969 L439,55.2969 " fill="#FBFB77" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="167" x="249" y="72.3638">muss zu einem beliebigen</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="185" x="249" y="87.4966">Zeitpunkt aufgerufen werden</text><polygon fill="#A80036" points="91.5,106.5625,81.5,110.5625,91.5,114.5625,87.5,110.5625" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="85.5" x2="232" y1="110.5625" y2="110.5625"/><polygon fill="#A80036" points="216,148.2617,226,152.2617,216,156.2617,220,152.2617" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="80.5" x2="222" y1="152.2617" y2="152.2617"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="89" x="87.5" y="147.1958">lookupService</text><path d="M243,123.5625 L243,163.5625 L449,163.5625 L449,133.5625 L439,123.5625 L243,123.5625 " fill="#FBFB77" filter="url(#f1bixwqvqtv3vv)" style="stroke:#A80036;stroke-width:1.0;"/><path d="M439,123.5625 L439,133.5625 L449,133.5625 L439,123.5625 " fill="#FBFB77" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="167" x="249" y="140.6294">muss zu einem beliebigen</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="185" x="249" y="155.7622">Zeitpunkt aufgerufen werden</text><polygon fill="#A80036" points="91.5,174.8281,81.5,178.8281,91.5,182.8281,87.5,178.8281" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="85.5" x2="232" y1="178.8281" y2="178.8281"/><polygon fill="#A80036" points="216,203.9609,226,207.9609,216,211.9609,220,207.9609" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="80.5" x2="222" y1="207.9609" y2="207.9609"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="111" x="87.5" y="202.895">createMessageID</text><polygon fill="#A80036" points="91.5,217.9609,81.5,221.9609,91.5,225.9609,87.5,221.9609" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="85.5" x2="232" y1="221.9609" y2="221.9609"/><polygon fill="#A80036" points="216,259.6602,226,263.6602,216,267.6602,220,263.6602" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="80.5" x2="222" y1="263.6602" y2="263.6602"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="88" x="87.5" y="258.5942">sendMessage</text><path d="M243,234.9609 L243,274.9609 L453,274.9609 L453,244.9609 L443,234.9609 L243,234.9609 " fill="#FBFB77" filter="url(#f1bixwqvqtv3vv)" style="stroke:#A80036;stroke-width:1.0;"/><path d="M443,234.9609 L443,244.9609 L453,244.9609 L443,234.9609 " fill="#FBFB77" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="185" x="249" y="252.0278">muss nach createMessageID</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="119" x="249" y="267.1606">aufgerufen werden</text><polygon fill="#A80036" points="91.5,286.2266,81.5,290.2266,91.5,294.2266,87.5,290.2266" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="85.5" x2="232" y1="290.2266" y2="290.2266"/><polygon fill="#A80036" points="216,327.9258,226,331.9258,216,335.9258,220,331.9258" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="80.5" x2="222" y1="331.9258" y2="331.9258"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="124" x="87.5" y="326.8599">getTransportReport</text><path d="M243,303.2266 L243,343.2266 L426,343.2266 L426,313.2266 L416,303.2266 L243,303.2266 " fill="#FBFB77" filter="url(#f1bixwqvqtv3vv)" style="stroke:#A80036;stroke-width:1.0;"/><path d="M416,303.2266 L416,313.2266 L426,313.2266 L416,303.2266 " fill="#FBFB77" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="162" x="249" y="320.2935">muss nach sendMessage</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="119" x="249" y="335.4263">aufgerufen werden</text><polygon fill="#A80036" points="91.5,354.4922,81.5,358.4922,91.5,362.4922,87.5,358.4922" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="85.5" x2="232" y1="358.4922" y2="358.4922"/><!--MD5=[c033210371811984d26a6b88e81c87bd]
-@startuml
-participant "Autor (asynchron)" as autor #LightGreen
-participant "Sender (asynchron)" as sender
-activate autor
-
-autor -> sender: checkAccountActive
-note right 
-muss zu einem beliebigen 
-Zeitpunkt aufgerufen werden
-end note
-activate sender
-return
-
-autor -> sender: lookupService
-note right 
-muss zu einem beliebigen 
-Zeitpunkt aufgerufen werden
-end note
-activate sender
-return
-
-autor -> sender: createMessageID
-activate sender
-return
-
-autor -> sender: sendMessage
-note right
-muss nach createMessageID 
-aufgerufen werden
-end note
-activate sender
-return
-
-autor -> sender: getTransportReport
-note right
-muss nach sendMessage
-aufgerufen werden
-end note
-activate sender
-return
-@enduml
-
-PlantUML version 1.2022.1(Tue Feb 01 19:19:58 CET 2022)
-(GPL source distribution)
-Java Runtime: OpenJDK Runtime Environment
-JVM: OpenJDK 64-Bit Server VM
-Default Encoding: UTF-8
-Language: en
-Country: null
---></g></svg>
\ No newline at end of file
diff --git a/doc/puml/sender_synchron.puml b/doc/puml/sender_synchron.puml
deleted file mode 100644
index e92d1941522a7c687eaa6f31a100925d79ddc916..0000000000000000000000000000000000000000
--- a/doc/puml/sender_synchron.puml
+++ /dev/null
@@ -1,42 +0,0 @@
-@startuml
-participant "Autor (synchron)" as autor #LightGreen
-participant "Sender (synchron)" as sender
-
-activate autor
-
-autor -> sender: checkAccountActive
-note right 
-muss zu einem beliebigen 
-Zeitpunkt aufgerufen werden
-end note
-activate sender
-return
-
-autor -> sender: lookupService
-note right 
-muss zu einem beliebigen 
-Zeitpunkt aufgerufen werden
-end note
-activate sender
-return
-
-autor -> sender: createMessageID
-activate sender
-return
-
-autor -> sender: sendMessageSync
-note right
-muss nach createMessageID
-aufgerufen werden
-end note
-activate sender
-return
-
-autor -> sender: getTransportReport
-note right
-muss nach sendMessageSync
-aufgerufen werden
-end note
-activate sender
-return
-@enduml
\ No newline at end of file
diff --git a/doc/puml/sender_synchron.svg b/doc/puml/sender_synchron.svg
deleted file mode 100644
index 350920d2003202cee1e0614a22a9d9af172905b6..0000000000000000000000000000000000000000
--- a/doc/puml/sender_synchron.svg
+++ /dev/null
@@ -1,52 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="419px" preserveAspectRatio="none" style="width:461px;height:419px;background:#FFFFFF;" version="1.1" viewBox="0 0 461 419" width="461px" zoomAndPan="magnify"><defs><filter height="300%" id="fc99sy1wz923i" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><rect fill="#FFFFFF" filter="url(#fc99sy1wz923i)" height="317.1953" style="stroke:#A80036;stroke-width:1.0;" width="10" x="66.5" y="50.2969"/><rect fill="#FFFFFF" filter="url(#fc99sy1wz923i)" height="26.5664" style="stroke:#A80036;stroke-width:1.0;" width="10" x="223.5" y="83.9961"/><rect fill="#FFFFFF" filter="url(#fc99sy1wz923i)" height="26.5664" style="stroke:#A80036;stroke-width:1.0;" width="10" x="223.5" y="152.2617"/><rect fill="#FFFFFF" filter="url(#fc99sy1wz923i)" height="14" style="stroke:#A80036;stroke-width:1.0;" width="10" x="223.5" y="207.9609"/><rect fill="#FFFFFF" filter="url(#fc99sy1wz923i)" height="26.5664" style="stroke:#A80036;stroke-width:1.0;" width="10" x="223.5" y="263.6602"/><rect fill="#FFFFFF" filter="url(#fc99sy1wz923i)" height="26.5664" style="stroke:#A80036;stroke-width:1.0;" width="10" x="223.5" y="331.9258"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:5.0,5.0;" x1="71" x2="71" y1="40.2969" y2="376.4922"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:5.0,5.0;" x1="228.5" x2="228.5" y1="40.2969" y2="376.4922"/><rect fill="#90EE90" filter="url(#fc99sy1wz923i)" height="30.2969" style="stroke:#A80036;stroke-width:1.5;" width="129" x="5" y="5"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="115" x="12" y="24.9951">Autor (synchron)</text><rect fill="#90EE90" filter="url(#fc99sy1wz923i)" height="30.2969" style="stroke:#A80036;stroke-width:1.5;" width="129" x="5" y="375.4922"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="115" x="12" y="395.4873">Autor (synchron)</text><rect fill="#FEFECE" filter="url(#fc99sy1wz923i)" height="30.2969" style="stroke:#A80036;stroke-width:1.5;" width="142" x="155.5" y="5"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="128" x="162.5" y="24.9951">Sender (synchron)</text><rect fill="#FEFECE" filter="url(#fc99sy1wz923i)" height="30.2969" style="stroke:#A80036;stroke-width:1.5;" width="142" x="155.5" y="375.4922"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="128" x="162.5" y="395.4873">Sender (synchron)</text><rect fill="#FFFFFF" filter="url(#fc99sy1wz923i)" height="317.1953" style="stroke:#A80036;stroke-width:1.0;" width="10" x="66.5" y="50.2969"/><rect fill="#FFFFFF" filter="url(#fc99sy1wz923i)" height="26.5664" style="stroke:#A80036;stroke-width:1.0;" width="10" x="223.5" y="83.9961"/><rect fill="#FFFFFF" filter="url(#fc99sy1wz923i)" height="26.5664" style="stroke:#A80036;stroke-width:1.0;" width="10" x="223.5" y="152.2617"/><rect fill="#FFFFFF" filter="url(#fc99sy1wz923i)" height="14" style="stroke:#A80036;stroke-width:1.0;" width="10" x="223.5" y="207.9609"/><rect fill="#FFFFFF" filter="url(#fc99sy1wz923i)" height="26.5664" style="stroke:#A80036;stroke-width:1.0;" width="10" x="223.5" y="263.6602"/><rect fill="#FFFFFF" filter="url(#fc99sy1wz923i)" height="26.5664" style="stroke:#A80036;stroke-width:1.0;" width="10" x="223.5" y="331.9258"/><polygon fill="#A80036" points="211.5,79.9961,221.5,83.9961,211.5,87.9961,215.5,83.9961" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="76.5" x2="217.5" y1="83.9961" y2="83.9961"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="128" x="83.5" y="78.9302">checkAccountActive</text><path d="M238,55.2969 L238,95.2969 L444,95.2969 L444,65.2969 L434,55.2969 L238,55.2969 " fill="#FBFB77" filter="url(#fc99sy1wz923i)" style="stroke:#A80036;stroke-width:1.0;"/><path d="M434,55.2969 L434,65.2969 L444,65.2969 L434,55.2969 " fill="#FBFB77" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="167" x="244" y="72.3638">muss zu einem beliebigen</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="185" x="244" y="87.4966">Zeitpunkt aufgerufen werden</text><polygon fill="#A80036" points="87.5,106.5625,77.5,110.5625,87.5,114.5625,83.5,110.5625" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="81.5" x2="227.5" y1="110.5625" y2="110.5625"/><polygon fill="#A80036" points="211.5,148.2617,221.5,152.2617,211.5,156.2617,215.5,152.2617" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="76.5" x2="217.5" y1="152.2617" y2="152.2617"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="89" x="83.5" y="147.1958">lookupService</text><path d="M238,123.5625 L238,163.5625 L444,163.5625 L444,133.5625 L434,123.5625 L238,123.5625 " fill="#FBFB77" filter="url(#fc99sy1wz923i)" style="stroke:#A80036;stroke-width:1.0;"/><path d="M434,123.5625 L434,133.5625 L444,133.5625 L434,123.5625 " fill="#FBFB77" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="167" x="244" y="140.6294">muss zu einem beliebigen</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="185" x="244" y="155.7622">Zeitpunkt aufgerufen werden</text><polygon fill="#A80036" points="87.5,174.8281,77.5,178.8281,87.5,182.8281,83.5,178.8281" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="81.5" x2="227.5" y1="178.8281" y2="178.8281"/><polygon fill="#A80036" points="211.5,203.9609,221.5,207.9609,211.5,211.9609,215.5,207.9609" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="76.5" x2="217.5" y1="207.9609" y2="207.9609"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="111" x="83.5" y="202.895">createMessageID</text><polygon fill="#A80036" points="87.5,217.9609,77.5,221.9609,87.5,225.9609,83.5,221.9609" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="81.5" x2="227.5" y1="221.9609" y2="221.9609"/><polygon fill="#A80036" points="211.5,259.6602,221.5,263.6602,211.5,267.6602,215.5,263.6602" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="76.5" x2="217.5" y1="263.6602" y2="263.6602"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="119" x="83.5" y="258.5942">sendMessageSync</text><path d="M238,234.9609 L238,274.9609 L444,274.9609 L444,244.9609 L434,234.9609 L238,234.9609 " fill="#FBFB77" filter="url(#fc99sy1wz923i)" style="stroke:#A80036;stroke-width:1.0;"/><path d="M434,234.9609 L434,244.9609 L444,244.9609 L434,234.9609 " fill="#FBFB77" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="185" x="244" y="252.0278">muss nach createMessageID</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="119" x="244" y="267.1606">aufgerufen werden</text><polygon fill="#A80036" points="87.5,286.2266,77.5,290.2266,87.5,294.2266,83.5,290.2266" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="81.5" x2="227.5" y1="290.2266" y2="290.2266"/><polygon fill="#A80036" points="211.5,327.9258,221.5,331.9258,211.5,335.9258,215.5,331.9258" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;" x1="76.5" x2="217.5" y1="331.9258" y2="331.9258"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="124" x="83.5" y="326.8599">getTransportReport</text><path d="M238,303.2266 L238,343.2266 L452,343.2266 L452,313.2266 L442,303.2266 L238,303.2266 " fill="#FBFB77" filter="url(#fc99sy1wz923i)" style="stroke:#A80036;stroke-width:1.0;"/><path d="M442,303.2266 L442,313.2266 L452,313.2266 L442,303.2266 " fill="#FBFB77" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="193" x="244" y="320.2935">muss nach sendMessageSync</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="119" x="244" y="335.4263">aufgerufen werden</text><polygon fill="#A80036" points="87.5,354.4922,77.5,358.4922,87.5,362.4922,83.5,358.4922" style="stroke:#A80036;stroke-width:1.0;"/><line style="stroke:#A80036;stroke-width:1.0;stroke-dasharray:2.0,2.0;" x1="81.5" x2="227.5" y1="358.4922" y2="358.4922"/><!--MD5=[025b5539efe4ec16c51ca5a20c00aa1a]
-@startuml
-participant "Autor (synchron)" as autor #LightGreen
-participant "Sender (synchron)" as sender
-
-activate autor
-
-autor -> sender: checkAccountActive
-note right 
-muss zu einem beliebigen 
-Zeitpunkt aufgerufen werden
-end note
-activate sender
-return
-
-autor -> sender: lookupService
-note right 
-muss zu einem beliebigen 
-Zeitpunkt aufgerufen werden
-end note
-activate sender
-return
-
-autor -> sender: createMessageID
-activate sender
-return
-
-autor -> sender: sendMessageSync
-note right
-muss nach createMessageID
-aufgerufen werden
-end note
-activate sender
-return
-
-autor -> sender: getTransportReport
-note right
-muss nach sendMessageSync
-aufgerufen werden
-end note
-activate sender
-return
-@enduml
-
-PlantUML version 1.2022.1(Tue Feb 01 19:19:58 CET 2022)
-(GPL source distribution)
-Java Runtime: OpenJDK Runtime Environment
-JVM: OpenJDK 64-Bit Server VM
-Default Encoding: UTF-8
-Language: en
-Country: null
---></g></svg>
\ No newline at end of file
diff --git a/doc/puml/szenario-definition.puml b/doc/puml/szenario-definition.puml
deleted file mode 100644
index 54779822b6efd1b247fbf107b05c2e2db67925b8..0000000000000000000000000000000000000000
--- a/doc/puml/szenario-definition.puml
+++ /dev/null
@@ -1,26 +0,0 @@
-@startuml
-!pragma layout smetana
-class ScenarioDefinition {
-  String name
-  String displayName
-  String description
-  List<ScenarioEventDefinition> eventDescriptions
-}
-class ScenarioEventDefinition {
-  boolean optional
-  boolean multipleCallable
-  ExecutionType executionType
-  List<ScenarioEventType> requiredPreviousEventTypes
-}
-enum ScenarioEventType
-enum ExecutionType {
-  ACTIVE
-  PASSIV
-  PASSIV_ACTIVE
-}
-
-ScenarioDefinition --> "1..*" ScenarioEventDefinition
-ScenarioEventDefinition --> "1" ScenarioEventType
-ScenarioEventDefinition --> "0..*" ScenarioEventType
-ScenarioEventDefinition --> "1" ExecutionType
-@enduml
\ No newline at end of file
diff --git a/doc/puml/szenario-definition.svg b/doc/puml/szenario-definition.svg
deleted file mode 100644
index 780b55f25bef68bfe63943253808baeed39708b7..0000000000000000000000000000000000000000
--- a/doc/puml/szenario-definition.svg
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="383px" preserveAspectRatio="none" style="width:399px;height:383px;background:#FFFFFF;" version="1.1" viewBox="0 0 399 383" width="399px" zoomAndPan="magnify"><defs><filter height="300%" id="fdpd3ag3zw33d" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><!--MD5=[9948d5c94fcd17b46d9092490209d322]
-class ScenarioDefinition--><rect codeLine="2" fill="#FEFECE" filter="url(#fdpd3ag3zw33d)" height="99.2188" id="ScenarioDefinition" style="stroke:#A80036;stroke-width:1.5;" width="290" x="24" y="13.2188"/><ellipse cx="107.75" cy="29.2188" fill="#ADD1B2" rx="11" ry="11" style="stroke:#A80036;stroke-width:1.0;"/><path d="M110.7188,34.8594 Q110.1406,35.1563 109.5,35.2969 Q108.8594,35.4531 108.1563,35.4531 Q105.6563,35.4531 104.3281,33.8125 Q103.0156,32.1563 103.0156,29.0313 Q103.0156,25.9063 104.3281,24.25 Q105.6563,22.5938 108.1563,22.5938 Q108.8594,22.5938 109.5,22.75 Q110.1563,22.9063 110.7188,23.2031 L110.7188,25.9219 Q110.0938,25.3438 109.5,25.0781 Q108.9063,24.7969 108.2813,24.7969 Q106.9375,24.7969 106.25,25.875 Q105.5625,26.9375 105.5625,29.0313 Q105.5625,31.125 106.25,32.2031 Q106.9375,33.2656 108.2813,33.2656 Q108.9063,33.2656 109.5,33 Q110.0938,32.7188 110.7188,32.1406 L110.7188,34.8594 Z " fill="#000000"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="114" x="128.25" y="33.373">ScenarioDefinition</text><line style="stroke:#A80036;stroke-width:1.5;" x1="25" x2="313" y1="45.2188" y2="45.2188"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="70" x="30" y="59.4292">String name</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="111" x="30" y="72.2339">String displayName</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="101" x="30" y="85.0386">String description</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="278" x="30" y="97.8433">List&lt;ScenarioEventDefinition&gt; eventDescriptions</text><line style="stroke:#A80036;stroke-width:1.5;" x1="25" x2="313" y1="104.4375" y2="104.4375"/><!--MD5=[d51cf72de7635e958c0d6fb982633062]
-class ScenarioEventDefinition--><rect codeLine="8" fill="#FEFECE" filter="url(#fdpd3ag3zw33d)" height="99.2188" id="ScenarioEventDefinition" style="stroke:#A80036;stroke-width:1.5;" width="324" x="7" y="148.2188"/><ellipse cx="90.25" cy="164.2188" fill="#ADD1B2" rx="11" ry="11" style="stroke:#A80036;stroke-width:1.0;"/><path d="M93.2188,169.8594 Q92.6406,170.1563 92,170.2969 Q91.3594,170.4531 90.6563,170.4531 Q88.1563,170.4531 86.8281,168.8125 Q85.5156,167.1563 85.5156,164.0313 Q85.5156,160.9063 86.8281,159.25 Q88.1563,157.5938 90.6563,157.5938 Q91.3594,157.5938 92,157.75 Q92.6563,157.9063 93.2188,158.2031 L93.2188,160.9219 Q92.5938,160.3438 92,160.0781 Q91.4063,159.7969 90.7813,159.7969 Q89.4375,159.7969 88.75,160.875 Q88.0625,161.9375 88.0625,164.0313 Q88.0625,166.125 88.75,167.2031 Q89.4375,168.2656 90.7813,168.2656 Q91.4063,168.2656 92,168 Q92.5938,167.7188 93.2188,167.1406 L93.2188,169.8594 Z " fill="#000000"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="149" x="110.75" y="168.373">ScenarioEventDefinition</text><line style="stroke:#A80036;stroke-width:1.5;" x1="8" x2="330" y1="180.2188" y2="180.2188"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="94" x="13" y="194.4292">boolean optional</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="139" x="13" y="207.2339">boolean multipleCallable</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="166" x="13" y="220.0386">ExecutionType executionType</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="312" x="13" y="232.8433">List&lt;ScenarioEventType&gt; requiredPreviousEventTypes</text><line style="stroke:#A80036;stroke-width:1.5;" x1="8" x2="330" y1="239.4375" y2="239.4375"/><!--MD5=[92674f15853f9bd6310960971acb118e]
-class ScenarioEventType--><rect codeLine="14" fill="#FEFECE" filter="url(#fdpd3ag3zw33d)" height="48" id="ScenarioEventType" style="stroke:#A80036;stroke-width:1.5;" width="151" x="93.5" y="302.2188"/><ellipse cx="108.5" cy="318.2188" fill="#EB937F" rx="11" ry="11" style="stroke:#A80036;stroke-width:1.0;"/><path d="M112.6094,324.2188 L104.8906,324.2188 L104.8906,311.8281 L112.6094,311.8281 L112.6094,313.9844 L107.3438,313.9844 L107.3438,316.6563 L112.1094,316.6563 L112.1094,318.8125 L107.3438,318.8125 L107.3438,322.0625 L112.6094,322.0625 L112.6094,324.2188 Z " fill="#000000"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="119" x="122.5" y="322.373">ScenarioEventType</text><line style="stroke:#A80036;stroke-width:1.5;" x1="94.5" x2="243.5" y1="334.2188" y2="334.2188"/><line style="stroke:#A80036;stroke-width:1.5;" x1="94.5" x2="243.5" y1="342.2188" y2="342.2188"/><!--MD5=[0b9012c2938d8ac8a283e0108579f5d7]
-class ExecutionType--><rect codeLine="15" fill="#FEFECE" filter="url(#fdpd3ag3zw33d)" height="86.4141" id="ExecutionType" style="stroke:#A80036;stroke-width:1.5;" width="122" x="263" y="283.2188"/><ellipse cx="278" cy="299.2188" fill="#EB937F" rx="11" ry="11" style="stroke:#A80036;stroke-width:1.0;"/><path d="M282.1094,305.2188 L274.3906,305.2188 L274.3906,292.8281 L282.1094,292.8281 L282.1094,294.9844 L276.8438,294.9844 L276.8438,297.6563 L281.6094,297.6563 L281.6094,299.8125 L276.8438,299.8125 L276.8438,303.0625 L282.1094,303.0625 L282.1094,305.2188 Z " fill="#000000"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacing" textLength="90" x="292" y="303.373">ExecutionType</text><line style="stroke:#A80036;stroke-width:1.5;" x1="264" x2="384" y1="315.2188" y2="315.2188"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="39" x="269" y="329.4292">ACTIVE</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="40" x="269" y="342.2339">PASSIV</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="85" x="269" y="355.0386">PASSIV_ACTIVE</text><line style="stroke:#A80036;stroke-width:1.5;" x1="264" x2="384" y1="361.6328" y2="361.6328"/><path d="M169,112.4878 C169,124.0532 169,136.3905 169,147.9556 " fill="none" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="169,147.9556,173,138.9556,169,142.9556,165,138.9556,169,147.9556" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="23" x="145" y="144.0225">1..*</text><path d="M162.4148,247.2652 C161.9861,266.0775 162.3939,286.7269 163.6382,302.0443 " fill="none" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="163.6382,302.0443,166.8963,292.75,163.2333,297.0607,158.9226,293.3977,163.6382,302.0443" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="8" x="154.6382" y="298.1112">1</text><path d="M175.5852,247.2652 C176.0139,266.0775 175.6061,286.7269 174.3618,302.0443 " fill="none" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="174.3618,302.0443,179.0774,293.3977,174.7667,297.0607,171.1037,292.75,174.3618,302.0443" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="23" x="175.3618" y="298.1112">0..*</text><path d="M228.4838,247.2652 C242.9971,259.1099 258.4029,271.683 272.5084,283.1949 " fill="none" style="stroke:#A80036;stroke-width:1.0;"/><polygon fill="#A80036" points="272.5084,283.1949,268.0649,274.4054,268.6347,280.0335,263.0066,280.6033,272.5084,283.1949" style="stroke:#A80036;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="8" x="263.5084" y="279.2618">1</text><!--MD5=[62c8009e46de9d592a57cb2ff02b2e45]
-@startuml
-!pragma layout smetana
-class ScenarioDefinition {
-  String name
-  String displayName
-  String description
-  List<ScenarioEventDefinition> eventDescriptions
-}
-class ScenarioEventDefinition {
-  boolean optional
-  boolean multipleCallable
-  ExecutionType executionType
-  List<ScenarioEventType> requiredPreviousEventTypes
-}
-enum ScenarioEventType
-enum ExecutionType {
-  ACTIVE
-  PASSIV
-  PASSIV_ACTIVE
-}
-
-ScenarioDefinition - -> "1..*" ScenarioEventDefinition
-ScenarioEventDefinition - -> "1" ScenarioEventType
-ScenarioEventDefinition - -> "0..*" ScenarioEventType
-ScenarioEventDefinition - -> "1" ExecutionType
-@enduml
-
-PlantUML version 1.2022.1(Tue Feb 01 19:19:58 CET 2022)
-(GPL source distribution)
-Java Runtime: OpenJDK Runtime Environment
-JVM: OpenJDK 64-Bit Server VM
-Default Encoding: UTF-8
-Language: en
-Country: null
---></g></svg>
\ No newline at end of file
diff --git a/doc/release_notes.adoc b/doc/release_notes.adoc
deleted file mode 100644
index 8ea8510903103f45870976969f565142fd44d149..0000000000000000000000000000000000000000
--- a/doc/release_notes.adoc
+++ /dev/null
@@ -1,83 +0,0 @@
-= Release Notes
-:toc:
-:toc-title: Inhalt
-:toclevels: 3
-:docinfo: shared
-
-== Release v1.4.0
-
-* Update von Spring Boot Version auf 3.1.4 (plus diverse andere Abhängigkeiten)
-* Update von Bootstrap 4 auf Bootstrap 5
-* Erweiterung von CXF SOAP Logging, Nachrichten werden für Debugging komplett auf die Konsole geschrieben
-* In MessageMetaData werden Zeitstempel entsprechend der von der Testumgebung ausgeführten Rolle eingetragen
-* In der Rolle Autor wird unter Originators kein Sender mehr eingetragen
-* In Delivery Attributes werden die Timestamps vorerst nicht mehr als Pflichtangabe geprüft (die rollenbezogene Überprüfung erfolgt in einer späteren Version)
-* Erweiterte Konfigurationsmöglichkeiten in der Oberfläche und der Konfigurationsdatei
-** Parameter für Autor/Sender/Leser Identifier
-** Parameter für Qualifier und Business-Scenario
-** Parameter für Delivery Attributes Service Quality
-* Bugfix: Zurücksetzen des Berichts funktioniert zuverlässiger als vorher
-
-== Release v1.3.0
-
-* Umstellung des genutzten Frameworks von Axis2 auf CXF
-* Umstellung auf Java 17
-* Aktivierung der Schemaprüfung bei ein- und ausgehenden Nachrichten
-* Anzeige des genutzten XTA-Webservice-Standards in der Oberfläche
-* Anpassung der Dokumentation an die neue Implementierung
-
-== Release v1.2.1
-
-* Bugfix: Soap Header "Action" wird korrekt ausgewertet
-* Bugfix: GetStatusList liefert nun eine schematisch korrekte Antwort
-* Feature: Die Konfiguration des Webservices kann nun über die neue Oberfläche "Einstellungen" erfolgen
-* kleinere Textänderungen in der Oberfläche
-
-== Release v1.2.0
-* Dokumentaionsverbesserungen
-* Verlängerung der mitgelieferten Zertifikate
-* Buildzeitpunkt in Fußzeile
-* Bilder der Buildszenarios in der Oberfläche "Steuerung"
-
-== Release v1.1.0
-
-* Konfiguration des GeneralContentContainers aus der Oberfläche heraus
-* Anpassung von Client und Server, immmer die konfigurierte Version des Containers zu verwenden
-* Ergänzung der Dokumentation
-
-== Release v1.0.1
-
-* Anpassung der Farbgestaltung
-* Fix: Logging-Modul wurde im Build nicht korrekt der JAR-Datei hinzugefügt
-
-
-== Release v1.0.0
-
-* Unterstützung des Sendens von MTOM-basierten Nachrichten aus dem Client und dem Server
-
-
-== Release v0.9.0-SNAPSHOT
-
-* Erstellung eines Konformitätsberichts auf Basis von auszuwählenden Szenarien
-* Unterstützung aller Szenarien der Konformitätsvorgaben
-** Rolle Autor
-** Rolle Sender
-** Rolle Empfänger
-** Rolle Leser
-* Unterstützung aller spezifizierten Methoden aus den Konformitätsvorgaben
-** checkAccountActive
-** lookupService
-** createMessageId
-** sendMessage
-** sendMessageSync
-** getTransportReport
-** getStatusList
-** getMessage
-** close
-* Die Methoden werden durch die Testumgebung sowohl aktiv (als Client) als auch passiv (als Server) unterstützt und je nach Szenario angewandt
-* Unterstützung Empfang mit MTOM durch die Testumgebung
-* Authentifizierung mittels Client-Zertifikaten
-* HTTPs-Verbindung
-* Prüfung ob die erforderlichen WS-Addressing SOAP Header angegeben sind
-** Action
-** To
diff --git a/doc/szenarien.adoc b/doc/szenarien.adoc
deleted file mode 100644
index adbf3fb7929d75ad6b3e8384f9ad32e38fd02b10..0000000000000000000000000000000000000000
--- a/doc/szenarien.adoc
+++ /dev/null
@@ -1,77 +0,0 @@
-= Szenarien
-:toc:
-:toc-title: Inhalt
-:toclevels: 3
-:docinfo: shared
-
-
-== Aufbau einer Szenariodefinition
-
-Eine Szenariodefinition besitzt einen Namen, einen Anzeigenamen und eine Beschreibung.
-Weiterhin enthält die Klasse eine Liste von Ereignisdefinitionen. Eine Ereignisdefinition
-enthält den Ereignistyp, ob es optional ist, ob es mehrfach aufrufbar ist und welche
-Ereignistypen vorher eingetreten sein müssen.
-
-.UML Diagram Szenariodefinition
-image:./puml/szenario-definition.svg["UML Diagram Szenariodefinition"]
-
-== Definierte Szenarien
-
-Die zu testende Rolle ist gelb und die Rolle der Testumgebung grün markiert.
-Ist keine Einschränkung bei den Methoden in den Sequenzdiagrammen angegeben, dann ist die Aufrufreihenfolge egal.
-
-=== Autor (asynchron)
-
-Es wird die Rolle Autor (asynchron) getestet. Die Testumgebung nimmt dabei die passive Rolle Sender (asynchron) ein.
-
-.Sequenzdiagramm Autor (asynchron)
-image:./puml/autor_asynchron.svg["Sequenzdiagramm Autor (asynchron)"]
-
-=== Autor (synchron)
-
-Es wird die Rolle Autor (synchron) getestet. Die Testumgebung nimmt dabei die passive Rolle Sender (synchron) ein.
-
-.Sequenzdiagramm Autor (synchron)
-image:./puml/autor_synchron.svg["Sequenzdiagramm Autor (synchron)"]
-
-=== Sender (asynchron)
-
-Es wird die Rolle Sender (asynchron) getestet. Die Testumgebung nimmt dabei die aktive Rolle Autor (asynchron) ein.
-
-.Sequenzdiagramm Sender (asynchron)
-image:./puml/sender_asynchron.svg["Sequenzdiagramm Sender (asynchron)"]
-
-=== Sender (synchron)
-
-Es wird die Rolle Sender (synchron) getestet. Die Testumgebung nimmt dabei die aktive Rolle Autor (synchron) ein.
-
-.Sequenzdiagramm Sender (synchron)
-image:./puml/sender_synchron.svg["Sequenzdiagramm Sender (synchron)"]
-
-=== Leser (asynchron)
-
-Es wird die Rolle Leser (asynchron) getestet. Die Testumgebung nimmt dabei die passive Rolle Empfänger (asynchron) ein.
-
-.Sequenzdiagramm Leser (asynchron)
-image:./puml/leser_asynchron.svg["Sequenzdiagramm Leser (asynchron)"]
-
-=== Leser (synchron)
-
-Es wird die Rolle Leser (synchron) getestet. Die Testumgebung nimmt dabei die aktive/passive Rolle Empfänger (synchron) ein.
-
-.Sequenzdiagramm Leser (synchron)
-image:./puml/leser_synchron.svg["Sequenzdiagramm Leser (synchron)"]
-
-=== Empfänger (asynchron)
-
-Es wird die Rolle Empfänger (asynchron) getestet. Die Testumgebung nimmt dabei die aktive Rolle Leser (asynchron) ein.
-
-.Sequenzdiagramm Empfänger (asynchron)
-image:./puml/empfaenger_asynchron.svg["Sequenzdiagramm Empfänger (asynchron)"]
-
-=== Empfänger (synchron)
-
-Es wird die Rolle Empfänger (synchron) getestet. Die Testumgebung nimmt dabei die passive/aktive Rolle Leser (synchron) ein.
-
-.Sequenzdiagramm Empfänger (synchron)
-image:./puml/empfaenger_synchron.svg["Sequenzdiagramm Empfänger (synchron)"]
diff --git a/doc/theme/kosit-theme.yml b/doc/theme/kosit-theme.yml
deleted file mode 100644
index 17d2239e9df23b886c3e187653bdfba677d61637..0000000000000000000000000000000000000000
--- a/doc/theme/kosit-theme.yml
+++ /dev/null
@@ -1,29 +0,0 @@
-extends:
-  - default-with-fallback-font
-running-content:
-  start-at: body
-title-page:
-  align: left
-page:
-  margin: [0.75in, 1in, 0.75in, 1in]
-base:
-  line-height-length: 20
-heading:
-  #font-color: #FF8000
-  font-size: 12
-  line-height: 1.2
-#link:
-  #font-color: #009900
-footer:
-  height: 0.75in
-  line-height: 1
-  recto: &shared_footer
-    left: 
-      content: 'Copyright © 2021-{docyear} Koordinierungsstelle für IT-Standards (KoSIT) | https://www.xoev.de/[https://www.xoev.de]'
-    right:
-      content: '*{page-number}*'
-  verso: *shared_footer
-caption:
-  align: left
-  # font-color: #FF0000
-  font-size: 10
\ No newline at end of file
diff --git a/doc/umsetzungsuebersicht.adoc b/doc/umsetzungsuebersicht.adoc
deleted file mode 100644
index 6415bbb3c375b447e4f6dc6eb9c37d2c3dd4fa05..0000000000000000000000000000000000000000
--- a/doc/umsetzungsuebersicht.adoc
+++ /dev/null
@@ -1,173 +0,0 @@
-= Umsetzungsübersicht
-:toc:
-:toc-title: Inhalt
-:toclevels: 3
-:docinfo: shared
-
-== Vorwort
-
-Dieses Dokument enthält eine Übersicht der umgesetzten Funktionen/Funktionalitäten.
-
-* Die Spalte "Client-Test (Testserver)" enthält die Prüfungen und Antworten, welche man erhält, wenn man seinen eigenen Client testet und die Umgebung als Server fungiert.
-* Die Spalte "Server-Test (Testclient)" enthält die Prüfungen und Antworten, welche man erhält, wenn man seinen eigenen Server testet und die Umgebung als Client fungiert.
-
-== Tabelle umgesetzte Funktionen/Funktionalitäten
-[options="header",cols="1,1,1,1"]
-|===
-| Funktion | Client-Test (Testserver) | Server-Test (Testclient) | Bemerkung
-//---
-| checkAccountActive
-a| * Prüfung Eingangsparameter
-* Rückgabe verpflichtender Parameter
-a| * Anfrage mit verpflichtenden Parametern
-* Prüfung auf SOAP Fehler in Antwort
-* Prüfung Rückgabe enthält verpflichtende Parameter
-| Eine Authentifizierung erfolgt nur über das Client-Zertifikat
-
-| lookupService
-a| * Rückgabe verpflichtender Parameter (nicht vollständig)
-a| * Prüfung auf SOAP Fehler in Antwort
-|
-
-| createMessageId
-a| * Prüfung Eingangsparameter
-* Rückgabe verpflichtender Parameter
-* MessageID wird generiert und gespeichert
-a| * Anfrage mit verpflichtenden Parametern
-* Prüfung auf SOAP Fehler in Antwort
-* Prüfung Rückgabe enthält verpflichtende Parameter
-* MessageID wird gespeichert
-|
-
-| sendMessage
-a| * Prüfung Eingangsparameter
-* Prüfung ob MessageID übereinstimmt
-* Rückgabe verpflichtender Parameter
-a| * Anfrage mit verpflichtenden Parametern
-* gespeicherte MessageID wird verwendet
-* Prüfung auf SOAP Fehler in Antwort
-* Prüfung Rückgabe enthält verpflichtende Parameter
-|
-
-| sendMessageSync (Autor, Sender)
-a| * Prüfung Eingangsparameter
-* Prüfung MessageMetaData aus SOAP Header
-* Prüfung ob MessageID übereinstimmt
-* Rückgabe verpflichtender Parameter
-* Rückgabe MessageMetaData im SOAP Header
-a| * Anfrage mit verpflichtenden Parametern
-* Anfrage mit MessageMetaData im SOAP Header
-* gespeicherte MessageID wird verwendet
-* Prüfung auf SOAP Fehler in Antwort
-* Prüfung Rückgabe enthält verpflichtende Parameter
-* Prüfung Rückgabe enthält MessageMetaData im SOAP Header
-|
-
-| sendMessageSync (Empfänger, Leser)
-a| * Anfrage mit verpflichtenden Parametern
-* Anfrage mit MessageMetaData im SOAP Header
-* MessageID wird generiert
-* Prüfung auf SOAP Fehler in Antwort
-* Prüfung Rückgabe enthält verpflichtende Parameter
-* Prüfung Rückgabe enthält MessageMetaData im SOAP Header
-a| * Prüfung Eingangsparameter
-* Prüfung MessageMetaData aus SOAP Header
-* MessageID wird gespeichert
-* Aufruf von checkAccountActive und getTransportReport
-* Rückgabe verpflichtender Parameter
-* Rückgabe MessageMetaData im SOAP Header
-|
-
-| getTransportReport
-a| * Prüfung Eingangsparameter
-* Prüfung ob MessageID übereinstimmt
-* Rückgabe verpflichtender Parameter
-* *SignatureType enthält keine Daten*
-a| * Anfrage mit verpflichtenden Parametern
-* gespeicherte MessageID wird verwendet
-* Prüfung auf SOAP Fehler in Antwort
-* Prüfung Rückgabe enthält verpflichtende Parameter
-* *Inhalt des SignatureTypes wird nicht geprüft*
-* *keine Wiederholung der Abfrage falls Nachricht noch nicht versandt*
-|
-
-| getStatusList
-a| * Prüfung Eingangsparameter
-* generiert und speichert MessageID
-* generiert und speichert MsgBoxRequestID
-* Rückgabe verpflichtender Parameter
-* Parameter NoMessageAvailable wird nicht gesetzt
-a| * Anfrage mit verpflichtenden Parametern
-* MessageID wird gespeichert
-* MsgBoxRequestID wird gespeichert
-* Prüfung auf SOAP Fehler in Antwort
-* Prüfung Rückgabe enthält verpflichtende Parameter
-a| * MessageID: Dieses ist eine ID eines Transportauftrages, normalerweise aus einem Transportauftrag von einem Author (Identifiziert den Transportauftrag eindeutig).
-* MsgBoxRequestId: ein Iterator, welcher von getStatuslist erstellt wird, um alle noch für den Auftrag ausstehenden Nachrichten für getNextMessage aufzulisten und abzuholen.
-
-
-| getMessage
-a| * Prüfung Eingangsparameter
-* Prüfung ob MessageID übereinstimmt
-* Rückgabe verpflichtender Parameter
-a| * Anfrage mit verpflichtenden Parametern
-* gespeicherte MsgBoxRequestID wird verwendet
-* Prüfung auf SOAP Fehler in Antwort
-* Prüfung Rückgabe enthält verpflichtende Parameter
-a| * Wird mit der gleichen MessageID aus getStatusList aufgerufen. Die MsgBoxRequestId ist hier uninteressat.
-
-
-| close
-a| * Prüfung Eingangsparameter
-* Prüfung ob MessageID übereinstimmt
-* Prüfung ob MsgBoxRequestID aus getStatusList übereinstimmt
-* Rückgabe verpflichtender Parameter
-a| * Anfrage mit verpflichtenden Parametern
-* gespeicherte MessageID wird verwendet
-* gespeicherte MsgBoxRequestID wird verwendet
-* Prüfung auf SOAP Fehler in Antwort
-* Prüfung Rückgabe enthält verpflichtende Parameter
-a| * Quittieren einer Nachricht, geschlossen wird diese per Übergabe der MessageID. Damit werden alle Nachrichten, welche mit dieser ID von getStatusList aufgelistet wurden, quittiert.
-* Auch die MsgBoxRequestId aus getStatusList muss mitgesendet werden.
-
-
-| getNextMessage
-
-*(Diese Funktion ist in der Testumgebung nicht implementiert)*
-|
-|
-a| * Hier werden über einen Iterator weitere Nachrichten abgerufen. Der Iterator hat eine ID, die MsgBoxRequestID. Diese erhält man durch einen Aufruf von getStatusList.
-* osci:LastMsgReceived zum Quittieren der letzten Nachricht per getNextMessage
-
-
-| getNextStatusList
-
-*(Diese Funktion ist in der Testumgebung nicht implementiert)*
-|
-|
-a| * Hier werden über einen Iterator weitere MessageIDs und Metadaten abgerufen. Der Iterator hat eine ID, die MsgBoxRequestID. Diese erhält man durch den ersten Aufruf von getStatusList.
-
-
-
-|===
-
-==  Nutzung und Prüfung der verschiedenen MessageIDs
-=== getStatusList
-
-* MessageID: Dieses ist eine ID eines Transportauftrages, normalerweise aus einem Transportauftrag von einem Author (Identifiziert den Transportauftrag eindeutig).
-* MsgBoxRequestId: ein Iterator, welcher von getStatuslist erstellt wird, um alle noch für den Auftrag ausstehenden Nachrichten für getNextMessage aufzulisten und abzuholen.
-
-=== getMessage:
-
-* Wird mit der gleichen MessageID aus getStatusList aufgerufen. Die MsgBoxRequestId ist hier uninteressat.
-
-=== getNextMessage
-
-* *(Diese Funktion ist in der Testumgebung nicht implementiert)*
-* Hier werden über einen Iterator weitere Nachrichten abgerufen. Der Iterator hat eine ID, die MsgBoxRequestID. Diese erhält man durch einen Aufruf von getStatusList.
-* osci:LastMsgReceived zum Quittieren der letzten Nachricht per getNextMessage
-
-=== close
-
-* Quittieren einer Nachricht, geschlossen wird diese per Übergabe der MessageID. Damit werden alle Nachrichten, welche mit dieser ID von getStatusList aufgelistet wurden, quittiert.
-* Auch die MsgBoxRequestId aus getStatusList muss mitgesendet werden.
diff --git a/keystore-truststore-from-tls-secret.dockerfile b/keystore-truststore-from-tls-secret.dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..478b24c8bddb6318d5ce9af86448163d7e6031f9
--- /dev/null
+++ b/keystore-truststore-from-tls-secret.dockerfile
@@ -0,0 +1,10 @@
+FROM alpine:3.21
+
+RUN apk add --no-cache openssl openjdk11
+
+COPY --chown=185 scripts/keystore-truststore-from-tls-secret.sh /opt/
+
+VOLUME /store /tls
+USER 185
+
+ENTRYPOINT [ "/bin/sh", "/opt/keystore-truststore-from-tls-secret.sh" ]
\ No newline at end of file
diff --git a/other_files/README.md b/other_files/README.md
deleted file mode 100644
index d9b3341a96915095732753bd4f2423b3872447b3..0000000000000000000000000000000000000000
--- a/other_files/README.md
+++ /dev/null
@@ -1 +0,0 @@
-Das Passwort für alle p12 und jks Dateien sowie für die XCA Datei lautet "password".
diff --git a/other_files/xta_tester.xdb b/other_files/xta_tester.xdb
deleted file mode 100644
index 41f65f5f2373220826e2fc7de5fa9c8317ac90cb..0000000000000000000000000000000000000000
Binary files a/other_files/xta_tester.xdb and /dev/null differ
diff --git a/pom.xml b/pom.xml
index 2414750e0891c60a92c743f4bbc8e6f8db6141e2..dbe2997a955c728bbf5ef99134b843307fc7f4a5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -84,6 +84,12 @@
 			<scope>runtime</scope>
 			<optional>true</optional>
 		</dependency>
+		
+		<dependency>
+		    <groupId>org.springframework.boot</groupId>
+		    <artifactId>spring-boot-starter-actuator</artifactId>
+		    <version>3.3.4</version>
+		</dependency>
 
 		<!-- Spring Validation -->
 		<dependency>
@@ -455,215 +461,6 @@
 	</build>
 
 	<profiles>
-		<profile>
-			<!-- to build the xta-test-server.zip -->
-			<!-- > mvn clean package -Pzip -->
-			<activation>
-				<activeByDefault>false</activeByDefault>
-			</activation>
-			<id>zip</id>
-			<build>
-				<plugins>
-					<plugin>
-						<groupId>org.apache.maven.plugins</groupId>
-						<artifactId>maven-assembly-plugin</artifactId>
-						<configuration>
-							<finalName>
-								${project.artifactId}-${project.version}_${maven.build.timestamp}
-							</finalName>
-							<appendAssemblyId>false</appendAssemblyId>
-							<descriptors>
-								<descriptor>${basedir}/build/assembly.xml</descriptor>
-							</descriptors>
-							<skipAssembly>false</skipAssembly>
-						</configuration>
-						<executions>
-							<execution>
-								<phase>package</phase>
-								<goals>
-									<goal>single</goal>
-								</goals>
-							</execution>
-						</executions>
-					</plugin>
-				</plugins>
-			</build>
-		</profile>
-
-		<profile>
-			<activation>
-				<activeByDefault>false</activeByDefault>
-			</activation>
-			<id>plantuml</id>
-			<build>
-				<plugins>
-					<plugin>
-						<groupId>com.github.jeluard</groupId>
-						<artifactId>plantuml-maven-plugin</artifactId>
-						<version>1.2</version>
-
-						<executions>
-							<execution>
-								<id>puml</id>
-								<phase>generate-resources</phase>
-								<goals>
-									<goal>generate</goal>
-								</goals>
-
-								<configuration>
-									<sourceFiles>
-										<directory>${basedir}</directory>
-										<includes>
-											<include>**/*.puml</include>
-										</includes>
-									</sourceFiles>
-									<outputInSourceDirectory>true</outputInSourceDirectory>
-									<format>svg</format>
-									<charset>UTF-8</charset>
-									<verbose>true</verbose>
-								</configuration>
-							</execution>
-						</executions>
-						<dependencies>
-							<dependency>
-								<groupId>net.sourceforge.plantuml</groupId>
-								<artifactId>plantuml</artifactId>
-								<version>1.2022.1</version>
-							</dependency>
-						</dependencies>
-					</plugin>
-				</plugins>
-			</build>
-		</profile>
-
-		<profile>
-			<activation>
-				<activeByDefault>false</activeByDefault>
-			</activation>
-			<id>asciidoctor</id>
-			<build>
-				<plugins>
-					<plugin>
-						<!--
-						https://github.com/asciidoctor/asciidoctor-maven-examples/blob/main/asciidoc-to-html-example/pom.xml -->
-						<!--
-						https://github.com/asciidoctor/asciidoctor-maven-examples/blob/main/asciidoctor-pdf-example/pom.xml -->
-						<groupId>org.asciidoctor</groupId>
-						<artifactId>asciidoctor-maven-plugin</artifactId>
-						<version>${asciidoctor.maven.plugin.version}</version>
-						<dependencies>
-							<!-- Comment this section to use the default jruby
-							artifact provided by the plugin -->
-							<dependency>
-								<groupId>org.jruby</groupId>
-								<artifactId>jruby-complete</artifactId>
-								<version>${jruby.version}</version>
-							</dependency>
-							<!-- Comment this section to use the default
-							AsciidoctorJ artifact provided by the plugin -->
-							<dependency>
-								<groupId>org.asciidoctor</groupId>
-								<artifactId>asciidoctorj</artifactId>
-								<version>${asciidoctorj.version}</version>
-							</dependency>
-							<dependency>
-								<groupId>org.asciidoctor</groupId>
-								<artifactId>asciidoctorj-pdf</artifactId>
-								<version>${asciidoctorj.pdf.version}</version>
-							</dependency>
-							<dependency>
-								<groupId>org.asciidoctor</groupId>
-								<artifactId>asciidoctorj-diagram</artifactId>
-								<version>${asciidoctorj.diagram.version}</version>
-							</dependency>
-
-							<dependency>
-								<groupId>org.asciidoctor</groupId>
-								<artifactId>asciidoctorj-diagram-ditaamini</artifactId>
-								<version>1.0.0</version>
-							</dependency>
-						</dependencies>
-						<configuration>
-							<requires>
-								<require>asciidoctor-diagram</require>
-							</requires>
-						</configuration>
-						<executions>
-
-							<execution>
-								<id>convert-to-html</id>
-								<phase>generate-resources</phase>
-								<goals>
-									<goal>process-asciidoc</goal>
-								</goals>
-								<configuration>
-									<sourceDirectory>doc</sourceDirectory>
-									<outputDirectory>${project.build.directory}/html</outputDirectory>
-									<backend>html5</backend>
-									<preserveDirectories>true</preserveDirectories>
-									<attributes>
-										<source-highlighter>coderay</source-highlighter>
-										<imagesdir>.</imagesdir>
-										<toc>left</toc>
-										<icons>font</icons>
-										<sectanchors>true</sectanchors>
-									</attributes>
-								</configuration>
-							</execution>
-							<execution>
-								<id>generate-pdf-doc</id>
-								<phase>generate-resources</phase>
-								<goals>
-									<goal>process-asciidoc</goal>
-								</goals>
-								<configuration>
-									<sourceDirectory>doc</sourceDirectory>
-									<outputDirectory>${project.build.directory}/pdf</outputDirectory>
-									<backend>pdf</backend>
-									<preserveDirectories>true</preserveDirectories>
-									<attributes>
-										<pdf-theme>kosit</pdf-theme>
-										<pdf-themesdir>${project.basedir}/doc/theme</pdf-themesdir>
-										<source-highlighter>coderay</source-highlighter>
-										<icons>font</icons>
-										<pagenums/>
-										<toc/>
-										<idprefix/>
-										<idseparator>-</idseparator>
-										<compress/>
-									</attributes>
-								</configuration>
-							</execution>
-							<execution>
-								<id>generate-soapui-pdf</id>
-								<phase>generate-resources</phase>
-								<goals>
-									<goal>process-asciidoc</goal>
-								</goals>
-								<configuration>
-									<sourceDirectory>soapui</sourceDirectory>
-									<outputDirectory>${project.build.directory}/soapui</outputDirectory>
-									<backend>pdf</backend>
-									<preserveDirectories>true</preserveDirectories>
-									<attributes>
-										<pdf-theme>kosit</pdf-theme>
-										<pdf-themesdir>${project.basedir}/doc/theme</pdf-themesdir>
-										<source-highlighter>coderay</source-highlighter>
-										<icons>font</icons>
-										<pagenums/>
-										<toc/>
-										<idprefix/>
-										<idseparator>-</idseparator>
-										<compress/>
-									</attributes>
-								</configuration>
-							</execution>
-						</executions>
-					</plugin>
-				</plugins>
-			</build>
-		</profile>
-
 		<!-- Deployment Profiles -->
 		<profile>
 			<id>gitlab-deploy</id>
diff --git a/run_helm_test.sh b/run_helm_test.sh
new file mode 100755
index 0000000000000000000000000000000000000000..0cd9af6d4cbc3f99d077174612bf3445fa827fbf
--- /dev/null
+++ b/run_helm_test.sh
@@ -0,0 +1,6 @@
+#!/bin/sh
+set -e
+
+helm template -f src/test/helm-linter-values.yaml src/main/helm
+helm lint -f src/test/helm-linter-values.yaml src/main/helm
+helm unittest  -f '../../test/helm/**/*test.yaml' src/main/helm
\ No newline at end of file
diff --git a/scripts/.gitignore b/scripts/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..21d38329610137403797f8c6d39f69b3cce8ad06
--- /dev/null
+++ b/scripts/.gitignore
@@ -0,0 +1,2 @@
+*.crt
+*.jks
\ No newline at end of file
diff --git a/scripts/fetch-client-tls-secret.sh b/scripts/fetch-client-tls-secret.sh
new file mode 100755
index 0000000000000000000000000000000000000000..93e873542e9a8e061aacfa4ecf9dc45583296873
--- /dev/null
+++ b/scripts/fetch-client-tls-secret.sh
@@ -0,0 +1,27 @@
+#!/bin/bash
+
+set -e
+
+CLIENT_NAME=${CLIENT_NAME:-clienta}
+NAMESPACE=${NAMESPACE:-by-enable-dev}
+TLS_DIR=${CLIENT_NAME}-tls
+
+export IN_CA_CRT="$TLS_DIR"/ca.crt
+export IN_TLS_KEY="$TLS_DIR"/tls.key
+export IN_TLS_CRT="$TLS_DIR"/tls.crt
+
+export OUT_JKS_TRUSTSTORE="$TLS_DIR"/truststore.jks
+export OUT_P12_KEYSTORE="$TLS_DIR"/keystore.p12
+
+fetch_secret_file() {
+  kubectl get secret -n "$NAMESPACE" "xta-test-server-${CLIENT_NAME}-tls-secret" -o jsonpath="$1" | base64 -d
+}
+
+mkdir -p "$TLS_DIR"
+
+fetch_secret_file '{.data.ca\.crt}' > "$IN_CA_CRT"
+fetch_secret_file '{.data.tls\.key}' > "$IN_TLS_KEY"
+fetch_secret_file '{.data.tls\.crt}' > "$IN_TLS_CRT"
+
+exec /bin/sh keystore-truststore-from-tls-secret.sh
+
diff --git a/scripts/fetch-server-trust-store.sh b/scripts/fetch-server-trust-store.sh
new file mode 100755
index 0000000000000000000000000000000000000000..cad8fa8d69c818f3e6f0bed8d76058cd91674c71
--- /dev/null
+++ b/scripts/fetch-server-trust-store.sh
@@ -0,0 +1,15 @@
+#!/bin/bash
+
+set -e
+
+NAMESPACE=${NAMESPACE:-by-enable-dev}
+
+echo "[1.0] Find xta-test-server pod in namespace $NAMESPACE"
+XTA_TEST_SERVER_POD=$(kubectl get pods -n "$NAMESPACE" -l app.kubernetes.io/name=xta-test-server -o jsonpath='{.items[0].metadata.name}')
+
+echo "[1.1] Fetch truststore from xta-test-server pod"
+kubectl cp "$NAMESPACE/$XTA_TEST_SERVER_POD:/store/truststore.jks" xta-test-truststore.jks
+
+echo "[2.0] Show certificate in truststore xta-test-truststore.jks"
+keytool -exportcert -keystore xta-test-truststore.jks -storepass password -alias xta-test-root-ca -file xta-test-root-ca.crt
+openssl x509 -in xta-test-root-ca.crt -text -noout
\ No newline at end of file
diff --git a/scripts/keystore-truststore-from-tls-secret.sh b/scripts/keystore-truststore-from-tls-secret.sh
new file mode 100755
index 0000000000000000000000000000000000000000..750a054deee9bf87f4ba9156793f924160000a1f
--- /dev/null
+++ b/scripts/keystore-truststore-from-tls-secret.sh
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+IN_CA_CRT=${IN_CA_CRT:-/tls/ca.crt}
+IN_TLS_KEY=${IN_TLS_KEY:-/tls/tls.key}
+IN_TLS_CRT=${IN_TLS_CRT:-/tls/tls.crt}
+
+OUT_JKS_TRUSTSTORE=${OUT_JKS_TRUSTSTORE:-/store/truststore.jks}
+OUT_JKS_TRUSTSTORE_KEY_ALIAS=${OUT_JKS_TRUSTSTORE_KEY_ALIAS:-xta-test-root-ca}
+OUT_JKS_TRUSTSTORE_KEY_PASSWORD=${OUT_JKS_TRUSTSTORE_KEY_PASSWORD:-password}
+echo "[1.0] Create $OUT_JKS_TRUSTSTORE from $IN_CA_CRT"
+keytool -importcert -alias "$OUT_JKS_TRUSTSTORE_KEY_ALIAS" -keystore "$OUT_JKS_TRUSTSTORE" -storetype JKS -storepass "$OUT_JKS_TRUSTSTORE_KEY_PASSWORD" -file "$IN_CA_CRT" -noprompt
+
+OUT_P12_KEYSTORE=${OUT_P12_KEYSTORE:-/store/keystore.p12}
+OUT_P12_KEYSTORE_KEY_ALIAS=${OUT_P12_KEYSTORE_KEY_ALIAS:-xta-test-server}
+OUT_P12_KEYSTORE_KEY_PASSWORD=${OUT_P12_KEYSTORE_KEY_PASSWORD:-password}
+echo "[2.0] Create $OUT_P12_KEYSTORE from $IN_TLS_KEY and $IN_TLS_CRT"
+openssl pkcs12 -export -in "$IN_TLS_CRT" -inkey "$IN_TLS_KEY" -out "$OUT_P12_KEYSTORE" -name "$OUT_P12_KEYSTORE_KEY_ALIAS" -passout "pass:$OUT_P12_KEYSTORE_KEY_PASSWORD"
\ No newline at end of file
diff --git a/src/main/helm/.helmignore b/src/main/helm/.helmignore
new file mode 100644
index 0000000000000000000000000000000000000000..0e8a0eb36f4ca2c939201c0d54b5d82a1ea34778
--- /dev/null
+++ b/src/main/helm/.helmignore
@@ -0,0 +1,23 @@
+# Patterns to ignore when building packages.
+# This supports shell glob matching, relative path matching, and
+# negation (prefixed with !). Only one pattern per line.
+.DS_Store
+# Common VCS dirs
+.git/
+.gitignore
+.bzr/
+.bzrignore
+.hg/
+.hgignore
+.svn/
+# Common backup files
+*.swp
+*.bak
+*.tmp
+*.orig
+*~
+# Various IDEs
+.project
+.idea/
+*.tmproj
+.vscode/
diff --git a/src/main/helm/Chart.yaml b/src/main/helm/Chart.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..57983c6d076cf4a13f2d5689eae2b6b719b8ff28
--- /dev/null
+++ b/src/main/helm/Chart.yaml
@@ -0,0 +1,30 @@
+#
+# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
+# Ministerpräsidenten des Landes Schleswig-Holstein
+# Staatskanzlei
+# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
+#
+# Lizenziert unter der EUPL, Version 1.2 oder - sobald
+# diese von der Europäischen Kommission genehmigt wurden -
+# Folgeversionen der EUPL ("Lizenz");
+# Sie dürfen dieses Werk ausschließlich gemäß
+# dieser Lizenz nutzen.
+# Eine Kopie der Lizenz finden Sie hier:
+#
+# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
+#
+# Sofern nicht durch anwendbare Rechtsvorschriften
+# gefordert oder in schriftlicher Form vereinbart, wird
+# die unter der Lizenz verbreitete Software "so wie sie
+# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
+# ausdrücklich oder stillschweigend - verbreitet.
+# Die sprachspezifischen Genehmigungen und Beschränkungen
+# unter der Lizenz sind dem Lizenztext zu entnehmen.
+#
+
+apiVersion: v1
+appVersion: "1.0"
+description: OZG-Cloud Helm chart for xta-test-server
+name: xta-test-server
+version: 0.0.0-MANAGED-BY-JENKINS
+icon: https://simpleicons.org/icons/helm.svg
diff --git a/src/main/helm/templates/_helpers.tpl b/src/main/helm/templates/_helpers.tpl
new file mode 100644
index 0000000000000000000000000000000000000000..dc3b2fc823f2a8484018233db81fdb3cca4e2fae
--- /dev/null
+++ b/src/main/helm/templates/_helpers.tpl
@@ -0,0 +1,92 @@
+
+{{/* error check 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec) */}}
+{{/* Namespace */}}
+{{- define "app.namespace" -}}
+{{- if gt (len (.Release.Namespace)) 63 -}}
+{{- fail (printf ".Release.Namespace %s ist zu lang (max. 63 Zeichen)" .Release.Namespace) -}}
+{{- end -}}
+{{ printf "%s" .Release.Namespace }}
+{{- end -}}
+
+{{/* Chart: Name + Version */}}
+{{- define "app.chart" -}}
+{{- if gt (len (printf "%s-%s" .Chart.Name .Chart.Version)) 63 -}}
+{{- fail (printf ".Chart.Name-.Chart.Version %s-%s ist zu lang (max. 63 Zeichen)" .Chart.Name .Chart.Version) -}}
+{{- end -}}
+{{ printf "%s-%s" .Chart.Name .Chart.Version }}
+{{- end -}}
+
+{{/* Managed-by -> On Helm, this value is always Helm */}}
+{{- define "app.managedBy" -}}
+{{- if gt (len (.Release.Service)) 63 -}}
+{{- fail (printf ".Release.Service %s ist zu lang (max. 63 Zeichen)" .Release.Service) -}}
+{{- end -}}
+{{ printf "%s" .Release.Service }}
+{{- end -}}
+
+
+{{/* Default Labels: Helm recommended best-practice labels https://helm.sh/docs/chart_best_practices/labels/ */}}
+{{- define "app.defaultLabels" }}
+app.kubernetes.io/instance: xta-test-server
+app.kubernetes.io/managed-by: {{ include "app.managedBy" . }}
+app.kubernetes.io/name: {{ .Release.Name }}
+app.kubernetes.io/namespace: {{ include "app.namespace" . }}
+app.kubernetes.io/part-of: ozgcloud
+app.kubernetes.io/version: {{ .Chart.Version }}
+helm.sh/chart: {{ include "app.chart" . }}
+{{- end -}}
+
+{{- define "app.matchLabels" }}
+app.kubernetes.io/name: {{ .Release.Name }}
+app.kubernetes.io/namespace: {{ include "app.namespace" . }}
+{{- end -}}
+
+
+{{- define "app.envSpringProfiles" }}
+{{- if (.Values.env).overrideSpringProfiles -}}
+{{ printf "%s" (.Values.env).overrideSpringProfiles }}
+{{- else -}}
+{{ printf "oc, %s" (include "app.ozgcloudEnvironment" . ) }}
+{{- end -}}
+{{- end -}}
+
+{{- define "app.ozgcloudEnvironment" -}}
+{{- required "Environment muss angegeben sein" (.Values.ozgcloud).environment -}}
+{{- end -}}
+
+{{- define "app.ozgcloudBezeichner" -}}
+{{- required "ozgcloud.bezeichner muss angegeben sein" (.Values.ozgcloud).bezeichner -}}
+{{- if lt 46 (len (.Values.ozgcloud).bezeichner) -}}
+{{ fail (printf "ozgcloud.bezeichner %s ist zu lang (max. 46 Zeichen)" (.Values.ozgcloud).bezeichner) }}
+{{- end -}}
+{{- end -}}
+
+{{- define "app.baseDomain" -}}
+{{- printf "%s.%s" (include "app.ozgcloudBezeichner" .) (include "app.baseUrl" .) }}
+{{- end -}}
+
+{{- define "app.baseUrl" -}}
+{{- required "baseUrl muss angegeben sein" .Values.baseUrl }}
+{{- end -}}
+
+{{- define "app.getServiceAccountName" -}}
+{{ printf "%s" ( (.Values.serviceAccount).name | default "xta-test-server-service-account" ) }}
+{{- end -}}
+
+{{- define "app.getCustomList" -}}
+{{- with (.Values.env).customList -}}
+{{- if kindIs "map" . -}}
+{{ include "app.dictToList" . }}
+{{- else if kindIs "slice" . -}}
+{{ . | toYaml }}
+{{- end -}}
+{{- end -}}
+{{- end -}}
+
+{{- define "app.dictToList" -}}
+{{- $customList := list -}}
+{{- range $key, $value := . -}}
+{{- $customList = append $customList (dict "name" $key "value" $value) }}
+{{- end -}}
+{{- $customList | toYaml -}}
+{{- end -}}
\ No newline at end of file
diff --git a/src/main/helm/templates/certificate.yaml b/src/main/helm/templates/certificate.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..7ac0e72801f769045b063a333c1c706f12655bae
--- /dev/null
+++ b/src/main/helm/templates/certificate.yaml
@@ -0,0 +1,43 @@
+apiVersion: cert-manager.io/v1
+kind: Certificate
+metadata:
+  name: {{ .Release.Name }}-tls-certificate
+  namespace: {{ include "app.namespace" . }}
+  labels:
+    {{- include "app.defaultLabels" . | indent 4 }}
+spec:
+  isCA: false
+  secretName: {{ .Release.Name }}-tls-secret
+  privateKey:
+    algorithm: ECDSA
+    size: 256
+  issuerRef:
+    name: {{ include "app.namespace" . }}-ca-issuer
+    kind: Issuer
+  duration: 8760h0m0s # 1 Jahr
+  renewBefore: 5840h0m0s # 8 Monate
+  commonName: {{ .Release.Name }}
+  subject:
+    organizations:
+      - "XtaTestOrga"
+    countries:
+      - DE
+    organizationalUnits:
+      - "XtaTestUnit"
+    localities:
+      - Kiel
+    provinces:
+      - Schleswig-Holstein
+    streetAddresses:
+      - "Test-Str. 4"
+    postalCodes:
+      - "22222"
+  # critical, digitalSignature, nonRepudiation, keyEncipherment, keyAgreement
+  usages:
+    - server auth
+    - digital signature
+    - content commitment # https://cryptography.io/en/latest/x509/reference/#cryptography.x509.KeyUsage.content_commitment
+    - key encipherment
+    - key agreement
+  dnsNames:
+    - "{{ .Release.Name }}-{{ include "app.baseDomain" . }}"
\ No newline at end of file
diff --git a/src/main/helm/templates/client_certificates.yaml b/src/main/helm/templates/client_certificates.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..c52df70969a97c9327146158073b516d0e31cb2a
--- /dev/null
+++ b/src/main/helm/templates/client_certificates.yaml
@@ -0,0 +1,47 @@
+{{- range $idx, $cn := .Values.clientCertificateCommonNames }}
+{{- with $ -}}
+apiVersion: cert-manager.io/v1
+kind: Certificate
+metadata:
+  name: {{ .Release.Name }}-{{ $cn | lower }}-tls-certificate
+  namespace: {{ include "app.namespace" . }}
+  labels:
+    {{- include "app.defaultLabels" . | indent 4 }}
+spec:
+  isCA: false
+  secretName: {{ .Release.Name }}-{{ $cn | lower }}-tls-secret
+  privateKey:
+    algorithm: ECDSA
+    size: 256
+  issuerRef:
+    name: {{ include "app.namespace" . }}-ca-issuer
+    kind: Issuer
+  duration: 8760h0m0s # 1 Jahr
+  renewBefore: 5840h0m0s # 8 Monate
+  commonName: {{ $cn }}
+  subject:
+    organizations:
+      - "XtaTestOrga"
+    countries:
+      - DE
+    organizationalUnits:
+      - "XtaTestUnit{{ $idx }}"
+    localities:
+      - Kiel
+    provinces:
+      - Schleswig-Holstein
+    streetAddresses:
+      - "Test-Str. {{ $idx }}"
+    postalCodes:
+      - "22222"
+  # critical, digitalSignature, nonRepudiation, keyEncipherment, keyAgreement
+  usages:
+    - client auth
+    - digital signature
+    - content commitment # https://cryptography.io/en/latest/x509/reference/#cryptography.x509.KeyUsage.content_commitment
+    - key encipherment
+    - key agreement
+
+---
+{{ end -}}
+{{- end }}
\ No newline at end of file
diff --git a/src/main/helm/templates/configmap.yaml b/src/main/helm/templates/configmap.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..8e4fbacefd484339668748edd53d0f4503a14ac5
--- /dev/null
+++ b/src/main/helm/templates/configmap.yaml
@@ -0,0 +1,8 @@
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: {{ .Release.Name }}-bindings-type
+  namespace: {{ include "app.namespace" . }}
+data:
+  type: |
+    ca-certificates
\ No newline at end of file
diff --git a/src/main/helm/templates/deployment.yaml b/src/main/helm/templates/deployment.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..487f906d5753145bee1660f53f1e329a16cec856
--- /dev/null
+++ b/src/main/helm/templates/deployment.yaml
@@ -0,0 +1,158 @@
+#
+# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
+# Ministerpräsidenten des Landes Schleswig-Holstein
+# Staatskanzlei
+# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
+#
+# Lizenziert unter der EUPL, Version 1.2 oder - sobald
+# diese von der Europäischen Kommission genehmigt wurden -
+# Folgeversionen der EUPL ("Lizenz");
+# Sie dürfen dieses Werk ausschließlich gemäß
+# dieser Lizenz nutzen.
+# Eine Kopie der Lizenz finden Sie hier:
+#
+# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
+#
+# Sofern nicht durch anwendbare Rechtsvorschriften
+# gefordert oder in schriftlicher Form vereinbart, wird
+# die unter der Lizenz verbreitete Software "so wie sie
+# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
+# ausdrücklich oder stillschweigend - verbreitet.
+# Die sprachspezifischen Genehmigungen und Beschränkungen
+# unter der Lizenz sind dem Lizenztext zu entnehmen.
+#
+
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: {{ .Release.Name }}
+  namespace: {{ include "app.namespace" . }}
+  labels:
+    {{- include "app.defaultLabels" . | indent 4 }}
+spec:
+  progressDeadlineSeconds: 600
+  replicas: {{ .Values.replicaCount }}
+  revisionHistoryLimit: 10
+  selector:
+    matchLabels:
+      {{- include "app.matchLabels" . | indent 6 }}
+  strategy:
+    rollingUpdate:
+      maxSurge: 1
+      maxUnavailable: 0
+    type: RollingUpdate
+  template:
+    metadata:
+      labels:
+        {{- include "app.defaultLabels" . | indent 8 }}
+        component: xta-test-server
+    spec:
+      {{- if (.Values.serviceAccount).create }}
+      serviceAccountName: {{ include "app.getServiceAccountName" . }}
+      {{- end }}
+      topologySpreadConstraints:
+      - maxSkew: 1
+        topologyKey: kubernetes.io/hostname
+        whenUnsatisfiable: ScheduleAnyway
+        labelSelector:
+          matchLabels:
+            app.kubernetes.io/name: {{ .Release.Name }}
+      initContainers:
+        - name: init-keystore-and-truststore
+          image: docker.ozg-sh.de/keystore-truststore-from-tls-secret:latest
+          imagePullPolicy: Always
+          command: ["/bin/sh", "/opt/keystore-truststore-from-tls-secret.sh"]
+          volumeMounts:
+            - name: xta-test-server-tls-store
+              mountPath: "/tls/"
+              readOnly: true
+            - name: store-dir
+              mountPath: "/store/"
+      containers:   
+      - env:
+          - name: spring_profiles_active
+            value: {{ include "app.envSpringProfiles" . }}
+          - name: server_ssl_key-store
+            value: /store/keystore.p12
+          - name: server_ssl_trust-store
+            value: /store/truststore.jks
+          {{- with include "app.getCustomList" . }}
+{{ . | indent 10 }}
+          {{- end }}
+        image: "{{ .Values.image.repo }}/{{ .Values.image.name }}:{{ coalesce (.Values.image).tag "latest" }}"
+        imagePullPolicy: Always
+        name: xta-test-server
+        ports:
+        - containerPort: 8080
+          name: 8080tcp1
+          protocol: TCP
+        - containerPort: 8443
+          name: 8443tcp1
+          protocol: TCP
+        - containerPort: 8081
+          name: metrics
+          protocol: TCP
+        readinessProbe:
+          failureThreshold: 3
+          httpGet:
+            path: /actuator/health/readiness
+            port: 8081
+            scheme: HTTPS
+          periodSeconds: 10
+          successThreshold: 1
+          timeoutSeconds: 3
+        startupProbe:
+          httpGet:
+            path: /actuator/health/readiness
+            port: 8081
+            scheme: HTTPS
+          failureThreshold: 10
+          initialDelaySeconds: 30
+          periodSeconds: 10
+          successThreshold: 1
+          timeoutSeconds: 5
+        resources:
+        {{- with .Values.resources }}
+{{ toYaml . | indent 10 }}
+        {{- end }}
+        securityContext:
+          allowPrivilegeEscalation: false
+          privileged: false
+          readOnlyRootFilesystem: false
+          runAsNonRoot: true
+          {{- with (.Values.securityContext).runAsUser }}
+          runAsUser: {{ . }}
+          {{- end }}
+          {{- with (.Values.securityContext).runAsGroup }}
+          runAsGroup: {{ . }}
+          {{- end }}
+        stdin: true
+        terminationMessagePath: /dev/termination-log
+        terminationMessagePolicy: File
+        tty: true
+        volumeMounts:
+          - name: temp-dir
+            mountPath: "/tmp"
+          - name: store-dir
+            mountPath: "/store/"
+            readOnly: true
+      volumes:
+        - name: temp-dir
+          emptyDir: {}
+        - name: store-dir
+          emptyDir: {}
+        - name: xta-test-server-tls-store
+          secret:
+            secretName: {{ .Release.Name }}-tls-secret
+      dnsConfig: {}
+      dnsPolicy: ClusterFirst
+      {{- with .Values.hostAliases }}
+      hostAliases:
+{{ toYaml . | indent 8 }}
+      {{- end }}
+      imagePullSecrets:
+        - name: {{ required "image-pull-secret must be set" .Values.imagePullSecret }}
+      restartPolicy: Always
+      schedulerName: default-scheduler
+      securityContext: {}
+      terminationGracePeriodSeconds: 30
diff --git a/src/main/helm/templates/ingress.yaml b/src/main/helm/templates/ingress.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..f56f06ad65d67bb9b572a329c851bb9811b9619d
--- /dev/null
+++ b/src/main/helm/templates/ingress.yaml
@@ -0,0 +1,22 @@
+apiVersion: networking.k8s.io/v1
+kind: Ingress
+metadata:
+  name: {{ .Release.Name }}
+  namespace: {{ include "app.namespace" . }}
+  annotations:
+    route.openshift.io/termination: passthrough
+spec:
+  {{- if (.Values.ingress).className }}
+  ingressClassName: {{ .Values.ingress.className }}
+  {{- end }}
+  rules:
+    - host: "{{ .Release.Name }}-{{ include "app.baseDomain" . }}"
+      http:
+        paths:
+          - path: ""
+            pathType: ImplementationSpecific
+            backend:
+              service:
+                name: {{ .Release.Name }}
+                port:
+                  number: 8443
\ No newline at end of file
diff --git a/src/main/helm/templates/network_policy.yaml b/src/main/helm/templates/network_policy.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..deac83a9c9a567c2b50f14ae4d59f8925577fea0
--- /dev/null
+++ b/src/main/helm/templates/network_policy.yaml
@@ -0,0 +1,51 @@
+{{- if not (.Values.networkPolicy).disabled }}
+apiVersion: networking.k8s.io/v1
+kind: NetworkPolicy
+metadata:
+  name: {{ .Release.Name }}-network-policy
+  namespace: {{ include "app.namespace" . }}
+spec:
+  podSelector:
+    matchLabels:
+      {{- include "app.matchLabels" . | indent 6 }}
+  policyTypes:
+    - Ingress
+    - Egress
+  ingress:
+  - ports:
+    - port: 8443
+  - from:
+    - namespaceSelector:
+        matchLabels:
+          name: {{ (.Values.networkPolicy).monitoringNamespace | default "openshift-user-workload-monitoring" }}
+    ports:
+    - protocol: TCP
+      port: 8081
+{{- with (.Values.networkPolicy).additionalIngressConfigLocal }}
+{{ toYaml . | indent 2 }}
+{{- end }}
+{{- with (.Values.networkPolicy).additionalIngressConfigGlobal }}
+{{ toYaml . | indent 2 }}
+{{- end }}
+  egress:
+    - to:
+      - namespaceSelector:
+          matchLabels:
+            kubernetes.io/metadata.name: {{ required "networkPolicy.dnsServerNamespace must be set" (.Values.networkPolicy).dnsServerNamespace }}
+      ports:
+        - port: 53
+          protocol: UDP
+        - port: 53
+          protocol: TCP
+        - port: 5353
+          protocol: UDP
+        - port: 5353
+          protocol: TCP
+{{- with (.Values.networkPolicy).additionalEgressConfigLocal }}
+{{ toYaml . | indent 2 }}
+{{- end }}
+{{- with (.Values.networkPolicy).additionalEgressConfigGlobal }}
+{{ toYaml . | indent 2 }}
+{{- end }}
+
+{{- end }}
\ No newline at end of file
diff --git a/src/main/helm/templates/service.yaml b/src/main/helm/templates/service.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..cc2a471f7122d4980c181ced62da4afde979bab0
--- /dev/null
+++ b/src/main/helm/templates/service.yaml
@@ -0,0 +1,46 @@
+#
+# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
+# Ministerpräsidenten des Landes Schleswig-Holstein
+# Staatskanzlei
+# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
+#
+# Lizenziert unter der EUPL, Version 1.2 oder - sobald
+# diese von der Europäischen Kommission genehmigt wurden -
+# Folgeversionen der EUPL ("Lizenz");
+# Sie dürfen dieses Werk ausschließlich gemäß
+# dieser Lizenz nutzen.
+# Eine Kopie der Lizenz finden Sie hier:
+#
+# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
+#
+# Sofern nicht durch anwendbare Rechtsvorschriften
+# gefordert oder in schriftlicher Form vereinbart, wird
+# die unter der Lizenz verbreitete Software "so wie sie
+# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
+# ausdrücklich oder stillschweigend - verbreitet.
+# Die sprachspezifischen Genehmigungen und Beschränkungen
+# unter der Lizenz sind dem Lizenztext zu entnehmen.
+#
+apiVersion: v1
+kind: Service
+metadata:
+  name: {{ .Release.Name }}
+  namespace: {{ include "app.namespace" . }}
+  labels:
+    {{- include "app.defaultLabels" . | indent 4 }}
+    component: xta-test-server-service
+spec:
+  type: ClusterIP
+  ports:
+    - name: 8080tcp1
+      port: 8080
+      protocol: TCP
+    - name: 8443tcp1
+      port: 8443
+      protocol: TCP
+    - name: metrics
+      port: 8081
+      protocol: TCP
+  selector:
+    {{- include "app.matchLabels" . | indent 4 }}
+    component: xta-test-server
diff --git a/src/main/helm/templates/service_account.yaml b/src/main/helm/templates/service_account.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..8ee2faa572924ab37142e8f6c21bb440c5cf158c
--- /dev/null
+++ b/src/main/helm/templates/service_account.yaml
@@ -0,0 +1,8 @@
+
+{{- if (.Values.serviceAccount).create }}
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+  name: {{ include "app.getServiceAccountName" . }}
+  namespace: {{ include "app.namespace" . }}
+{{- end }}
\ No newline at end of file
diff --git a/src/main/helm/templates/service_monitor.yaml b/src/main/helm/templates/service_monitor.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..621fe6eb9792999ac798703799575c58bb6f6efd
--- /dev/null
+++ b/src/main/helm/templates/service_monitor.yaml
@@ -0,0 +1,43 @@
+#
+# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
+# Ministerpräsidenten des Landes Schleswig-Holstein
+# Staatskanzlei
+# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
+#
+# Lizenziert unter der EUPL, Version 1.2 oder - sobald
+# diese von der Europäischen Kommission genehmigt wurden -
+# Folgeversionen der EUPL ("Lizenz");
+# Sie dürfen dieses Werk ausschließlich gemäß
+# dieser Lizenz nutzen.
+# Eine Kopie der Lizenz finden Sie hier:
+#
+# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
+#
+# Sofern nicht durch anwendbare Rechtsvorschriften
+# gefordert oder in schriftlicher Form vereinbart, wird
+# die unter der Lizenz verbreitete Software "so wie sie
+# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
+# ausdrücklich oder stillschweigend - verbreitet.
+# Die sprachspezifischen Genehmigungen und Beschränkungen
+# unter der Lizenz sind dem Lizenztext zu entnehmen.
+#
+
+apiVersion: monitoring.coreos.com/v1
+kind: ServiceMonitor
+metadata:
+  name: {{ .Release.Name }}
+  namespace: {{ include "app.namespace" . }}
+  labels:
+    {{- include "app.defaultLabels" . | indent 4 }}
+    component: xta-test-server-service-monitor
+spec:
+  endpoints:
+  - port: metrics
+    path: /actuator/prometheus
+  namespaceSelector:
+    matchNames:
+    - {{ include "app.namespace" . }}
+  selector:
+    matchLabels:
+      {{- include "app.matchLabels" . | indent 6 }}
+      component: xta-test-server-service
\ No newline at end of file
diff --git a/src/main/helm/values.yaml b/src/main/helm/values.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..c1c36245d8f78481cf5c3d78b549f8a6f3a382e3
--- /dev/null
+++ b/src/main/helm/values.yaml
@@ -0,0 +1,39 @@
+#
+# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
+# Ministerpräsidenten des Landes Schleswig-Holstein
+# Staatskanzlei
+# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
+#
+# Lizenziert unter der EUPL, Version 1.2 oder - sobald
+# diese von der Europäischen Kommission genehmigt wurden -
+# Folgeversionen der EUPL ("Lizenz");
+# Sie dürfen dieses Werk ausschließlich gemäß
+# dieser Lizenz nutzen.
+# Eine Kopie der Lizenz finden Sie hier:
+#
+# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
+#
+# Sofern nicht durch anwendbare Rechtsvorschriften
+# gefordert oder in schriftlicher Form vereinbart, wird
+# die unter der Lizenz verbreitete Software "so wie sie
+# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
+# ausdrücklich oder stillschweigend - verbreitet.
+# Die sprachspezifischen Genehmigungen und Beschränkungen
+# unter der Lizenz sind dem Lizenztext zu entnehmen.
+#
+
+replicaCount: 1
+  
+image:
+  repo: docker.ozg-sh.de
+  name: xta-test-server
+  tag: latest
+
+router:
+  name: default
+  hostname: router-default.apps.okd.dev.by.ozg-cloud.systems
+
+clientCertificateCommonNames:
+  - clientA
+  - clientB
+  - clientC
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 8a3a8ab41f0cd4154502e7f44c5cd65867fe30e1..475239245aa22c11d6f26c2feb973b72746b34e8 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -44,3 +44,25 @@ logging:
     org.springframework.web: INFO
     org.apache.cxf: INFO
     
+management:
+  server:
+    port: 8081
+  health:
+    livenessState:
+      enabled: true
+    readinessState:
+      enabled: true
+  endpoint:
+    health:
+      group:
+        exploratory:
+          include: livenessState,readinessState,ping
+          show-details: always
+      probes:
+        enabled: true
+    prometheus:
+      enabled: true
+  endpoints:
+    web:
+      exposure:
+        include: "*"
\ No newline at end of file
diff --git a/src/main/resources/store/generate.sh b/src/main/resources/store/generate.sh
index 5906a971e08e0a30faab5ed083c30c6f4ab71de0..d6d7887ac1fc2281230dc6ac72464c0f6628c1ba 100755
--- a/src/main/resources/store/generate.sh
+++ b/src/main/resources/store/generate.sh
@@ -12,6 +12,9 @@ if [ ! -f $ISSUER_ALIAS.key ] || [ ! -f $ISSUER_ALIAS.crt ]; then
   openssl genrsa -out $ISSUER_ALIAS.key 2048
   echo "[1.1] Generate a self-signed certificate for the Xta-Root-CA"
   openssl req -x509 -new -nodes -key $ISSUER_ALIAS.key -sha256 -days 4000 -out $ISSUER_ALIAS.crt -config ca-openssl.cnf -extensions v3_ca
+
+  # echo "[1.2] Generate a keystore for the Xta-Root-CA"
+  # openssl pkcs12 -export -in $ISSUER_ALIAS.crt -inkey $ISSUER_ALIAS.key -out $ISSUER_ALIAS.p12 -name xta-test-server -passout pass:password
 else
   echo "[1.0] Root CA found. Skipping generation."
 fi
diff --git a/src/test/helm-linter-values.yaml b/src/test/helm-linter-values.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..ed41716e50f6c79b8635402fe919e501f622ffe4
--- /dev/null
+++ b/src/test/helm-linter-values.yaml
@@ -0,0 +1,36 @@
+#
+# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch das
+# Ministerium für Energiewende, Klimaschutz, Umwelt und Natur
+# Zentrales IT-Management
+#
+# Lizenziert unter der EUPL, Version 1.2 oder - sobald
+# diese von der Europäischen Kommission genehmigt wurden -
+# Folgeversionen der EUPL ("Lizenz");
+# Sie dürfen dieses Werk ausschließlich gemäß
+# dieser Lizenz nutzen.
+# Eine Kopie der Lizenz finden Sie hier:
+#
+# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
+#
+# Sofern nicht durch anwendbare Rechtsvorschriften
+# gefordert oder in schriftlicher Form vereinbart, wird
+# die unter der Lizenz verbreitete Software "so wie sie
+# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
+# ausdrücklich oder stillschweigend - verbreitet.
+# Die sprachspezifischen Genehmigungen und Beschränkungen
+# unter der Lizenz sind dem Lizenztext zu entnehmen.
+
+
+ozgcloud:
+  bezeichner: helm
+  environment: dev
+  
+networkPolicy:
+  dnsServerNamespace: dummy-dns
+
+
+imagePullSecret: image-pull-secret
+
+baseUrl: dev.xta.de
+
+    
\ No newline at end of file
diff --git a/src/test/helm/certificate_test.yaml b/src/test/helm/certificate_test.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..cf78c770624db55707227add0f4efaec651a6469
--- /dev/null
+++ b/src/test/helm/certificate_test.yaml
@@ -0,0 +1,78 @@
+#
+# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
+# Ministerpräsidenten des Landes Schleswig-Holstein
+# Staatskanzlei
+# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
+#
+# Lizenziert unter der EUPL, Version 1.2 oder - sobald
+# diese von der Europäischen Kommission genehmigt wurden -
+# Folgeversionen der EUPL ("Lizenz");
+# Sie dürfen dieses Werk ausschließlich gemäß
+# dieser Lizenz nutzen.
+# Eine Kopie der Lizenz finden Sie hier:
+#
+# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
+#
+# Sofern nicht durch anwendbare Rechtsvorschriften
+# gefordert oder in schriftlicher Form vereinbart, wird
+# die unter der Lizenz verbreitete Software "so wie sie
+# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
+# ausdrücklich oder stillschweigend - verbreitet.
+# Die sprachspezifischen Genehmigungen und Beschränkungen
+# unter der Lizenz sind dem Lizenztext zu entnehmen.
+#
+
+suite: test certificate.yaml
+release:
+  name: xta-test-server-release-name
+  namespace: sh-helm-test
+templates:
+  - templates/certificate.yaml
+set:  
+  ozgcloud:
+    bezeichner: helm
+  baseUrl: test.by.ozg-cloud.de
+
+tests:
+  - it: check Certificate kind
+    asserts:
+      - isKind:
+          of: Certificate
+  - it: should set metadata name
+    asserts:
+      - equal:
+          path: metadata.name
+          value: xta-test-server-release-name-tls-certificate
+  - it: should set secret name
+    asserts:
+      - equal:
+          path: spec.secretName
+          value: xta-test-server-release-name-tls-secret
+  - it: should set common name
+    asserts:
+      - equal:
+          path: spec.commonName
+          value: xta-test-server-release-name
+  - it: should use cluster ca as issuer
+    asserts:
+      - equal:
+          path: spec.issuerRef.name
+          value: sh-helm-test-ca-issuer
+  - it: should set dns names
+    asserts:
+      - equal:
+          path: spec.dnsNames
+          value:
+            - "xta-test-server-release-name-helm.test.by.ozg-cloud.de"
+  - it: should contain default lables and component lables
+    asserts:
+      - equal:
+          path: metadata.labels
+          value:
+            app.kubernetes.io/instance: xta-test-server
+            app.kubernetes.io/managed-by: Helm
+            app.kubernetes.io/name: xta-test-server-release-name
+            app.kubernetes.io/namespace: sh-helm-test
+            app.kubernetes.io/part-of: ozgcloud
+            app.kubernetes.io/version: 0.0.0-MANAGED-BY-JENKINS
+            helm.sh/chart: xta-test-server-0.0.0-MANAGED-BY-JENKINS
\ No newline at end of file
diff --git a/src/test/helm/client_certificates_test.yaml b/src/test/helm/client_certificates_test.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..2ae85cae3bb8ed2701267936f5a39977c7085080
--- /dev/null
+++ b/src/test/helm/client_certificates_test.yaml
@@ -0,0 +1,74 @@
+#
+# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
+# Ministerpräsidenten des Landes Schleswig-Holstein
+# Staatskanzlei
+# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
+#
+# Lizenziert unter der EUPL, Version 1.2 oder - sobald
+# diese von der Europäischen Kommission genehmigt wurden -
+# Folgeversionen der EUPL ("Lizenz");
+# Sie dürfen dieses Werk ausschließlich gemäß
+# dieser Lizenz nutzen.
+# Eine Kopie der Lizenz finden Sie hier:
+#
+# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
+#
+# Sofern nicht durch anwendbare Rechtsvorschriften
+# gefordert oder in schriftlicher Form vereinbart, wird
+# die unter der Lizenz verbreitete Software "so wie sie
+# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
+# ausdrücklich oder stillschweigend - verbreitet.
+# Die sprachspezifischen Genehmigungen und Beschränkungen
+# unter der Lizenz sind dem Lizenztext zu entnehmen.
+#
+
+suite: test client_certificates.yaml
+release:
+  name: xta-test-server-release-name
+  namespace: sh-helm-test
+templates:
+  - templates/client_certificates.yaml
+set:  
+  ozgcloud:
+    bezeichner: helm
+  baseUrl: test.by.ozg-cloud.de
+
+tests:
+  - it: should configure three certificates by default
+    asserts:
+      - hasDocuments:
+          count: 3
+  - it: should contain a Certificate document
+    set:
+      clientCertificateCommonNames:
+        - CommonName
+    asserts:
+      - containsDocument:
+          kind: Certificate
+          apiVersion: cert-manager.io/v1
+          name: xta-test-server-release-name-commonname-tls-certificate
+          namespace: sh-helm-test
+  - it: should set common name
+    set:
+      clientCertificateCommonNames:
+        - CommonName
+    asserts:
+      - equal:
+          path: spec.commonName
+          value: CommonName
+  - it: should set secret name
+    set:
+      clientCertificateCommonNames:
+        - CommonName
+    asserts:
+      - equal:
+          path: spec.secretName
+          value: xta-test-server-release-name-commonname-tls-secret
+  - it: should use cluster ca as issuer
+    set:
+      clientCertificateCommonNames:
+        - CommonName
+    asserts:
+      - equal:
+          path: spec.issuerRef.name
+          value: sh-helm-test-ca-issuer
diff --git a/src/test/helm/configmap_test.yaml b/src/test/helm/configmap_test.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..977a3590f65ec573917cbe7bc958199613ce343f
--- /dev/null
+++ b/src/test/helm/configmap_test.yaml
@@ -0,0 +1,31 @@
+suite: configmap test
+templates:
+  - templates/configmap.yaml
+release:
+  name: release-name
+  namespace: helm-test
+tests:
+  - it: should have apiVersion
+    asserts:
+      - isAPIVersion:
+          of: v1
+
+  - it: should have kind
+    asserts:
+      - isKind:
+          of: ConfigMap
+
+  - it: should have metadata
+    asserts:
+      - equal:
+          path: metadata.name
+          value: release-name-bindings-type
+      - equal:
+          path: metadata.namespace
+          value: helm-test
+
+  - it: should have data
+    asserts:
+      - equal:
+          path: data.type
+          value: ca-certificates
\ No newline at end of file
diff --git a/src/test/helm/deployment_defaults_labels_test.yaml b/src/test/helm/deployment_defaults_labels_test.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..5f38ba2a8a6873968ac677c856252fc055ec18f1
--- /dev/null
+++ b/src/test/helm/deployment_defaults_labels_test.yaml
@@ -0,0 +1,70 @@
+#
+# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
+# Ministerpräsidenten des Landes Schleswig-Holstein
+# Staatskanzlei
+# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
+#
+# Lizenziert unter der EUPL, Version 1.2 oder - sobald
+# diese von der Europäischen Kommission genehmigt wurden -
+# Folgeversionen der EUPL ("Lizenz");
+# Sie dürfen dieses Werk ausschließlich gemäß
+# dieser Lizenz nutzen.
+# Eine Kopie der Lizenz finden Sie hier:
+#
+# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
+#
+# Sofern nicht durch anwendbare Rechtsvorschriften
+# gefordert oder in schriftlicher Form vereinbart, wird
+# die unter der Lizenz verbreitete Software "so wie sie
+# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
+# ausdrücklich oder stillschweigend - verbreitet.
+# Die sprachspezifischen Genehmigungen und Beschränkungen
+# unter der Lizenz sind dem Lizenztext zu entnehmen.
+#
+
+suite: test deployment default labels
+release:
+  name: xta-test-server
+  namespace: sh-helm-test
+templates:
+  - templates/deployment.yaml
+set:
+  ozgcloud:
+    environment: dev
+  imagePullSecret: image-pull-secret
+tests:
+  - it: check metadata.labels
+    asserts:
+      - equal:
+          path: metadata.labels
+          value:        
+            app.kubernetes.io/instance: xta-test-server
+            app.kubernetes.io/managed-by: Helm
+            app.kubernetes.io/name: xta-test-server
+            app.kubernetes.io/namespace: sh-helm-test
+            app.kubernetes.io/part-of: ozgcloud
+            app.kubernetes.io/version: 0.0.0-MANAGED-BY-JENKINS
+            helm.sh/chart: xta-test-server-0.0.0-MANAGED-BY-JENKINS
+
+  - it: should set spec.selector.matchLabels
+    asserts:
+      - equal:
+          path: spec.selector.matchLabels
+          value:
+            app.kubernetes.io/name: xta-test-server
+            app.kubernetes.io/namespace: sh-helm-test
+
+
+  - it: should have correct deyploment spec.template.metadata.labels
+    asserts:
+      - equal:
+          path: spec.template.metadata.labels
+          value: 
+            app.kubernetes.io/instance: xta-test-server
+            app.kubernetes.io/managed-by: Helm
+            app.kubernetes.io/name: xta-test-server
+            app.kubernetes.io/namespace: sh-helm-test
+            app.kubernetes.io/part-of: ozgcloud
+            app.kubernetes.io/version: 0.0.0-MANAGED-BY-JENKINS
+            component: xta-test-server
+            helm.sh/chart: xta-test-server-0.0.0-MANAGED-BY-JENKINS
diff --git a/src/test/helm/deployment_env_test.yaml b/src/test/helm/deployment_env_test.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..6fb8c36f345c8620c77aca98a9f285fe7686a768
--- /dev/null
+++ b/src/test/helm/deployment_env_test.yaml
@@ -0,0 +1,123 @@
+#
+# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
+# Ministerpräsidenten des Landes Schleswig-Holstein
+# Staatskanzlei
+# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
+#
+# Lizenziert unter der EUPL, Version 1.2 oder - sobald
+# diese von der Europäischen Kommission genehmigt wurden -
+# Folgeversionen der EUPL ("Lizenz");
+# Sie dürfen dieses Werk ausschließlich gemäß
+# dieser Lizenz nutzen.
+# Eine Kopie der Lizenz finden Sie hier:
+#
+# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
+#
+# Sofern nicht durch anwendbare Rechtsvorschriften
+# gefordert oder in schriftlicher Form vereinbart, wird
+# die unter der Lizenz verbreitete Software "so wie sie
+# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
+# ausdrücklich oder stillschweigend - verbreitet.
+# Die sprachspezifischen Genehmigungen und Beschränkungen
+# unter der Lizenz sind dem Lizenztext zu entnehmen.
+#
+
+suite: test deployment container environments 
+templates:
+  - templates/deployment.yaml
+release:
+  namespace: sh-helm-test
+
+tests:
+  - it: should set spring profiles
+    set:
+      ozgcloud:
+        environment: dev
+      imagePullSecret: image-pull-secret
+    asserts:
+      - contains:
+          path: spec.template.spec.containers[0].env
+          content:
+              name: spring_profiles_active
+              value: oc, dev
+  - it: should set keystore
+    set:
+      ozgcloud:
+        environment: dev
+      imagePullSecret: image-pull-secret
+    asserts:
+      - contains:
+          path: spec.template.spec.containers[0].env
+          content:
+            name: server_ssl_key-store
+            value: /store/keystore.p12
+  - it: should set truststore
+    set:
+      ozgcloud:
+        environment: dev
+      imagePullSecret: image-pull-secret
+    asserts:
+      - contains:
+          path: spec.template.spec.containers[0].env
+          content:
+            name: server_ssl_trust-store
+            value: /store/truststore.jks
+  - it: check customList as list
+    set:
+      env.customList:
+        - name: my_test_environment_name
+          value: "A test value"
+        - name: test_environment
+          value: "B test value"
+      ozgcloud:
+        environment: dev
+      imagePullSecret: image-pull-secret
+    asserts:
+      - contains:
+          path: spec.template.spec.containers[0].env
+          content:
+            name: my_test_environment_name
+            value: "A test value"
+      - contains:
+          path: spec.template.spec.containers[0].env
+          content:
+            name: test_environment
+            value: "B test value"
+  - it: check customList as dict
+    set:
+      env.customList:
+        my_test_environment_name: "A test value"
+        test_environment: "B test value"
+      ozgcloud:
+        environment: dev
+      imagePullSecret: image-pull-secret
+    asserts:
+      - contains:
+          path: spec.template.spec.containers[0].env
+          content:
+            name: my_test_environment_name
+            value: "A test value"
+      - contains:
+          path: spec.template.spec.containers[0].env
+          content:
+            name: test_environment
+            value: "B test value"
+
+  - it: check customList test value is not set by default
+    set:
+      ozgcloud:
+        environment: dev
+      imagePullSecret: image-pull-secret
+    asserts:
+      - notContains:
+          path: spec.template.spec.containers[0].env
+          content:
+            name: my_test_environment_name
+            value: "A test value"
+
+  - it: should fail template when env not set
+    set: 
+      imagePullSecret: image-pull-secret
+    asserts:
+      - failedTemplate:
+          errormessage: Environment muss angegeben sein
\ No newline at end of file
diff --git a/src/test/helm/deployment_image_pull_secret_test.yaml b/src/test/helm/deployment_image_pull_secret_test.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..e7020bc33e9fb6e0dbcf84dc2105177184175711
--- /dev/null
+++ b/src/test/helm/deployment_image_pull_secret_test.yaml
@@ -0,0 +1,44 @@
+#
+# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch das
+# Ministerium für Energiewende, Klimaschutz, Umwelt und Natur
+# Zentrales IT-Management
+#
+# Lizenziert unter der EUPL, Version 1.2 oder - sobald
+# diese von der Europäischen Kommission genehmigt wurden -
+# Folgeversionen der EUPL ("Lizenz");
+# Sie dürfen dieses Werk ausschließlich gemäß
+# dieser Lizenz nutzen.
+# Eine Kopie der Lizenz finden Sie hier:
+#
+# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
+#
+# Sofern nicht durch anwendbare Rechtsvorschriften
+# gefordert oder in schriftlicher Form vereinbart, wird
+# die unter der Lizenz verbreitete Software "so wie sie
+# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
+# ausdrücklich oder stillschweigend - verbreitet.
+# Die sprachspezifischen Genehmigungen und Beschränkungen
+# unter der Lizenz sind dem Lizenztext zu entnehmen.
+
+suite: deployment image pull secret
+
+templates:
+  - templates/deployment.yaml
+release:
+  namespace: helm-test
+set:
+  ozgcloud:
+    environment: dev
+tests:
+  - it: should set image pull secret
+    set:
+      imagePullSecret: image-pull-secret
+    asserts:
+      - contains:
+          path: spec.template.spec.imagePullSecrets
+          content:
+            name: image-pull-secret
+  - it: should fail template when image pull secret not set
+    asserts:
+      - failedTemplate:
+          errormessage: image-pull-secret must be set
diff --git a/src/test/helm/deployment_resources_test.yaml b/src/test/helm/deployment_resources_test.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..df9718fca9cb1b8b30a2767cc42633421873d39e
--- /dev/null
+++ b/src/test/helm/deployment_resources_test.yaml
@@ -0,0 +1,44 @@
+#
+# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch das
+# Ministerium für Energiewende, Klimaschutz, Umwelt und Natur
+# Zentrales IT-Management
+#
+# Lizenziert unter der EUPL, Version 1.2 oder - sobald
+# diese von der Europäischen Kommission genehmigt wurden -
+# Folgeversionen der EUPL ("Lizenz");
+# Sie dürfen dieses Werk ausschließlich gemäß
+# dieser Lizenz nutzen.
+# Eine Kopie der Lizenz finden Sie hier:
+#
+# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
+#
+# Sofern nicht durch anwendbare Rechtsvorschriften
+# gefordert oder in schriftlicher Form vereinbart, wird
+# die unter der Lizenz verbreitete Software "so wie sie
+# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
+# ausdrücklich oder stillschweigend - verbreitet.
+# Die sprachspezifischen Genehmigungen und Beschränkungen
+# unter der Lizenz sind dem Lizenztext zu entnehmen.
+
+suite: deployment resources
+
+templates:
+  - templates/deployment.yaml
+release:
+  namespace: helm-test
+set:
+  ozgcloud:
+    environment: dev
+  imagePullSecret: image-pull-secret
+tests:
+  - it: should have customizable resources
+    set:
+      resources: { "test": 1 }
+    asserts:
+      - equal:
+          path: spec.template.spec.containers[0].resources
+          value: { "test": 1 }
+  - it: should not generate resources when values not set
+    asserts:
+      - isEmpty:
+          path: spec.template.spec.containers[0].resources
\ No newline at end of file
diff --git a/src/test/helm/deployment_service_account_test.yaml b/src/test/helm/deployment_service_account_test.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..b1486aa96362da1276a58128697efb7dabd20fc0
--- /dev/null
+++ b/src/test/helm/deployment_service_account_test.yaml
@@ -0,0 +1,32 @@
+suite: deployment service account
+release:
+  name: xta-test-server
+  namespace: by-helm-test
+templates:
+  - templates/deployment.yaml
+set:
+  ozgcloud:
+    environment: dev
+  imagePullSecret: image-pull-secret
+tests:
+  - it: should use service account with default name
+    set:
+      serviceAccount:
+        create: true
+    asserts:
+      - equal:
+          path: spec.template.spec.serviceAccountName
+          value: xta-test-server-service-account
+  - it: should use service account with name
+    set:
+      serviceAccount:
+        create: true
+        name: helm-service-account
+    asserts:
+      - equal:
+          path: spec.template.spec.serviceAccountName
+          value: helm-service-account
+  - it: should use default service account
+    asserts:
+      - isNull:
+          path: spec.template.spec.serviceAccountName
\ No newline at end of file
diff --git a/src/test/helm/deployment_spring_profile_test.yaml b/src/test/helm/deployment_spring_profile_test.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..5d76c9d42e2ff9cc9731d0fa88fbc38281d31084
--- /dev/null
+++ b/src/test/helm/deployment_spring_profile_test.yaml
@@ -0,0 +1,50 @@
+#
+# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
+# Ministerpräsidenten des Landes Schleswig-Holstein
+# Staatskanzlei
+# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
+#
+# Lizenziert unter der EUPL, Version 1.2 oder - sobald
+# diese von der Europäischen Kommission genehmigt wurden -
+# Folgeversionen der EUPL ("Lizenz");
+# Sie dürfen dieses Werk ausschließlich gemäß
+# dieser Lizenz nutzen.
+# Eine Kopie der Lizenz finden Sie hier:
+#
+# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
+#
+# Sofern nicht durch anwendbare Rechtsvorschriften
+# gefordert oder in schriftlicher Form vereinbart, wird
+# die unter der Lizenz verbreitete Software "so wie sie
+# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
+# ausdrücklich oder stillschweigend - verbreitet.
+# Die sprachspezifischen Genehmigungen und Beschränkungen
+# unter der Lizenz sind dem Lizenztext zu entnehmen.
+#
+
+suite: deployment springProfile tests
+release:
+  namespace: sh-helm-test
+templates:
+  - templates/deployment.yaml
+set:
+  ozgcloud:
+    environment: dev
+  imagePullSecret: image-pull-secret
+tests:
+  - it: should override the spring profiles
+    set:
+      env.overrideSpringProfiles: oc,dev,ea
+    asserts:
+      - contains:
+          path: spec.template.spec.containers[0].env
+          content:
+            name: spring_profiles_active
+            value: oc,dev,ea
+  - it: should generate the spring profiles
+    asserts:
+      - contains:
+          path: spec.template.spec.containers[0].env
+          content:
+            name: spring_profiles_active
+            value: oc, dev
diff --git a/src/test/helm/deployment_test.yaml b/src/test/helm/deployment_test.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..5dd2e12ddc323209de721fac1443784ee4dcaa03
--- /dev/null
+++ b/src/test/helm/deployment_test.yaml
@@ -0,0 +1,237 @@
+#
+# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
+# Ministerpräsidenten des Landes Schleswig-Holstein
+# Staatskanzlei
+# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
+#
+# Lizenziert unter der EUPL, Version 1.2 oder - sobald
+# diese von der Europäischen Kommission genehmigt wurden -
+# Folgeversionen der EUPL ("Lizenz");
+# Sie dürfen dieses Werk ausschließlich gemäß
+# dieser Lizenz nutzen.
+# Eine Kopie der Lizenz finden Sie hier:
+#
+# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
+#
+# Sofern nicht durch anwendbare Rechtsvorschriften
+# gefordert oder in schriftlicher Form vereinbart, wird
+# die unter der Lizenz verbreitete Software "so wie sie
+# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
+# ausdrücklich oder stillschweigend - verbreitet.
+# Die sprachspezifischen Genehmigungen und Beschränkungen
+# unter der Lizenz sind dem Lizenztext zu entnehmen.
+#
+
+suite: deployment
+release:
+  name: xta-test-server
+templates:
+  - templates/deployment.yaml
+set:
+  ozgcloud:
+    environment: "default"
+  imagePullSecret: image-pull-secret
+tests:
+  - it: should have metadata values
+    asserts:
+      - isKind:
+          of: Deployment
+      - isAPIVersion:
+          of: apps/v1
+      - equal:
+          path: metadata.name
+          value: "xta-test-server"
+      - equal:
+          path: metadata.namespace
+          value: "NAMESPACE"
+      - exists:
+          path: metadata.labels
+  - it: should have correct general settings
+    asserts:
+      - equal:
+          path: spec.progressDeadlineSeconds
+          value: 600
+      - equal:
+          path: spec.replicas
+          value: 1
+      - equal:
+          path: spec.revisionHistoryLimit
+          value: 10
+      - exists:
+          path: spec.selector
+      - equal:
+          path: spec.selector.matchLabels["app.kubernetes.io/name"]
+          value: "xta-test-server"
+      - equal:
+          path: spec.selector.matchLabels["app.kubernetes.io/namespace"]
+          value: "NAMESPACE"
+      - equal:
+          path: spec.strategy.rollingUpdate.maxSurge
+          value: 1
+      - equal:
+          path: spec.strategy.rollingUpdate.maxUnavailable
+          value: 0
+      - equal:
+          path: spec.strategy.type
+          value: "RollingUpdate"
+  - it: should have correct template configuration
+    asserts:
+      - equal:
+          path: spec.template.metadata.labels["app.kubernetes.io/instance"]
+          value: "xta-test-server"
+      - equal:
+          path: spec.template.metadata.labels.component
+          value: "xta-test-server"
+      - equal:
+          path: spec.template.spec.topologySpreadConstraints[0].maxSkew
+          value: 1
+      - equal:
+          path: spec.template.spec.topologySpreadConstraints[0].topologyKey
+          value: "kubernetes.io/hostname"
+      - equal:
+          path: spec.template.spec.topologySpreadConstraints[0].whenUnsatisfiable
+          value: "ScheduleAnyway"
+      - equal:
+          path: spec.template.spec.topologySpreadConstraints[0].labelSelector.matchLabels["app.kubernetes.io/name"]
+          value: "xta-test-server"
+      - isEmpty:
+          path: spec.template.spec.dnsConfig
+      - equal:
+          path: spec.template.spec.dnsPolicy
+          value: "ClusterFirst"
+      - equal:
+          path: spec.template.spec.restartPolicy
+          value: "Always"
+      - equal:
+          path: spec.template.spec.schedulerName
+          value: "default-scheduler"
+      - isEmpty:
+          path: spec.template.spec.securityContext
+      - equal:
+          path: spec.template.spec.terminationGracePeriodSeconds
+          value: 30
+  - it: should have correct container configuration
+    asserts:
+      - equal:
+          path: spec.template.spec.containers[0].name
+          value: "xta-test-server"
+      - equal:
+          path: spec.template.spec.containers[0].image
+          value: "docker.ozg-sh.de/xta-test-server:latest"
+      - equal:
+          path: spec.template.spec.containers[0].imagePullPolicy
+          value: "Always"
+      - equal:
+          path: spec.template.spec.containers[0].ports[0].containerPort
+          value: 8080
+      - equal:
+          path: spec.template.spec.containers[0].ports[0].name
+          value: "8080tcp1"
+      - equal:
+          path: spec.template.spec.containers[0].ports[0].protocol
+          value: "TCP"
+      - equal:
+          path: spec.template.spec.containers[0].ports[1].containerPort
+          value: 8443
+      - equal:
+          path: spec.template.spec.containers[0].ports[1].name
+          value: "8443tcp1"
+      - equal:
+          path: spec.template.spec.containers[0].ports[1].protocol
+          value: "TCP"
+      - equal:
+          path: spec.template.spec.containers[0].ports[2].containerPort
+          value: 8081
+      - equal:
+          path: spec.template.spec.containers[0].ports[2].name
+          value: "metrics"
+      - equal:
+          path: spec.template.spec.containers[0].ports[2].protocol
+          value: "TCP"
+      - equal:
+          path: spec.template.spec.containers[0].readinessProbe.failureThreshold
+          value: 3
+      - equal:
+          path: spec.template.spec.containers[0].readinessProbe.httpGet.path
+          value: "/actuator/health/readiness"
+      - equal:
+          path: spec.template.spec.containers[0].readinessProbe.httpGet.port
+          value: 8081
+      - equal:
+          path: spec.template.spec.containers[0].readinessProbe.httpGet.scheme
+          value: "HTTPS"
+      - equal:
+          path: spec.template.spec.containers[0].readinessProbe.periodSeconds
+          value: 10
+      - equal:
+          path: spec.template.spec.containers[0].readinessProbe.successThreshold
+          value: 1
+      - equal:
+          path: spec.template.spec.containers[0].readinessProbe.timeoutSeconds
+          value: 3
+      - equal:
+          path: spec.template.spec.containers[0].startupProbe.httpGet.path
+          value: "/actuator/health/readiness"
+      - equal:
+          path: spec.template.spec.containers[0].startupProbe.httpGet.port
+          value: 8081
+      - equal:
+          path: spec.template.spec.containers[0].startupProbe.httpGet.scheme
+          value: "HTTPS"
+      - equal:
+          path: spec.template.spec.containers[0].startupProbe.failureThreshold
+          value: 10
+      - equal:
+          path: spec.template.spec.containers[0].startupProbe.initialDelaySeconds
+          value: 30
+      - equal:
+          path: spec.template.spec.containers[0].startupProbe.periodSeconds
+          value: 10
+      - equal:
+          path: spec.template.spec.containers[0].startupProbe.successThreshold
+          value: 1
+      - equal:
+          path: spec.template.spec.containers[0].startupProbe.timeoutSeconds
+          value: 5
+      - equal:
+          path: spec.template.spec.containers[0].securityContext.allowPrivilegeEscalation
+          value: false
+      - equal:
+          path: spec.template.spec.containers[0].securityContext.privileged
+          value: false
+      - equal:
+          path: spec.template.spec.containers[0].securityContext.readOnlyRootFilesystem
+          value: false
+      - equal:
+          path: spec.template.spec.containers[0].securityContext.runAsNonRoot
+          value: true
+      - isNull:
+          path: spec.template.spec.containers[0].securityContext.runAsUser
+      - isNull:
+          path: spec.template.spec.containers[0].securityContext.runAsGroup
+      - equal:
+          path: spec.template.spec.containers[0].stdin
+          value: true
+      - equal:
+          path: spec.template.spec.containers[0].terminationMessagePath
+          value: "/dev/termination-log"
+      - equal:
+          path: spec.template.spec.containers[0].terminationMessagePolicy
+          value: "File"
+      - equal:
+          path: spec.template.spec.containers[0].tty
+          value: true
+  - it: check containers runAsUser
+    set:
+      securityContext.runAsUser: 1000
+    asserts:
+      - equal:
+          path: spec.template.spec.containers[0].securityContext.runAsUser
+          value: 1000
+  - it: check runAsGroup
+    set:
+      securityContext.runAsGroup: 1000
+    asserts:
+      - equal:
+          path: spec.template.spec.containers[0].securityContext.runAsGroup
+          value: 1000
\ No newline at end of file
diff --git a/src/test/helm/deployment_volumes_test.yaml b/src/test/helm/deployment_volumes_test.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..2a7bdf4518be61ed673976bc4fc02635298f00e8
--- /dev/null
+++ b/src/test/helm/deployment_volumes_test.yaml
@@ -0,0 +1,66 @@
+suite: deployment volumes test
+templates:
+  - templates/deployment.yaml
+release:
+  name: helm-test
+  namespace: ns-helm-test
+set:
+  ozgcloud:
+    environment: test
+  imagePullSecret: image-pull-secret
+tests:
+  - it: should have temp-dir volume
+    asserts:
+      - contains:
+          path: spec.template.spec.containers[0].volumeMounts
+          content:
+            name: temp-dir
+            mountPath: "/tmp"
+
+  - it: should have temp-dir volume mount
+    asserts:
+      - contains:
+          path: spec.template.spec.volumes
+          content:
+            name: temp-dir
+            emptyDir: {}
+
+  - it: should have store volume
+    asserts:
+      - contains:
+          path: spec.template.spec.volumes
+          content:
+            name: store-dir
+            emptyDir: {}
+  - it: should have store volume mount in initContainer
+    asserts:
+      - contains:
+          path: spec.template.spec.initContainers[0].volumeMounts
+          content:
+            name: store-dir
+            mountPath: "/store/"
+  - it: should have truststore volume mount in container
+    asserts:
+      - contains:
+          path: spec.template.spec.containers[0].volumeMounts
+          content:
+            name: store-dir
+            mountPath: "/store/"
+            readOnly: true
+
+  - it: should have tls store volume
+    asserts:
+      - contains:
+          path: spec.template.spec.volumes
+          content:
+            name: xta-test-server-tls-store
+            secret:
+              secretName: helm-test-tls-secret
+  - it: should have truststore volume mount in initContainer
+    asserts:
+      - contains:
+          path: spec.template.spec.initContainers[0].volumeMounts
+          content:
+            name: xta-test-server-tls-store
+            mountPath: "/tls/"
+            readOnly: true
\ No newline at end of file
diff --git a/src/test/helm/ingress_test.yaml b/src/test/helm/ingress_test.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..8a67ad48191572b1e7b3f726c9bf5fd4d99d76e4
--- /dev/null
+++ b/src/test/helm/ingress_test.yaml
@@ -0,0 +1,76 @@
+#
+# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
+# Ministerpräsidenten des Landes Schleswig-Holstein
+# Staatskanzlei
+# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
+#
+# Lizenziert unter der EUPL, Version 1.2 oder - sobald
+# diese von der Europäischen Kommission genehmigt wurden -
+# Folgeversionen der EUPL ("Lizenz");
+# Sie dürfen dieses Werk ausschließlich gemäß
+# dieser Lizenz nutzen.
+# Eine Kopie der Lizenz finden Sie hier:
+#
+# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
+#
+# Sofern nicht durch anwendbare Rechtsvorschriften
+# gefordert oder in schriftlicher Form vereinbart, wird
+# die unter der Lizenz verbreitete Software "so wie sie
+# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
+# ausdrücklich oder stillschweigend - verbreitet.
+# Die sprachspezifischen Genehmigungen und Beschränkungen
+# unter der Lizenz sind dem Lizenztext zu entnehmen.
+#
+
+suite: test ingress.yaml
+release:
+  name: xta-test-server
+  namespace: sh-helm-test
+templates:
+  - templates/ingress.yaml
+set:  
+  ozgcloud:
+    bezeichner: helm
+  baseUrl: test.by.ozg-cloud.de
+
+tests:
+  - it: check ingress kind
+    asserts:
+      - isKind:
+          of: Ingress
+  - it: should enable ssl passthrough
+    asserts:
+      - equal:
+          path: metadata.annotations["route.openshift.io/termination"]
+          value: "passthrough"
+
+  - it: should not create ingress tls/ingressClass by default
+    asserts:
+      - isNull:
+          path: spec.ingressClassName
+  - it: should set ingress tls/ingressClass
+    set:
+      ingress:
+        className: ingress
+    asserts:
+      - equal:
+          path: spec.ingressClassName
+          value: ingress
+  - it: should create rules correctly
+    asserts:
+      - equal:
+          path: spec.rules[0].http.paths[0]
+          value: 
+              path: ""
+              pathType: ImplementationSpecific
+              backend:
+                service:
+                  name: xta-test-server
+                  port: 
+                    number: 8443
+
+  - it: should set hostname
+    asserts:
+      - equal:
+          path: spec.rules[0].host
+          value: xta-test-server-helm.test.by.ozg-cloud.de
diff --git a/src/test/helm/network_policy_test.yaml b/src/test/helm/network_policy_test.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..5a00166bd6872bde24534bf803308b076604f340
--- /dev/null
+++ b/src/test/helm/network_policy_test.yaml
@@ -0,0 +1,204 @@
+#
+# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
+# Ministerpräsidenten des Landes Schleswig-Holstein
+# Staatskanzlei
+# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
+#
+# Lizenziert unter der EUPL, Version 1.2 oder - sobald
+# diese von der Europäischen Kommission genehmigt wurden -
+# Folgeversionen der EUPL ("Lizenz");
+# Sie dürfen dieses Werk ausschließlich gemäß
+# dieser Lizenz nutzen.
+# Eine Kopie der Lizenz finden Sie hier:
+#
+# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
+#
+# Sofern nicht durch anwendbare Rechtsvorschriften
+# gefordert oder in schriftlicher Form vereinbart, wird
+# die unter der Lizenz verbreitete Software "so wie sie
+# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
+# ausdrücklich oder stillschweigend - verbreitet.
+# Die sprachspezifischen Genehmigungen und Beschränkungen
+# unter der Lizenz sind dem Lizenztext zu entnehmen.
+#
+
+suite: network policy xta-test-server test
+release:
+  name: xta-test-server
+  namespace: by-helm-test
+templates:
+  - templates/network_policy.yaml
+tests:
+  - it: should match apiVersion
+    set:
+      networkPolicy:
+        dnsServerNamespace: kube-system
+    asserts:
+      - isAPIVersion:
+          of: networking.k8s.io/v1
+  - it: should match kind
+    set:
+      networkPolicy:
+        dnsServerNamespace: kube-system
+    asserts:
+      - isKind:
+          of: NetworkPolicy
+  - it: validate metadata
+    set:
+      networkPolicy:
+        dnsServerNamespace: kube-system
+    asserts:
+      - equal:
+          path: metadata
+          value:
+            name: xta-test-server-network-policy
+            namespace: by-helm-test
+  - it: validate spec
+    set:
+      networkPolicy:
+        dnsServerNamespace: kube-system
+    asserts:
+      - contains:
+          path: spec.ingress
+          content:
+            ports:
+              - port: 8443
+
+  - it: add ingress rule by values local
+    set:
+      networkPolicy:
+        dnsServerNamespace: test-namespace-dns
+        additionalIngressConfigLocal:
+        - from:
+          - podSelector: 
+              matchLabels:
+                component: client2
+    asserts:
+      - contains:
+          path: spec.ingress
+          content:
+            from:
+            - podSelector: 
+                matchLabels:
+                  component: client2
+
+  - it: set ingress monitoring namespace rule
+    set:
+      networkPolicy:
+        dnsServerNamespace: test-namespace-dns
+        monitoringNamespace: monitoring
+    asserts:
+      - contains:
+          path: spec.ingress
+          content:
+            from:
+            - namespaceSelector:
+                matchLabels:
+                  name: "monitoring"
+            ports:
+            - protocol: TCP
+              port: 8081
+  - it: add ingress rule by values global
+    set:
+      networkPolicy:
+        dnsServerNamespace: test-namespace-dns
+        additionalIngressConfigGlobal:
+        - from:
+          - podSelector: 
+              matchLabels:
+                component: client2
+    asserts:
+      - contains:
+          path: spec.ingress
+          content:
+            from:
+            - podSelector: 
+                matchLabels:
+                  component: client2
+
+  - it: add ingress rule by values global
+    set:
+      networkPolicy:
+        dnsServerNamespace: test-namespace-dns
+        additionalIngressConfigGlobal:
+        - from:
+          - podSelector: 
+              matchLabels:
+                component: client2
+    asserts:
+      - contains:
+          path: spec.ingress
+          content:
+            from:
+            - podSelector: 
+                matchLabels:
+                  component: client2
+
+
+  - it: add egress rule by values local
+    set:
+      networkPolicy:
+        dnsServerNamespace: test-namespace-dns
+        additionalIngressConfigLocal:
+        - to:
+          - podSelector: 
+              matchLabels:
+                component: client2
+    asserts:
+      - contains:
+          path: spec.ingress
+          content:
+            to:
+            - podSelector: 
+                matchLabels:
+                  component: client2
+
+  - it: add egress rule by values global
+    set:
+      networkPolicy:
+        dnsServerNamespace: test-namespace-dns
+        additionalIngressConfigGlobal:
+        - to:
+          - podSelector: 
+              matchLabels:
+                component: client2
+    asserts:
+      - contains:
+          path: spec.ingress
+          content:
+            to:
+            - podSelector: 
+                matchLabels:
+                  component: client2
+              
+  - it: test network policy disabled
+    set:
+      networkPolicy:
+        disabled: true
+    asserts:
+      - hasDocuments:
+          count: 0
+
+  - it: test network policy unset should be disabled
+    set:
+      networkPolicy:
+        disabled: false
+        dnsServerNamespace: test-dns-server-namespace
+    asserts:
+      - hasDocuments:
+          count: 1
+  - it: test network policy dnsServerNamespace must be set message
+    set:
+      networkPolicy:
+        disabled: false
+    asserts:
+      - failedTemplate:
+          errorMessage: networkPolicy.dnsServerNamespace must be set
+
+  - it: test network policy should be enabled by default
+    set:
+      networkPolicy:
+        dnsServerNamespace: test-dns-server-namespace
+    asserts:
+      - hasDocuments:
+          count: 1
\ No newline at end of file
diff --git a/src/test/helm/service_account_test.yaml b/src/test/helm/service_account_test.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..db871fdcda337c7094df9eab2266ff928d7f1081
--- /dev/null
+++ b/src/test/helm/service_account_test.yaml
@@ -0,0 +1,40 @@
+suite: service account test
+release:
+  name: xta-test-server
+  namespace: helm-test
+templates:
+  - templates/service_account.yaml
+tests:
+  - it: should create service account with default name
+    set:
+      serviceAccount:
+        create: true
+    asserts:
+      - isKind:
+          of: ServiceAccount
+      - isAPIVersion:
+          of: v1
+      - equal:
+          path: metadata.name
+          value: xta-test-server-service-account
+      - equal:
+          path: metadata.namespace
+          value: helm-test
+  - it: should create service account with name
+    set:
+      serviceAccount:
+        create: true
+        name: helm-service-account
+    asserts:
+      - isKind:
+          of: ServiceAccount
+      - equal:
+          path: metadata.name
+          value: helm-service-account
+      - equal:
+          path: metadata.namespace
+          value: helm-test
+  - it: should not create service account
+    asserts:
+      - hasDocuments:
+        count: 0
\ No newline at end of file
diff --git a/src/test/helm/service_monitor_test.yaml b/src/test/helm/service_monitor_test.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..5d7ffe4cb33c6ba91b748630ed08dace5516bc64
--- /dev/null
+++ b/src/test/helm/service_monitor_test.yaml
@@ -0,0 +1,83 @@
+#
+# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
+# Ministerpräsidenten des Landes Schleswig-Holstein
+# Staatskanzlei
+# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
+#
+# Lizenziert unter der EUPL, Version 1.2 oder - sobald
+# diese von der Europäischen Kommission genehmigt wurden -
+# Folgeversionen der EUPL ("Lizenz");
+# Sie dürfen dieses Werk ausschließlich gemäß
+# dieser Lizenz nutzen.
+# Eine Kopie der Lizenz finden Sie hier:
+#
+# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
+#
+# Sofern nicht durch anwendbare Rechtsvorschriften
+# gefordert oder in schriftlicher Form vereinbart, wird
+# die unter der Lizenz verbreitete Software "so wie sie
+# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
+# ausdrücklich oder stillschweigend - verbreitet.
+# Die sprachspezifischen Genehmigungen und Beschränkungen
+# unter der Lizenz sind dem Lizenztext zu entnehmen.
+#
+
+suite: test service_monitor
+release:
+  name: xta-test-server
+  namespace: sh-helm-test
+templates:
+  - templates/service_monitor.yaml
+tests:
+  - it: should have basic info and the label component with value xta-test-server-service-monitor attached
+    asserts:
+      - isKind:
+          of: ServiceMonitor
+      - isAPIVersion:
+          of: monitoring.coreos.com/v1
+      - equal:
+          path: metadata.name
+          value: xta-test-server
+      - equal:
+          path: metadata.namespace
+          value: sh-helm-test
+      - equal:
+          path: metadata.labels["component"]
+          value: xta-test-server-service-monitor
+      
+  - it: should contain default lables and component lables
+    asserts:
+      - equal:
+          path: metadata.labels
+          value:
+            app.kubernetes.io/instance: xta-test-server
+            app.kubernetes.io/managed-by: Helm
+            app.kubernetes.io/name: xta-test-server
+            app.kubernetes.io/namespace: sh-helm-test
+            app.kubernetes.io/part-of: ozgcloud
+            app.kubernetes.io/version: 0.0.0-MANAGED-BY-JENKINS
+            component: xta-test-server-service-monitor
+            helm.sh/chart: xta-test-server-0.0.0-MANAGED-BY-JENKINS
+
+  - it: should have the metrics endpoint configured by default
+    asserts:
+      - contains:
+          path: spec.endpoints
+          content:
+            port: metrics
+            path: /actuator/prometheus
+
+  - it: namespace selector should contain the namespace
+    asserts:
+      - contains:
+          path: spec.namespaceSelector.matchNames
+          content: sh-helm-test
+
+  - it: selector should contain helm recommended labels name and namespace
+    asserts:
+      - equal:
+          path: spec.selector.matchLabels
+          value: 
+            app.kubernetes.io/name: xta-test-server
+            app.kubernetes.io/namespace: sh-helm-test
+            component: xta-test-server-service
diff --git a/src/test/helm/service_test.yaml b/src/test/helm/service_test.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..4c9156d2b22738292f31324cc1baf288a348dd8c
--- /dev/null
+++ b/src/test/helm/service_test.yaml
@@ -0,0 +1,95 @@
+#
+# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch das
+# Ministerium für Energiewende, Klimaschutz, Umwelt und Natur
+# Zentrales IT-Management
+#
+# Lizenziert unter der EUPL, Version 1.2 oder - sobald
+# diese von der Europäischen Kommission genehmigt wurden -
+# Folgeversionen der EUPL ("Lizenz");
+# Sie dürfen dieses Werk ausschließlich gemäß
+# dieser Lizenz nutzen.
+# Eine Kopie der Lizenz finden Sie hier:
+#
+# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
+#
+# Sofern nicht durch anwendbare Rechtsvorschriften
+# gefordert oder in schriftlicher Form vereinbart, wird
+# die unter der Lizenz verbreitete Software "so wie sie
+# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
+# ausdrücklich oder stillschweigend - verbreitet.
+# Die sprachspezifischen Genehmigungen und Beschränkungen
+# unter der Lizenz sind dem Lizenztext zu entnehmen.
+
+suite: service
+
+templates:
+  - templates/service.yaml
+release:
+  name: xta-test-server
+  namespace: helm-test
+
+tests:
+  - it: has expected document values
+    asserts:
+      - containsDocument:
+          kind: Service
+          apiVersion: v1
+          name: xta-test-server
+          namespace: helm-test
+  - it: should be of type ClusterIP
+    asserts:
+      - equal:
+          path: spec.type
+          value: ClusterIP
+  - it: has http port 8080
+    asserts:
+      - contains:
+          path: spec.ports
+          content:
+            name: 8080tcp1
+            port: 8080
+            protocol: TCP
+           
+  - it: has http port 8443
+    asserts:
+      - contains:
+          path: spec.ports
+          content:
+            name: 8443tcp1
+            port: 8443
+            protocol: TCP
+     
+  - it: has metrics port
+    asserts:
+      - contains:
+          path: spec.ports
+          content:
+            name: metrics
+            port: 8081
+            protocol: TCP
+  - it: should contain helm recommended labels name and namespace
+    asserts:
+      - equal:
+          path: spec.selector["app.kubernetes.io/name"]
+          value: xta-test-server
+      - equal:
+          path: spec.selector["app.kubernetes.io/namespace"]
+          value: helm-test
+  - it: has selector component
+    asserts:
+      - equal:
+          path: spec.selector.component
+          value: xta-test-server
+  - it: should contain default lables and component lables
+    asserts:
+      - equal:
+          path: metadata.labels
+          value:
+            app.kubernetes.io/instance: xta-test-server
+            app.kubernetes.io/managed-by: Helm
+            app.kubernetes.io/name: xta-test-server
+            app.kubernetes.io/namespace: helm-test
+            app.kubernetes.io/part-of: ozgcloud
+            app.kubernetes.io/version: 0.0.0-MANAGED-BY-JENKINS
+            component: xta-test-server-service
+            helm.sh/chart: xta-test-server-0.0.0-MANAGED-BY-JENKINS
\ No newline at end of file