diff --git a/Jenkinsfile b/Jenkinsfile
index ec06a286b328e9db37cbb3560af803ce248dce2e..9bb110e4afb5ce6d635a114f7830aa44d82a9536 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -135,7 +135,7 @@ pipeline {
                     HELM_CHART_VERSION = generateHelmChartVersion()
 
                     dir('src/main/helm') {
-                        sh "helm lint -f test-values.yaml"
+                        sh "helm lint -f ../../test/helm-linter-values.yaml"
 
                         sh "helm unittest --helm3 -f '../../test/helm/*.yaml' -v '../../test/unit-values.yaml' ."
 
diff --git a/common/pom.xml b/common/pom.xml
index 2bdfbf447d0a29bac8df22e7260158197667eec1..9efae59c15cc8dd375e623b60b027133b6d857da 100644
--- a/common/pom.xml
+++ b/common/pom.xml
@@ -31,7 +31,7 @@
 	<parent>
 		<groupId>de.ozgcloud.eingang</groupId>
 		<artifactId>eingang-manager</artifactId>
-		<version>2.0.0-SNAPSHOT</version>
+		<version>2.1.0-SNAPSHOT</version>
 		<relativePath>../</relativePath>
 	</parent>
 	<artifactId>common</artifactId>
diff --git a/enterprise-adapter/pom.xml b/enterprise-adapter/pom.xml
index 087694ce0450c2d56f32fb917b607562b228759e..e3ee923984e3a9a8a5bf7b8b3fcedb0cf3ec2111 100644
--- a/enterprise-adapter/pom.xml
+++ b/enterprise-adapter/pom.xml
@@ -4,15 +4,13 @@
 	<parent>
 		<groupId>de.ozgcloud.eingang</groupId>
 		<artifactId>eingang-manager</artifactId>
-		<version>2.0.0-SNAPSHOT</version>
+		<version>2.1.0-SNAPSHOT</version>
 	</parent>
 	<artifactId>enterprise-adapter</artifactId>
 	<name>EM - Enterprise Interface Adapter</name>
 
 	<properties>
-		<spring-boot.build-image.imageName>
-			docker.ozg-sh.de/enterprise-adapter:build-latest
-		</spring-boot.build-image.imageName>
+		<spring-boot.build-image.imageName>docker.ozg-sh.de/enterprise-adapter:build-latest</spring-boot.build-image.imageName>
 	</properties>
 
 	<dependencies>
diff --git a/formcycle-adapter/formcycle-adapter-impl/pom.xml b/formcycle-adapter/formcycle-adapter-impl/pom.xml
index 094afe79d2140f257df3d7ca132978074d8aad80..ece347c1c30b0c532fb8a814e811bbc6cfd4aaae 100644
--- a/formcycle-adapter/formcycle-adapter-impl/pom.xml
+++ b/formcycle-adapter/formcycle-adapter-impl/pom.xml
@@ -29,7 +29,7 @@
 	<parent>
 		<groupId>de.ozgcloud.eingang</groupId>
 		<artifactId>formcycle-adapter</artifactId>
-		<version>2.0.0-SNAPSHOT</version>
+		<version>2.1.0-SNAPSHOT</version>
 		<relativePath>../</relativePath>
 	</parent>
 
diff --git a/formcycle-adapter/formcycle-adapter-interface/pom.xml b/formcycle-adapter/formcycle-adapter-interface/pom.xml
index 16e4a43119a366e482974b1e1783122e99be18bf..79ed14bc702f298771d4e97310b56642338e23cb 100644
--- a/formcycle-adapter/formcycle-adapter-interface/pom.xml
+++ b/formcycle-adapter/formcycle-adapter-interface/pom.xml
@@ -29,17 +29,17 @@
 	<parent>
 		<groupId>de.ozgcloud.common</groupId>
 		<artifactId>ozgcloud-common-dependencies</artifactId>
-		<version>3.0.0-SNAPSHOT</version>
+		<version>3.0.0</version>
 		<relativePath/>
 	</parent>
 
 	<groupId>de.ozgcloud.eingang</groupId>
 	<artifactId>formcycle-adapter-interface</artifactId>
 	<name>EM - Formcycle Adapter - Interface</name>
-	<version>2.0.0-SNAPSHOT</version>
+	<version>2.1.0-SNAPSHOT</version>
 	
 	<properties>
-		<vorgang-manager.version>2.0.0-SNAPSHOT</vorgang-manager.version>
+		<vorgang-manager.version>2.0.0</vorgang-manager.version>
 		<java.version>17</java.version>
 		<maven.compiler.source>${java.version}</maven.compiler.source>
 		<maven.compiler.target>${java.version}</maven.compiler.target>
diff --git a/formcycle-adapter/pom.xml b/formcycle-adapter/pom.xml
index c3f4ba6390e2ea3ea70863bf2ac98aebbe7dbc22..606abe550b5d079f85b27fb05e5ec1ecdc0357b8 100644
--- a/formcycle-adapter/pom.xml
+++ b/formcycle-adapter/pom.xml
@@ -29,7 +29,7 @@
 	<parent>
 		<groupId>de.ozgcloud.eingang</groupId>
 		<artifactId>eingang-manager</artifactId>
-		<version>2.0.0-SNAPSHOT</version>
+		<version>2.1.0-SNAPSHOT</version>
 	</parent>
 
 	<artifactId>formcycle-adapter</artifactId>
diff --git a/formsolutions-adapter/pom.xml b/formsolutions-adapter/pom.xml
index 476f5f3e7d6581999883ca804861392b13b328b7..d890d223e7d8117323f585971b5ae414a7078180 100644
--- a/formsolutions-adapter/pom.xml
+++ b/formsolutions-adapter/pom.xml
@@ -32,7 +32,7 @@
 	<parent>
 		<groupId>de.ozgcloud.eingang</groupId>
 		<artifactId>eingang-manager</artifactId>
-		<version>2.0.0-SNAPSHOT</version>
+		<version>2.1.0-SNAPSHOT</version>
 		<relativePath>../</relativePath>
 	</parent>
 
diff --git a/forwarder/pom.xml b/forwarder/pom.xml
index 2f42fe015d8462d6dde248cd342186abb2a13539..0fe701608ee19d9175105733344628e9bb97a6fc 100644
--- a/forwarder/pom.xml
+++ b/forwarder/pom.xml
@@ -29,7 +29,7 @@
 	<parent>
 		<groupId>de.ozgcloud.eingang</groupId>
 		<artifactId>eingang-manager</artifactId>
-		<version>2.0.0-SNAPSHOT</version>
+		<version>2.1.0-SNAPSHOT</version>
 		<relativePath>../</relativePath>
 	</parent>
 
diff --git a/intelliform-adapter/pom.xml b/intelliform-adapter/pom.xml
index e9086dc1add897c613aa9a079d4dc4277e2ca164..bc56cc19f243e50f2cd5541343441d5ffd3b8656 100644
--- a/intelliform-adapter/pom.xml
+++ b/intelliform-adapter/pom.xml
@@ -31,7 +31,7 @@
 	<parent>
 		<groupId>de.ozgcloud.eingang</groupId>
 		<artifactId>eingang-manager</artifactId>
-		<version>2.0.0-SNAPSHOT</version>
+		<version>2.1.0-SNAPSHOT</version>
 		<relativePath>../</relativePath>
 	</parent>
 
diff --git a/pom.xml b/pom.xml
index cca6ef0de0657c8f9b6302a00122eabf317ecf09..1e7f64f507d8fa5a93eaf2150c3bad8035f85a85 100644
--- a/pom.xml
+++ b/pom.xml
@@ -31,13 +31,13 @@
 	<parent>
 		<groupId>de.ozgcloud.common</groupId>
 		<artifactId>ozgcloud-common-parent</artifactId>
-		<version>3.0.0-SNAPSHOT</version>
+		<version>3.0.0</version>
 		<relativePath/> <!-- lookup parent from repository -->
 	</parent>
 
 	<groupId>de.ozgcloud.eingang</groupId>
 	<artifactId>eingang-manager</artifactId>
-	<version>2.0.0-SNAPSHOT</version>
+	<version>2.1.0-SNAPSHOT</version>
 	<packaging>pom</packaging>
 	<name>OZG-Cloud Eingang Manager</name>
 
@@ -56,7 +56,7 @@
 	<properties>
 		<mapstruct.version>1.4.2.Final</mapstruct.version>
 
-		<vorgang-manager.version>2.0.0-SNAPSHOT</vorgang-manager.version>
+		<vorgang-manager.version>2.0.0</vorgang-manager.version>
 
 		<jsoup.version>1.14.3</jsoup.version>
 		<xmlschema.version>2.3.0</xmlschema.version>
diff --git a/router/pom.xml b/router/pom.xml
index 9ccbaa12ffa05e0675c2ff23231dab22e9288986..03fe0e2cfabc5bf5662a9bf866729b8e38ad7d87 100644
--- a/router/pom.xml
+++ b/router/pom.xml
@@ -29,7 +29,7 @@
 	<parent>
 		<groupId>de.ozgcloud.eingang</groupId>
 		<artifactId>eingang-manager</artifactId>
-		<version>2.0.0-SNAPSHOT</version>
+		<version>2.1.0-SNAPSHOT</version>
 		<relativePath>../</relativePath>
 	</parent>
 
diff --git a/run_helm_test.sh b/run_helm_test.sh
index 7324e7d118cdd0dd4d8815201c07089ea5122d12..5c2ac8a359d9b3be43e39c05eddf49e36d5f2a2d 100755
--- a/run_helm_test.sh
+++ b/run_helm_test.sh
@@ -2,6 +2,6 @@
 
 set -e
 
-helm template  ./src/main/helm/ -f src/test/unit-values.yaml
-helm lint -f src/test/unit-values.yaml ./src/main/helm/
+helm template  ./src/main/helm/ -f src/test/helm-linter-values.yaml
+helm lint -f src/test/helm-linter-values.yaml ./src/main/helm/
 cd src/main/helm && helm unittest --helm3 -f '../../test/helm/*.yaml' -v '../../test/unit-values.yaml' .
\ No newline at end of file
diff --git a/semantik-adapter/pom.xml b/semantik-adapter/pom.xml
index c6f87a717ed4beaa09a51cee063383fc2425c6fc..53f0873d74e443f7218dc94895a2ca7a135461a8 100644
--- a/semantik-adapter/pom.xml
+++ b/semantik-adapter/pom.xml
@@ -30,7 +30,7 @@
 	<parent>
 		<groupId>de.ozgcloud.eingang</groupId>
 		<artifactId>eingang-manager</artifactId>
-		<version>2.0.0-SNAPSHOT</version>
+		<version>2.1.0-SNAPSHOT</version>
 	</parent>
 	
 	<artifactId>semantik-adapter</artifactId>
diff --git a/src/main/helm/README.md b/src/main/helm/README.md
index a5f2ffa71abef0d610826b5f699d01e93a530d58..343f5028d591329a068cf876ba38de3dd9b642a5 100644
--- a/src/main/helm/README.md
+++ b/src/main/helm/README.md
@@ -1,35 +1,93 @@
-# Helm
-
-## Linter
-
-`helm lint -f test-values.yaml`
-
-## Unit-Tests
-
-Für Unit-Tests wird das helm [helm-unittest](https://github.com/quintush/helm-unittest) plugin benötigt. Die Unit-Tests liegen im Verzeichnis src/test/helm
-
-`helm unittest -f '../../test/helm/*.yaml' .`
-
-## SyntaxCheck
-
-`helm template --debug -f test-values.yaml .`
-
-## Package
-
-`helm package --version=[version] .`
-
-## Versionierung
-
-Jenkins verwendet die Version aus der pom.xml
-
-### Master Branch
-
-Im master Branch werden die ersten 7 Zeichen vom git commit hash an die Version gehangen.
-
-### Release Branch
-
-Ist nur die Version aus der pom.xml
-
-### Feature Branch
-
-In einem feature Branch wird der Branchname an die Version gehangen.
\ No newline at end of file
+# Intelliform Adapter
+
+Adapter zum empfangen von Formulardaten von einem IntellForm basierten Formularserver, zum Beispiel iAFM (integriertes Antrags- und Formularmanagement).
+
+## Routingkonfiguration
+
+### Vorgang-Manager Instanzen
+
+Für alle Vorgang-Manager-Instanzen, die von dem Adapter erreichbar sein sollen, muss in das _Environment_ ein Eintrag mit dem GRPC-Service ergänzt werden:
+
+```yaml
+grpc.client.vorgang-manager-*vorgang-manager-name*.address:*url und port*
+grpc.client.vorgang-manager-*vorgang-manager-name*.negotiationType: PLAINTEXT
+```
+
+### Fallback Strategy
+
+Die Fallback Stratey steuert wie mit Eingängen umgegangen werden soll, für die keine passende Vorgang-Manager-Instanze gefunden werden konnte.
+
+Folgende Optionen stehen zur Verfügung:
+
+- **DENY** der Antrag wird mit einer Fehlermeldung abgelehnt. Dies funktioniert nur, solange die Abarbeitung synchron erfolgt.
+
+- **FUNDSTELLE** der Antrag wird an eine zentrale Fundstelle weitergeleitet. Dafür muss der Name der Vorgang-Manager-Instanze, die als Fundstelle fungiert, eingetragen werden.
+
+### Routing Strategy
+
+Die Routing Strategy steuert wie das Routing konfiguriert wird und wieviele Vorgang-Manager-Instanzen berücksichtigt werden können.
+
+Folgende Optionen stehen zur Verfügung:
+
+- **MULTI** es kann an beliebig viele Vorgang-Manager-Instanzen geroutet werden. Dafür muss in der Environment ein Mapping der Organisationseinheit-Id auf den Namen einer Vorgang-Manager-Instanz konfiguriert werden.
+
+```yaml
+ozgcloud.adapter.organisationseinheiten.*id*: *vorgang-manager-name*
+```
+
+- **SINGLE** es wird immer nur an eine Vorgang-Manager-Instanze geroutet, der Name der Instanz ist im Feld 'Vorgang-Manager Name' anzugeben.
+
+### Beispielkonfiguration
+
+```yaml
+env:
+  springProfiles: "oc, dev"
+  grpc:
+    - name: grpc_client_vorgang-manager-test_address
+      value: "vorgang-manager.test:9090"
+    - name: grpc_client_vorgang-manager-test_negotiationType
+      value: PLAINTEXT
+    - name: ozgcloud.adapter.organisationseinheiten.1357913579
+      value: test
+image:
+  tag: snapshot-latest
+imageCredentials:
+  email: webmaster@ozg-sh.de
+  password:  
+  registry: docker.ozg-sh.de
+  username: ozgcloud
+ingress:
+  host: kiel-afm.dev.by.ozg-cloud.de
+replicaCount: 2
+resources:
+  limits:
+    cpu: 1
+    memory: 1200Mi
+  requests:
+    cpu: 100m
+    memory: 250Mi
+global:
+  cattle:
+    clusterId: c-8g78g
+    clusterName: ozg-dev
+    systemDefaultRegistry: ""
+  systemDefaultRegistry: ""
+routing:
+  fallbackStrategy: FUNDSTELLE
+  fundstelleVorgangManagerName: kiel
+  routingStrategy: MULTI
+  targetVorgangManagerName: kiel
+```
+
+### Benutzung beliebiger environment Werte
+
+In jedem der Projekte kann man beliebige weitere environments setzen. Dazu muss man in der jeweiligen values.yaml unter env.customList ein name value Paar setzen:
+
+```yaml
+env:
+  customList:
+    - name: Dinge
+      value: true
+    - name: ...
+      value: ...
+```
diff --git a/src/main/helm/app-readme.md b/src/main/helm/app-readme.md
deleted file mode 100644
index 343f5028d591329a068cf876ba38de3dd9b642a5..0000000000000000000000000000000000000000
--- a/src/main/helm/app-readme.md
+++ /dev/null
@@ -1,93 +0,0 @@
-# Intelliform Adapter
-
-Adapter zum empfangen von Formulardaten von einem IntellForm basierten Formularserver, zum Beispiel iAFM (integriertes Antrags- und Formularmanagement).
-
-## Routingkonfiguration
-
-### Vorgang-Manager Instanzen
-
-Für alle Vorgang-Manager-Instanzen, die von dem Adapter erreichbar sein sollen, muss in das _Environment_ ein Eintrag mit dem GRPC-Service ergänzt werden:
-
-```yaml
-grpc.client.vorgang-manager-*vorgang-manager-name*.address:*url und port*
-grpc.client.vorgang-manager-*vorgang-manager-name*.negotiationType: PLAINTEXT
-```
-
-### Fallback Strategy
-
-Die Fallback Stratey steuert wie mit Eingängen umgegangen werden soll, für die keine passende Vorgang-Manager-Instanze gefunden werden konnte.
-
-Folgende Optionen stehen zur Verfügung:
-
-- **DENY** der Antrag wird mit einer Fehlermeldung abgelehnt. Dies funktioniert nur, solange die Abarbeitung synchron erfolgt.
-
-- **FUNDSTELLE** der Antrag wird an eine zentrale Fundstelle weitergeleitet. Dafür muss der Name der Vorgang-Manager-Instanze, die als Fundstelle fungiert, eingetragen werden.
-
-### Routing Strategy
-
-Die Routing Strategy steuert wie das Routing konfiguriert wird und wieviele Vorgang-Manager-Instanzen berücksichtigt werden können.
-
-Folgende Optionen stehen zur Verfügung:
-
-- **MULTI** es kann an beliebig viele Vorgang-Manager-Instanzen geroutet werden. Dafür muss in der Environment ein Mapping der Organisationseinheit-Id auf den Namen einer Vorgang-Manager-Instanz konfiguriert werden.
-
-```yaml
-ozgcloud.adapter.organisationseinheiten.*id*: *vorgang-manager-name*
-```
-
-- **SINGLE** es wird immer nur an eine Vorgang-Manager-Instanze geroutet, der Name der Instanz ist im Feld 'Vorgang-Manager Name' anzugeben.
-
-### Beispielkonfiguration
-
-```yaml
-env:
-  springProfiles: "oc, dev"
-  grpc:
-    - name: grpc_client_vorgang-manager-test_address
-      value: "vorgang-manager.test:9090"
-    - name: grpc_client_vorgang-manager-test_negotiationType
-      value: PLAINTEXT
-    - name: ozgcloud.adapter.organisationseinheiten.1357913579
-      value: test
-image:
-  tag: snapshot-latest
-imageCredentials:
-  email: webmaster@ozg-sh.de
-  password:  
-  registry: docker.ozg-sh.de
-  username: ozgcloud
-ingress:
-  host: kiel-afm.dev.by.ozg-cloud.de
-replicaCount: 2
-resources:
-  limits:
-    cpu: 1
-    memory: 1200Mi
-  requests:
-    cpu: 100m
-    memory: 250Mi
-global:
-  cattle:
-    clusterId: c-8g78g
-    clusterName: ozg-dev
-    systemDefaultRegistry: ""
-  systemDefaultRegistry: ""
-routing:
-  fallbackStrategy: FUNDSTELLE
-  fundstelleVorgangManagerName: kiel
-  routingStrategy: MULTI
-  targetVorgangManagerName: kiel
-```
-
-### Benutzung beliebiger environment Werte
-
-In jedem der Projekte kann man beliebige weitere environments setzen. Dazu muss man in der jeweiligen values.yaml unter env.customList ein name value Paar setzen:
-
-```yaml
-env:
-  customList:
-    - name: Dinge
-      value: true
-    - name: ...
-      value: ...
-```
diff --git a/src/main/helm/questions.yml b/src/main/helm/questions.yml
deleted file mode 100644
index b8309442a20fed6e3e3db74661d36bc1204c3586..0000000000000000000000000000000000000000
--- a/src/main/helm/questions.yml
+++ /dev/null
@@ -1,106 +0,0 @@
-#
-# 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.
-#
-
-questions:
-  # --- Container ---
-  - variable: image.name
-    type: enum
-    default: intelliform-adapter
-    label: The deployed Image
-    group: Container
-    required: true
-    options:
-      - intelliform-adapter
-      - formsolutions-adapter
-  - variable: image.tag
-    default: latest
-    type: string
-    label: The deployed version tag
-    group: "Container"
-  - variable: replicaCount
-    group: "Container"
-    type: string
-    default: "2"
-    label: "Deployment Replica count"
-  - variable: env.overrideSpringProfiles
-    group: "Container"
-    type: string
-    label: "Override Spring boot profile"
-  - variable: ozgcloud.bezeichner
-    group: "OZGCLOUD"
-    label: "Bezeichner"
-    type: string
-    required: true
-  - variable: ozgcloud.environment
-    group: "OZGCLOUD"
-    label: "Environment"
-    type: string
-    required: true
-
-  - variable: ingress.enabled
-    type: boolean
-    label: Enable ingress
-    default: true
-    group: "Ingress"
-    show_subquestion_if: true
-    subquestions:
-      - variable: ingress.overrideHost
-        type: string
-        label: Override generated deposit Webservice URL
-        group: "Ingress"
-
-  - variable: routing.fallbackStrategy
-    label: Fallback Strategy
-    group: Routing
-    type: enum
-    default: DENY
-    required: true
-    options:
-      - FUNDSTELLE
-      - DENY
-    show_subquestion_if: FUNDSTELLE
-    subquestions:
-      - variable: routing.fundstelleVorgangManagerName
-        type: string
-        label: Fundstelle
-        required: true
-  - variable: routing.routingStrategy
-    label: Routing Strategy
-    type: enum
-    default: SINGLE
-    required: true
-    group: Routing
-    options:
-      - MULTI
-      - SINGLE
-    show_subquestion_if: SINGLE
-    subquestions:
-      - variable: routing.targetVorgangManagerName
-        type: string
-        label: Vorgang-Manager Name
-        required: true
-      - variable: routing.targetNamespace
-        type: string
-        label: Namespace
-        required: true
diff --git a/src/main/helm/templates/_helpers.tpl b/src/main/helm/templates/_helpers.tpl
index c7dfcd79523309e42ab91563882a39f65e4ecb60..10c105666dc6ec19ce0a16e4334b2ff3ed1aa435 100644
--- a/src/main/helm/templates/_helpers.tpl
+++ b/src/main/helm/templates/_helpers.tpl
@@ -80,4 +80,8 @@ app.kubernetes.io/namespace: {{ include "app.namespace" . }}
 {{- else }}
 {{- printf "%s-afm.%s" (include "app.ozgcloudBezeichner" .) .Values.baseUrl }}
 {{- end }}
+{{- end -}}
+
+{{- define "app.serviceAccountName" -}}
+{{ printf "%s" ( (.Values.serviceAccount).name | default "eingang-manager-service-account" ) }}
 {{- end -}}
\ No newline at end of file
diff --git a/src/main/helm/templates/deployment.yaml b/src/main/helm/templates/deployment.yaml
index cefff9be956d634f21a76a00f01b9269f24f8d21..b6850b78412c4d2e1327f89f840cafca8b517b9d 100644
--- a/src/main/helm/templates/deployment.yaml
+++ b/src/main/helm/templates/deployment.yaml
@@ -47,6 +47,9 @@ spec:
         {{- include "app.defaultLabels" . | indent 8 }}
         component: afm-adapter
     spec:
+      {{- if (.Values.serviceAccount).create }}
+      serviceAccountName: {{ include "app.serviceAccountName" . }}
+      {{- end }}
       topologySpreadConstraints:
       - maxSkew: 1
         topologyKey: kubernetes.io/hostname
@@ -118,7 +121,13 @@ spec:
           allowPrivilegeEscalation: false
           privileged: false
           readOnlyRootFilesystem: false
-          runAsNonRoot: false
+          runAsNonRoot: true
+          {{- with (.Values.securityContext).runAsUser }}
+          runAsUser: {{ . }}
+          {{- end }}
+          {{- with (.Values.securityContext).runAsGroup }}
+          runAsGroup: {{ . }}
+          {{- end }}
         stdin: true
         terminationMessagePath: /dev/termination-log
         terminationMessagePolicy: File
@@ -126,8 +135,16 @@ spec:
       dnsConfig: {}
       dnsPolicy: ClusterFirst
       imagePullSecrets:
+      {{- if .Values.imagePullSecret }}
+      - name: {{ .Values.imagePullSecret }}
+      {{ else }}
       - name: {{ include "app.name" . }}-image-pull-secret
+      {{- end }}
       restartPolicy: Always
+      {{- with .Values.hostAliases }}
+      hostAliases:
+{{ toYaml . | indent 8 }}
+      {{- end }}
       schedulerName: default-scheduler
       securityContext: {}
       terminationGracePeriodSeconds: 30
\ No newline at end of file
diff --git a/src/main/helm/templates/image-pull-secret.yaml b/src/main/helm/templates/image-pull-secret.yaml
index 17d65b7b75e0ebe440ece0451e78269e94596901..9ac29e90a738d57e16307c8335a60c032134f1c8 100644
--- a/src/main/helm/templates/image-pull-secret.yaml
+++ b/src/main/helm/templates/image-pull-secret.yaml
@@ -22,6 +22,7 @@
 # unter der Lizenz sind dem Lizenztext zu entnehmen.
 #
 
+{{- if not (.Values.imagePullSecret) }}
 apiVersion: v1
 kind: Secret
 metadata:
@@ -29,4 +30,5 @@ metadata:
   namespace: {{ include "app.namespace" . }}
 type: kubernetes.io/dockerconfigjson
 data:
-  .dockerconfigjson: {{ include "app.imagePullSecret" . }}
\ No newline at end of file
+  .dockerconfigjson: {{ include "app.imagePullSecret" . }}
+{{- end }}
\ No newline at end of file
diff --git a/src/main/helm/templates/ingress.yaml b/src/main/helm/templates/ingress.yaml
index e539e8e0d02d3fed66e97fded23f800b937bdc02..fe85cf3ea82a073c99575ed87a7e56bad6910bf8 100644
--- a/src/main/helm/templates/ingress.yaml
+++ b/src/main/helm/templates/ingress.yaml
@@ -27,7 +27,11 @@ apiVersion: networking.k8s.io/v1
 kind: Ingress
 metadata:
   annotations:
-    {{- if (.Values.ingress).use_staging_cert }}
+    {{- if (.Values.ingress).certManagerAnnotations -}}
+    {{- range (.Values.ingress).certManagerAnnotations }}
+{{ . | indent 4 }}
+    {{- end }}
+    {{- else if (.Values.ingress).use_staging_cert }}
     cert-manager.io/cluster-issuer: letsencrypt-staging
     {{- else }}
     cert-manager.io/cluster-issuer: letsencrypt-prod
@@ -53,7 +57,9 @@ spec:
   tls:
     - hosts:
       - {{ include "app.ingress.host" . }}
-      {{- if ne (.Values).cluster_env "dataport" }}
+      {{- if (.Values.ingress).tlsSecretName }}
+      secretName: {{ (.Values.ingress).tlsSecretName }}
+      {{- else if ne (.Values).cluster_env "dataport" }}
       secretName: {{ .Values.ozgcloud.bezeichner }}-{{ include "app.name" . }}-tls
       {{- end }}
 {{- end -}}
\ No newline at end of file
diff --git a/src/main/helm/templates/network_policy.yaml b/src/main/helm/templates/network_policy.yaml
index 18cf7b2ccffa80585d82fa23789554ff862f3600..c243a2b78267cbcbca542afa462cf40a2422f85d 100644
--- a/src/main/helm/templates/network_policy.yaml
+++ b/src/main/helm/templates/network_policy.yaml
@@ -49,10 +49,7 @@ spec:
   - to:
     - namespaceSelector:
         matchLabels:
-          kubernetes.io/metadata.name: kube-system
-      podSelector:
-        matchLabels:
-          k8s-app: kube-dns
+          kubernetes.io/metadata.name: {{ required "networkPolicy.dnsServerNamespace must be set" (.Values.networkPolicy).dnsServerNamespace }}
     ports:
       - port: 53
         protocol: UDP
diff --git a/src/main/helm/templates/service_account.yaml b/src/main/helm/templates/service_account.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..0e13e6bcabf1933117c29487473453b63265922a
--- /dev/null
+++ b/src/main/helm/templates/service_account.yaml
@@ -0,0 +1,31 @@
+#
+# 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.
+#
+
+{{- if (.Values.serviceAccount).create }}
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+  name: {{ include "app.serviceAccountName" . }}
+  namespace: {{ include "app.namespace" . }}
+{{- end }}
\ No newline at end of file
diff --git a/src/main/helm/values.yaml b/src/main/helm/values.yaml
index 4a2bd83c1c4eb04af79fbd4b6458eb4dc52a1c9c..240501d36a5cc48d18ae5bc3a324b985f47ca550 100644
--- a/src/main/helm/values.yaml
+++ b/src/main/helm/values.yaml
@@ -44,12 +44,6 @@ image:
 #    cpu: 100m # [default: 100m]
 #    memory: 250Mi # [default: 250Mi]
 
-imageCredentials:
-  registry: docker.ozg-sh.de
-  username: ozgcloud
-  password:  
-  email: webmaster@ozg-sh.de
-
 ingress:
   enabled: true
   # overrideHost: kiel-afm.dev.by.ozg-cloud.de
diff --git a/src/main/helm/test-values.yaml b/src/test/helm-linter-values.yaml
similarity index 92%
rename from src/main/helm/test-values.yaml
rename to src/test/helm-linter-values.yaml
index e72f46c87bf4c6b6ce3cf960e19effcd09fd53b8..dc7bf7d67561d23925b5ebd3cbac9a491af1ffc8 100644
--- a/src/main/helm/test-values.yaml
+++ b/src/test/helm-linter-values.yaml
@@ -25,4 +25,7 @@
 ozgcloud:
   environment: test
   bezeichner: helm
-  bundesland: sh
\ No newline at end of file
+  bundesland: sh
+
+networkPolicy:
+  dnsServerNamespace: test-dns-server-namespace
\ No newline at end of file
diff --git a/src/test/helm/deployment_container_security_context_test.yaml b/src/test/helm/deployment_container_security_context_test.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..18a7450337149faf441b8fd520fc4883388f1f6e
--- /dev/null
+++ b/src/test/helm/deployment_container_security_context_test.yaml
@@ -0,0 +1,65 @@
+#
+# 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
+release:
+  name: eingang-manager
+  namespace: sh-helm-test
+templates:
+  - templates/deployment.yaml
+tests:
+  - it: check default values
+    asserts:
+      - isKind:
+          of: Deployment
+      - 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
+  - it: check 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_host_aliases_test.yaml b/src/test/helm/deployment_host_aliases_test.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..689bf6fd2d5d9eabbb92a6f521397c665bde2f08
--- /dev/null
+++ b/src/test/helm/deployment_host_aliases_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 host aliases
+release:
+  name: eingang-manager
+  namespace: sh-helm-test
+templates:
+  - templates/deployment.yaml
+tests:
+  - it: should not set hostAliases
+    asserts:
+      - isNull:
+          path: spec.template.spec.hostAliases
+  - it: should set hostAliases
+    set:
+      hostAliases:
+        - ip: "127.0.0.1"
+          hostname:
+          - "eins"
+          - "zwei"
+    asserts:
+      - contains:
+          path: spec.template.spec.hostAliases
+          content:
+            ip: "127.0.0.1"
+            hostname:
+            - "eins"
+            - "zwei"
diff --git a/src/test/helm/deployment_imagepull_secret_test.yaml b/src/test/helm/deployment_imagepull_secret_test.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..2c72debd4fe921192fd925b909f7e6b85c649685
--- /dev/null
+++ b/src/test/helm/deployment_imagepull_secret_test.yaml
@@ -0,0 +1,47 @@
+#
+# 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
+release:
+  name: afm-adapter
+  namespace: sh-helm-test
+templates:
+  - templates/deployment.yaml
+tests:
+  - it: should use default imagePull secret
+    asserts:
+      - isKind:
+          of: Deployment
+      - equal:
+          path: spec.template.spec.imagePullSecrets[0].name
+          value: afm-adapter-image-pull-secret
+  - it: should set the imagePull secret
+    set:
+      imagePullSecret: image-pull-secret
+    asserts:
+      - isKind:
+          of: Deployment
+      - equal:
+          path: spec.template.spec.imagePullSecrets[0].name
+          value: image-pull-secret
\ 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..c3108cff4b6adf30955e3db6b8cf577bbba096cd
--- /dev/null
+++ b/src/test/helm/deployment_service_account_test.yaml
@@ -0,0 +1,52 @@
+#
+# 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 service account
+release:
+  name: eingang-manager
+  namespace: sh-helm-test
+templates:
+  - templates/deployment.yaml
+tests:
+  - it: should use service account with default name
+    set:
+      serviceAccount:
+        create: true
+    asserts:
+      - equal:
+          path: spec.template.spec.serviceAccountName
+          value: eingang-manager-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/image-pull-secret-test.yaml b/src/test/helm/image-pull-secret-test.yaml
index 423d6268f8fea790bd466277a96f93c9594600a7..c95545170d0e4dd01fce0aab3a1c8953e3e20b5f 100644
--- a/src/test/helm/image-pull-secret-test.yaml
+++ b/src/test/helm/image-pull-secret-test.yaml
@@ -30,6 +30,12 @@ release:
   namespace: helm-test
 tests:
   - it: should match basic data
+    set:
+      imageCredentials:
+        registry: docker.ozg-sh.de
+        username: test
+        password: test1234
+        email: webmaster@ozg-sh.de
     asserts:
       - containsDocument:
           kind: Secret
@@ -40,3 +46,12 @@ tests:
       - equal:
           path: metadata.namespace
           value: helm-test
+      - isNotEmpty:
+          path: data.[.dockerconfigjson]
+
+  - it: should not create image pull secret
+    set:
+      imagePullSecret: "image-pull-secret"
+    asserts:
+      - hasDocuments:
+          count: 0
\ No newline at end of file
diff --git a/src/test/helm/network_policy_test.yaml b/src/test/helm/network_policy_test.yaml
index 96c857eb6260c8ed088cf1a5fb1d70f8fa39c318..15c3a1ad88d74d6f694f27a7698a81237f91fa1c 100644
--- a/src/test/helm/network_policy_test.yaml
+++ b/src/test/helm/network_policy_test.yaml
@@ -30,14 +30,23 @@ templates:
   - templates/network_policy.yaml
 tests:
   - it: should match apiVersion
+    set:
+      networkPolicy:
+        dnsServerNamespace: test-dns-namespace
     asserts:
       - isAPIVersion:
           of: networking.k8s.io/v1
   - it: should match kind
+    set:
+      networkPolicy:
+        dnsServerNamespace: test-dns-namespace
     asserts:
       - isKind:
           of: NetworkPolicy
   - it: validate metadata
+    set:
+      networkPolicy:
+        dnsServerNamespace: test-dns-namespace
     asserts:
       - equal:
           path: metadata
@@ -45,6 +54,9 @@ tests:
             name: network-policy-afm-adapter
             namespace: by-helm-test
   - it: validate spec
+    set:
+      networkPolicy:
+        dnsServerNamespace: test-dns-namespace
     asserts:
       - equal:
           path: spec
@@ -69,10 +81,7 @@ tests:
             - to:
               - namespaceSelector:
                   matchLabels:
-                    kubernetes.io/metadata.name: kube-system
-                podSelector:
-                  matchLabels:
-                    k8s-app: kube-dns
+                    kubernetes.io/metadata.name: test-dns-namespace
               ports:
                 - port: 53
                   protocol: UDP
@@ -83,6 +92,7 @@ tests:
     set:
       networkPolicy:
         disabled: true
+        dnsServerNamespace: test-dns-namespace
     asserts:
       - hasDocuments:
           count: 0
@@ -91,6 +101,7 @@ tests:
     set:
       networkPolicy:
         disabled: false
+        dnsServerNamespace: test-dns-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..4f8f2fe84b5b1e57dbbfb5844673bac980630f93
--- /dev/null
+++ b/src/test/helm/service_account_test.yaml
@@ -0,0 +1,62 @@
+#
+# 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 account
+release:
+  name: eingang-manager
+  namespace: sh-helm-test
+templates:
+  - templates/service_account.yaml
+tests:
+  - it: should create service account with default name
+    set:
+      serviceAccount:
+        create: true
+    asserts:
+      - isKind:
+          of: ServiceAccount
+      - equal:
+          path: metadata.name
+          value: eingang-manager-service-account
+      - equal:
+          path: metadata.namespace
+          value: sh-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: sh-helm-test
+  - it: should not create service account
+    asserts:
+      - hasDocuments:
+        count: 0
\ No newline at end of file
diff --git a/src/test/unit-values.yaml b/src/test/unit-values.yaml
index fcf2eaf1056c00bb9462330e2229f294201302cf..4c10588096434157f0e0ce39098dfcb134dec497 100644
--- a/src/test/unit-values.yaml
+++ b/src/test/unit-values.yaml
@@ -36,9 +36,3 @@ image:
   repo: docker.ozg-sh.de
   name: intelliform-adapter
   tag: latest
-
-imageCredentials:
-  registry: docker.ozg-sh.de
-  username: ozgcloud
-  password:  
-  email: webmaster@ozg-sh.de
\ No newline at end of file
diff --git a/xta-adapter/pom.xml b/xta-adapter/pom.xml
index 60bf2129fd8cf9804da55c30005efd2e384a9929..dec34827ee1f71d4e3d631db6d96bdacfdd23fcc 100644
--- a/xta-adapter/pom.xml
+++ b/xta-adapter/pom.xml
@@ -4,7 +4,7 @@
 	<parent>
 		<groupId>de.ozgcloud.eingang</groupId>
 		<artifactId>eingang-manager</artifactId>
-		<version>2.0.0-SNAPSHOT</version>
+		<version>2.1.0-SNAPSHOT</version>
 	</parent>
 	<artifactId>xta-adapter</artifactId>
 	<name>Eingangs Adapter - XTA</name>
diff --git a/xta-adapter/src/main/helm/templates/image-pull-secret.yaml b/xta-adapter/src/main/helm/templates/image-pull-secret.yaml
index 17d65b7b75e0ebe440ece0451e78269e94596901..9ac29e90a738d57e16307c8335a60c032134f1c8 100644
--- a/xta-adapter/src/main/helm/templates/image-pull-secret.yaml
+++ b/xta-adapter/src/main/helm/templates/image-pull-secret.yaml
@@ -22,6 +22,7 @@
 # unter der Lizenz sind dem Lizenztext zu entnehmen.
 #
 
+{{- if not (.Values.imagePullSecret) }}
 apiVersion: v1
 kind: Secret
 metadata:
@@ -29,4 +30,5 @@ metadata:
   namespace: {{ include "app.namespace" . }}
 type: kubernetes.io/dockerconfigjson
 data:
-  .dockerconfigjson: {{ include "app.imagePullSecret" . }}
\ No newline at end of file
+  .dockerconfigjson: {{ include "app.imagePullSecret" . }}
+{{- end }}
\ No newline at end of file
diff --git a/xta-adapter/src/main/helm/templates/xta_adapter_cronjob.yaml b/xta-adapter/src/main/helm/templates/xta_adapter_cronjob.yaml
index 61cac8717883a47d52e3992b23de6beb98a18782..c3bca9d7feb890b449f04fe8ff8d974d6d287b8b 100644
--- a/xta-adapter/src/main/helm/templates/xta_adapter_cronjob.yaml
+++ b/xta-adapter/src/main/helm/templates/xta_adapter_cronjob.yaml
@@ -99,7 +99,13 @@ spec:
                 allowPrivilegeEscalation: false
                 privileged: false
                 readOnlyRootFilesystem: false
-                runAsNonRoot: false
+                runAsNonRoot: true
+                {{- with (.Values.securityContext).runAsUser }}
+                runAsUser: {{ . }}
+                {{- end }}
+                {{- with (.Values.securityContext).runAsGroup }}
+                runAsGroup: {{ . }}
+                {{- end }}
               resources:
               {{- with .Values.resources }}
 {{ toYaml . | indent 16 }}
@@ -146,4 +152,8 @@ spec:
               secret:
                 secretName: xta-keystore
           imagePullSecrets:
-            - name: {{ include "app.name" . }}-image-pull-secret
\ No newline at end of file
+            {{- if .Values.imagePullSecret }}
+            - name: {{ .Values.imagePullSecret }}
+            {{ else }}
+            - name: {{ include "app.name" . }}-image-pull-secret
+            {{- end }}
\ No newline at end of file
diff --git a/xta-adapter/src/main/helm/values.yaml b/xta-adapter/src/main/helm/values.yaml
index 2b3d383c69e987fbfe7c73bb0eded6b2bd109405..b7fd23ad6dcbad154f52411df043403824f33d86 100644
--- a/xta-adapter/src/main/helm/values.yaml
+++ b/xta-adapter/src/main/helm/values.yaml
@@ -30,12 +30,6 @@ image:
 # env:
 #   overrideSpringProfiles: "oc,prod"
 
-imageCredentials:
-  registry: docker.ozg-sh.de
-  username: ozgcloud
-  password:  
-  email: webmaster@ozg-sh.de
-
 routing:
   targetVorgangManagerName: vorgang-manager
   fallbackStrategy: DENY
diff --git a/xta-adapter/src/test/helm/image_pull_secret_test.yaml b/xta-adapter/src/test/helm/image_pull_secret_test.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..80bffcc068842596343a15aeaa1eff0d52930584
--- /dev/null
+++ b/xta-adapter/src/test/helm/image_pull_secret_test.yaml
@@ -0,0 +1,59 @@
+#
+# 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 image pull secret
+templates:
+  - templates/image-pull-secret.yaml
+release:
+  name: xta-adapter
+  namespace: helm-test
+tests:
+  - it: should match basic data
+    set:
+      imageCredentials:
+        registry: docker.ozg-sh.de
+        username: test
+        password: test1234
+        email: webmaster@ozg-sh.de
+    asserts:
+      - hasDocuments:
+          count: 1
+      - containsDocument:
+          kind: Secret
+          apiVersion: v1
+      - equal:
+          path: metadata.name
+          value: xta-adapter-image-pull-secret
+      - equal:
+          path: metadata.namespace
+          value: helm-test
+      - isNotEmpty:
+          path: data.[.dockerconfigjson]
+
+  - it: should not create image pull secret
+    set:
+      imagePullSecret: "image-pull-secret"
+    asserts:
+      - hasDocuments:
+          count: 0
\ No newline at end of file
diff --git a/xta-adapter/src/test/helm/xta_adapter_cronjob_basic_test.yaml b/xta-adapter/src/test/helm/xta_adapter_cronjob_basic_test.yaml
index 677ce10dc7fb886a0d2484cba11e0517ef8d1639..4667b03c48c34279b76865a0913a69758f745bbf 100644
--- a/xta-adapter/src/test/helm/xta_adapter_cronjob_basic_test.yaml
+++ b/xta-adapter/src/test/helm/xta_adapter_cronjob_basic_test.yaml
@@ -99,8 +99,25 @@ tests:
         value: false
     - equal:
         path: spec.jobTemplate.spec.template.spec.containers[0].securityContext.runAsNonRoot
-        value: false
-  
+        value: true
+    - isNull:
+        path: spec.jobTemplate.spec.template.spec.containers[0].securityContext.runAsUser
+    - isNull:
+        path: spec.jobTemplate.spec.template.spec.containers[0].securityContext.runAsGroup
+  - it: check runAsUser
+    set:
+      securityContext.runAsUser: 1000
+    asserts:
+      - equal:
+          path: spec.jobTemplate.spec.template.spec.containers[0].securityContext.runAsUser
+          value: 1000
+  - it: check runAsGroup
+    set:
+      securityContext.runAsGroup: 1000
+    asserts:
+      - equal:
+          path: spec.jobTemplate.spec.template.spec.containers[0].securityContext.runAsGroup
+          value: 1000
   - it: check pod labels
     template: xta_adapter_cronjob.yaml
     asserts:
diff --git a/xta-adapter/src/test/helm/xta_adapter_cronjob_image_pull_test.yaml b/xta-adapter/src/test/helm/xta_adapter_cronjob_image_pull_test.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..d74e945ac83c43e56c43f2065615719c412c9432
--- /dev/null
+++ b/xta-adapter/src/test/helm/xta_adapter_cronjob_image_pull_test.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.
+#
+
+suite: test xta adapter imagePull secret
+release:
+  name: xta-adapter
+  namespace: sh-helm-test
+templates:
+  - templates/xta_adapter_cronjob.yaml
+tests:
+  - it: should use default imagePull secret
+    asserts:
+      - equal:
+          path: spec.jobTemplate.spec.template.spec.imagePullSecrets[0].name
+          value: xta-adapter-image-pull-secret
+  - it: should set the imagePull secret
+    set:
+      imagePullSecret: image-pull-secret
+    asserts:
+      - equal:
+          path: spec.jobTemplate.spec.template.spec.imagePullSecrets[0].name
+          value: image-pull-secret
\ No newline at end of file