diff --git a/run_helm_test.sh b/run_helm_test.sh
index 3c7a112b78ea73e2655bd07ea33f8b99e366f263..2ee101b53bf5354f3e807cc3a4d31c7bfb7c6df3 100755
--- a/run_helm_test.sh
+++ b/run_helm_test.sh
@@ -5,4 +5,4 @@ set -x
 
 helm template  ./src/main/helm/ -f src/test/linter-values.yaml
 helm lint -f src/test/linter-values.yaml ./src/main/helm/
-cd src/main/helm && helm unittest -f '../../test/helm/*.yaml' .
\ No newline at end of file
+cd src/main/helm && helm unittest -f '../../test/helm/**/*.yaml' .
\ No newline at end of file
diff --git a/src/main/helm/templates/_helpers.tpl b/src/main/helm/templates/_helpers.tpl
index 5008dfc8c7a8d29ebb772192f8613bdbf128902f..bd00fd8f122309db1543a75b42cd0bad904f986c 100644
--- a/src/main/helm/templates/_helpers.tpl
+++ b/src/main/helm/templates/_helpers.tpl
@@ -151,6 +151,6 @@ app.kubernetes.io/namespace: {{ include "app.namespace" . }}
 {{- if .Values.optionalTrustStoreSecretName -}}
 {{ .Values.optionalTrustStoreSecretName }}
 {{- else -}}
-{{ printf "%s-truststore" .Release.Namespace }}
+{{ printf "user-manager-truststore" }}
 {{- end -}}
 {{- end -}}
\ No newline at end of file
diff --git a/src/main/helm/templates/truststore/init_truststore_job.yaml b/src/main/helm/templates/truststore/init_truststore_job.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..91bd34422706a72e13fc27e0cfbae359fc2d9836
--- /dev/null
+++ b/src/main/helm/templates/truststore/init_truststore_job.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.
+#
+
+{{- if and (not .Values.disableNamespaceTruststore) (not .Values.disableCreateTruststore) }}
+apiVersion: batch/v1
+kind: Job
+metadata:
+  name: init-user-manager-truststore-job
+  namespace: {{ include "app.namespace" . }}
+  labels:
+    {{- include "app.defaultLabels" . | indent 4 }}
+spec:
+  template:
+    metadata:
+      name: init-user-manager-truststore-job
+      labels:
+        {{- include "app.defaultLabels" . | indent 8 }}
+    spec:
+      serviceAccountName: truststore-init-service-account
+      initContainers:
+      - name: wait-for-cronjob
+        image: dockerproxy.ozg-sh.de/bitnami/kubectl:latest
+        command: ["/bin/sh", "-c"]
+        args: ["kubectl wait --for=jsonpath='{.metadata.name}'=renew-user-manager-truststore-cronjob cronjob/renew-user-manager-truststore-cronjob -n {{ include "app.namespace" . }}"]
+      containers:
+      - name: run-renew-user-manager-truststore-cronjob
+        image: dockerproxy.ozg-sh.de/bitnami/kubectl:latest
+        command: ["/bin/sh", "-c"]
+        args: ["kubectl create job create-user-manager-truststore --from=cronjob/renew-user-manager-truststore-cronjob -n {{ include "app.namespace" . }} --dry-run=client -o yaml | kubectl patch --dry-run=client -o yaml --type json --patch '[{ \"op\": \"replace\", \"path\": \"/metadata/ownerReferences/0/blockOwnerDeletion\", \"value\": false }]' -f - | kubectl apply -f -"]
+      restartPolicy: OnFailure
+{{- end }}
\ No newline at end of file
diff --git a/src/main/helm/templates/truststore/init_truststore_rbac.yaml b/src/main/helm/templates/truststore/init_truststore_rbac.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..1416ce9322666ce49ac7153d4d088918cca5884e
--- /dev/null
+++ b/src/main/helm/templates/truststore/init_truststore_rbac.yaml
@@ -0,0 +1,79 @@
+#
+# 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 and (not .Values.disableNamespaceTruststore) (not .Values.disableCreateTruststore) }}
+---
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+  name: truststore-init-service-account
+  namespace: {{ include "app.namespace" . }}
+
+---
+apiVersion: rbac.authorization.k8s.io/v1
+kind: Role
+metadata:
+  name: truststore-init-role
+  namespace: {{ include "app.namespace" . }}
+rules:
+  - apiGroups:
+      - "batch"
+    resources:
+      - cronjobs
+    resourceNames:
+      - renew-user-manager-truststore-cronjob
+    verbs:
+      - get
+      - list
+  - apiGroups:
+      - "batch"
+    resources:
+      - jobs
+    verbs:
+      - create
+  - apiGroups:
+      - "batch"
+    resources:
+      - jobs
+    resourceNames:
+      - init-user-manager-truststore-job
+    verbs:
+      - patch
+      - get
+
+---
+apiVersion: rbac.authorization.k8s.io/v1
+kind: RoleBinding
+metadata:
+  name: truststore-init-role-binding
+  namespace: {{ include "app.namespace" . }}
+subjects:
+  - kind: ServiceAccount
+    name: truststore-init-service-account
+    namespace: {{ include "app.namespace" . }}
+roleRef:
+  kind: Role
+  name: truststore-init-role
+  apiGroup: rbac.authorization.k8s.io
+{{- end }}
\ No newline at end of file
diff --git a/src/main/helm/templates/truststore/truststore_cronjob.yaml b/src/main/helm/templates/truststore/truststore_cronjob.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..34e2f1fe80f187c830c8b0076e7396ce7de03b5d
--- /dev/null
+++ b/src/main/helm/templates/truststore/truststore_cronjob.yaml
@@ -0,0 +1,85 @@
+#
+# 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 and (not .Values.disableNamespaceTruststore) (not .Values.disableCreateTruststore) }}
+apiVersion: batch/v1
+kind: CronJob
+metadata:
+  name: renew-user-manager-truststore-cronjob
+  namespace: {{ include "app.namespace" . }}
+  labels:
+    {{- include "app.defaultLabels" . | indent 4 }}
+spec:
+  schedule: "1 1 * * 1"
+  jobTemplate:
+    spec:
+      template:
+        metadata:
+          name: renew-user-manager-truststore-cronjob
+          labels:
+            {{- include "app.defaultLabels" . | indent 12 }}
+        spec:
+          serviceAccountName: truststore-secret-service-account
+          initContainers:
+          - name: create-truststore
+            image: dockerproxy.ozg-sh.de/openjdk:latest
+            command: ["/bin/sh", "-c"]
+            args:
+            - |
+              [[ -z "${TRUSTSTORE_PASSWORD}" ]] && TRUSTSTORE_PASSWORD=$(tr -dc '[:alnum:]' < /dev/urandom | head -c 12; echo)
+
+              echo $TRUSTSTORE_PASSWORD >> /tmp/password.txt
+
+              keytool -importkeystore -srckeystore /usr/java/latest/lib/security/cacerts -destkeystore /tmp/truststore.jks -srcstoretype PKCS12 -deststoretype PKCS12 -deststorepass $TRUSTSTORE_PASSWORD -srcstorepass changeit -noprompt
+
+              keytool -importcert -alias {{ include "app.namespace" . }}-ca -file /namespace-ca-cert/ca.crt -keystore /tmp/truststore.jks -storepass $TRUSTSTORE_PASSWORD -noprompt
+            env:
+            - name: TRUSTSTORE_PASSWORD
+              valueFrom:
+                secretKeyRef:
+                  name: {{ include "app.truststoreSecretName" . }}
+                  key: password
+                  optional: true
+            volumeMounts:
+            - name: namespace-ca-cert
+              mountPath: /namespace-ca-cert
+              readOnly: true
+            - name: temp-dir
+              mountPath: "/tmp"
+          containers:
+          - name: create-truststore-secret
+            image: dockerproxy.ozg-sh.de/bitnami/kubectl:latest
+            command: ["/bin/sh", "-c"]
+            args: ["kubectl create secret generic {{ include "app.truststoreSecretName" . }} --from-file=/tmp/truststore.jks --from-literal=password=$(cat /tmp/password.txt) --save-config --dry-run=client -o yaml | kubectl apply -n {{ include "app.namespace" . }} -f -"]
+            volumeMounts:
+            - name: temp-dir
+              mountPath: "/tmp"
+          volumes:
+          - name: namespace-ca-cert
+            secret:
+              secretName: {{ include "app.namespace" . }}-ca-cert
+          - name: temp-dir
+            emptyDir: {}
+          restartPolicy: Never
+{{- end }}
\ No newline at end of file
diff --git a/src/main/helm/templates/truststore/truststore_rbac.yaml b/src/main/helm/templates/truststore/truststore_rbac.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..d68c45f18e95a8da051ffd94f72ea16e1119b53c
--- /dev/null
+++ b/src/main/helm/templates/truststore/truststore_rbac.yaml
@@ -0,0 +1,71 @@
+#
+# 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 and (not .Values.disableNamespaceTruststore) (not .Values.disableCreateTruststore) }}
+---
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+  name: truststore-secret-service-account
+  namespace: {{ include "app.namespace" . }}
+
+---
+apiVersion: rbac.authorization.k8s.io/v1
+kind: Role
+metadata:
+  name: truststore-secret-role
+  namespace: {{ include "app.namespace" . }}
+rules:
+  - apiGroups:
+      - ""
+    resources:
+      - secrets
+    resourceNames:
+      - {{ include "app.truststoreSecretName" . }}
+    verbs:
+      - patch
+      - update
+      - get
+  - apiGroups:
+      - ""
+    resources:
+      - secrets
+    verbs:
+      - create
+
+---
+apiVersion: rbac.authorization.k8s.io/v1
+kind: RoleBinding
+metadata:
+  name: truststore-secret-role-binding
+  namespace: {{ include "app.namespace" . }}
+subjects:
+  - kind: ServiceAccount
+    name: truststore-secret-service-account
+    namespace: {{ include "app.namespace" . }}
+roleRef:
+  kind: Role
+  name: truststore-secret-role
+  apiGroup: rbac.authorization.k8s.io
+{{- end }}
\ No newline at end of file
diff --git a/src/test/helm/deployment_namespace_truststore_test.yaml b/src/test/helm/deployment_namespace_truststore_test.yaml
index ae7b2a042624719e4ccba689c26975d994d0197e..f0372f501432b66f01dc7669b6f8e56475c3ee27 100644
--- a/src/test/helm/deployment_namespace_truststore_test.yaml
+++ b/src/test/helm/deployment_namespace_truststore_test.yaml
@@ -71,7 +71,7 @@ tests:
             name: TRUSTSTORE_PASSWORD
             valueFrom:
               secretKeyRef:
-                name: by-helm-test-truststore
+                name: user-manager-truststore
                 key: password
                 optional: false
       - contains:
@@ -85,7 +85,7 @@ tests:
           content:
             name: namespace-truststore
             secret:
-              secretName: by-helm-test-truststore
+              secretName: user-manager-truststore
 
   - it: check with optional truststore
     set:
diff --git a/src/test/helm/truststore/init_truststore_job_test.yaml b/src/test/helm/truststore/init_truststore_job_test.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..d14bc1976f8959036005a4123a0d6b588f9efa9d
--- /dev/null
+++ b/src/test/helm/truststore/init_truststore_job_test.yaml
@@ -0,0 +1,153 @@
+#
+# 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 init truststore job
+release:
+  name: user-manager
+  namespace: by-helm-test
+templates:
+  - templates/truststore/init_truststore_job.yaml
+tests:
+  - it: Job should not exist if disableCreateTruststore is true
+    set:
+      disableCreateTruststore: true
+    asserts:
+      - hasDocuments:
+        count: 0
+  - it: Job should not exist if disableNamespaceTruststore is true
+    set:
+      disableNamespaceTruststore: true
+    asserts:
+      - hasDocuments:
+        count: 0
+  - it: check header data
+    asserts:
+      - isAPIVersion:
+          of: batch/v1
+      - isKind:
+          of: Job
+  - it: check default metadata
+    asserts:
+      - equal:
+          path: metadata.name
+          value: init-user-manager-truststore-job
+      - equal:
+          path: metadata.namespace
+          value: by-helm-test
+      - equal:
+          path: metadata.labels["app.kubernetes.io/instance"]
+          value: user-manager
+      - equal:
+          path: metadata.labels["app.kubernetes.io/managed-by"]
+          value: Helm
+      - equal:
+          path: metadata.labels["app.kubernetes.io/name"]
+          value: user-manager
+      - equal:
+          path: metadata.labels["app.kubernetes.io/namespace"]
+          value: by-helm-test
+      - equal:
+          path: metadata.labels["app.kubernetes.io/part-of"]
+          value: ozgcloud
+      - equal:
+          path: metadata.labels["app.kubernetes.io/version"]
+          value: 0.0.0-MANAGED-BY-JENKINS
+      - equal:
+          path: metadata.labels["helm.sh/chart"]
+          value: user-manager-0.0.0-MANAGED-BY-JENKINS
+      - equal:
+          path: metadata.labels["ozgcloud-mongodb-client"]
+          value: "true"
+
+  - it: check default template metadata
+    asserts:
+      - equal:
+          path: spec.template.metadata.name
+          value: init-user-manager-truststore-job
+      - equal:
+          path: spec.template.metadata.labels["app.kubernetes.io/instance"]
+          value: user-manager
+      - equal:
+          path: spec.template.metadata.labels["app.kubernetes.io/managed-by"]
+          value: Helm
+      - equal:
+          path: spec.template.metadata.labels["app.kubernetes.io/name"]
+          value: user-manager
+      - equal:
+          path: spec.template.metadata.labels["app.kubernetes.io/namespace"]
+          value: by-helm-test
+      - equal:
+          path: spec.template.metadata.labels["app.kubernetes.io/part-of"]
+          value: ozgcloud
+      - equal:
+          path: spec.template.metadata.labels["app.kubernetes.io/version"]
+          value: 0.0.0-MANAGED-BY-JENKINS
+      - equal:
+          path: spec.template.metadata.labels["helm.sh/chart"]
+          value: user-manager-0.0.0-MANAGED-BY-JENKINS
+      - equal:
+          path: spec.template.metadata.labels["ozgcloud-mongodb-client"]
+          value: "true"
+
+  - it: check job serviceaccountname
+    asserts:
+      - equal:
+          path: spec.template.spec.serviceAccountName
+          value: truststore-init-service-account
+
+  - it: check initContainer
+    asserts:
+      - equal:
+          path: spec.template.spec.initContainers[0].name
+          value: wait-for-cronjob
+      - equal:
+          path: spec.template.spec.initContainers[0].image
+          value: dockerproxy.ozg-sh.de/bitnami/kubectl:latest
+      - equal:
+          path: spec.template.spec.initContainers[0].command
+          value: ["/bin/sh", "-c"]
+      - equal:
+          path: spec.template.spec.initContainers[0].args
+          value: ["kubectl wait --for=jsonpath='{.metadata.name}'=renew-user-manager-truststore-cronjob cronjob/renew-user-manager-truststore-cronjob -n by-helm-test"]
+
+  - it: check container
+    asserts:
+      - equal:
+          path: spec.template.spec.containers[0].name
+          value: run-renew-user-manager-truststore-cronjob
+      - equal:
+          path: spec.template.spec.containers[0].image
+          value: dockerproxy.ozg-sh.de/bitnami/kubectl:latest
+      - equal:
+          path: spec.template.spec.containers[0].command
+          value: ["/bin/sh", "-c"]
+      - equal:
+          path: spec.template.spec.containers[0].args
+          value: ["kubectl create job create-user-manager-truststore --from=cronjob/renew-user-manager-truststore-cronjob -n by-helm-test --dry-run=client -o yaml | kubectl patch --dry-run=client -o yaml --type json --patch '[{ \"op\": \"replace\", \"path\": \"/metadata/ownerReferences/0/blockOwnerDeletion\", \"value\": false }]' -f - | kubectl apply -f -"]
+
+  - it: check restartPolicy
+    asserts:
+      - equal:
+          path: spec.template.spec.restartPolicy
+          value: OnFailure
\ No newline at end of file
diff --git a/src/test/helm/truststore/init_truststore_rbac_test.yaml b/src/test/helm/truststore/init_truststore_rbac_test.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..f50cd8c4c2582085bb51c9005c6de3ace8b26f3d
--- /dev/null
+++ b/src/test/helm/truststore/init_truststore_rbac_test.yaml
@@ -0,0 +1,151 @@
+#
+# 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 init truststore rbac
+release:
+  name: user-manager
+  namespace: by-helm-test
+templates:
+  - templates/truststore/init_truststore_rbac.yaml
+tests:
+  - it: RBAC should not exist if disableCreateTruststore is true
+    set:
+      disableCreateTruststore: true
+    asserts:
+      - hasDocuments:
+        count: 0
+  - it: RBAC should not exist if disableNamespaceTruststore is true
+    set:
+      disableNamespaceTruststore: true
+    asserts:
+      - hasDocuments:
+        count: 0
+
+# ServiceAccount
+  - it: check ServiceAccount header data
+    documentIndex: 0
+    asserts:
+      - isAPIVersion:
+          of: v1
+      - isKind:
+          of: ServiceAccount
+  - it: check ServiceAccount default metadata
+    documentIndex: 0
+    asserts:
+      - equal:
+          path: metadata.name
+          value: truststore-init-service-account
+      - equal:
+          path: metadata.namespace
+          value: by-helm-test
+
+# Role
+  - it: check Role header data
+    documentIndex: 1
+    asserts:
+      - isAPIVersion:
+          of: rbac.authorization.k8s.io/v1
+      - isKind:
+          of: Role
+  - it: check Role default metadata
+    documentIndex: 1
+    asserts:
+      - equal:
+          path: metadata.name
+          value: truststore-init-role
+      - equal:
+          path: metadata.namespace
+          value: by-helm-test
+  - it: check Role rules
+    documentIndex: 1
+    asserts:
+      - contains:
+          path: rules
+          content:
+            apiGroups:
+              - "batch"
+            resources:
+              - cronjobs
+            resourceNames:
+              - renew-user-manager-truststore-cronjob
+            verbs:
+              - get
+              - list
+      - contains:
+          path: rules
+          content:
+            apiGroups:
+              - "batch"
+            resources:
+              - jobs
+            verbs:
+              - create
+      - contains:
+          path: rules
+          content:
+            apiGroups:
+              - "batch"
+            resources:
+              - jobs
+            resourceNames:
+              - init-user-manager-truststore-job
+            verbs:
+              - patch
+              - get
+
+# RoleBinding
+  - it: check RoleBinding header data
+    documentIndex: 2
+    asserts:
+      - isAPIVersion:
+          of: rbac.authorization.k8s.io/v1
+      - isKind:
+          of: RoleBinding
+  - it: check RoleBinding default metadata
+    documentIndex: 2
+    asserts:
+      - equal:
+          path: metadata.name
+          value: truststore-init-role-binding
+      - equal:
+          path: metadata.namespace
+          value: by-helm-test
+  - it: check RoleBinding subjects
+    documentIndex: 2
+    asserts:
+      - contains:
+          path: subjects
+          content:
+            kind: ServiceAccount
+            name: truststore-init-service-account
+            namespace: by-helm-test
+  - it: check RoleBinding roleRef
+    documentIndex: 2
+    asserts:
+      - equal:
+          path: roleRef
+          value:
+            kind: Role
+            name: truststore-init-role
+            apiGroup: rbac.authorization.k8s.io
\ No newline at end of file
diff --git a/src/test/helm/truststore/truststore_cronjob_test.yaml b/src/test/helm/truststore/truststore_cronjob_test.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..1329ae06687db7fec0ad1273cb9b16e9595b212c
--- /dev/null
+++ b/src/test/helm/truststore/truststore_cronjob_test.yaml
@@ -0,0 +1,206 @@
+#
+# 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 truststore cronjob
+release:
+  name: user-manager
+  namespace: by-helm-test
+templates:
+  - templates/truststore/truststore_cronjob.yaml
+tests:
+  - it: CronJob should not exist if disableCreateTruststore is true
+    set:
+      disableCreateTruststore: true
+    asserts:
+      - hasDocuments:
+        count: 0
+  - it: CronJob should not exist if disableNamespaceTruststore is true
+    set:
+      disableNamespaceTruststore: true
+    asserts:
+      - hasDocuments:
+        count: 0
+  - it: check header data
+    asserts:
+      - isAPIVersion:
+          of: batch/v1
+      - isKind:
+          of: CronJob
+  - it: check default metadata
+    asserts:
+      - equal:
+          path: metadata.name
+          value: renew-user-manager-truststore-cronjob
+      - equal:
+          path: metadata.namespace
+          value: by-helm-test
+      - equal:
+          path: metadata.labels["app.kubernetes.io/instance"]
+          value: user-manager
+      - equal:
+          path: metadata.labels["app.kubernetes.io/managed-by"]
+          value: Helm
+      - equal:
+          path: metadata.labels["app.kubernetes.io/name"]
+          value: user-manager
+      - equal:
+          path: metadata.labels["app.kubernetes.io/namespace"]
+          value: by-helm-test
+      - equal:
+          path: metadata.labels["app.kubernetes.io/part-of"]
+          value: ozgcloud
+      - equal:
+          path: metadata.labels["app.kubernetes.io/version"]
+          value: 0.0.0-MANAGED-BY-JENKINS
+      - equal:
+          path: metadata.labels["helm.sh/chart"]
+          value: user-manager-0.0.0-MANAGED-BY-JENKINS
+      - equal:
+          path: metadata.labels["ozgcloud-mongodb-client"]
+          value: "true"
+
+  - it: check default schedule
+    asserts:
+      - equal:
+          path: spec.schedule
+          value: "1 1 * * 1"
+
+  - it: check default jobTemplate template metadata
+    asserts:
+      - equal:
+          path: spec.jobTemplate.spec.template.metadata.name
+          value: renew-user-manager-truststore-cronjob
+      - equal:
+          path: spec.jobTemplate.spec.template.metadata.labels["app.kubernetes.io/instance"]
+          value: user-manager
+      - equal:
+          path: spec.jobTemplate.spec.template.metadata.labels["app.kubernetes.io/managed-by"]
+          value: Helm
+      - equal:
+          path: spec.jobTemplate.spec.template.metadata.labels["app.kubernetes.io/name"]
+          value: user-manager
+      - equal:
+          path: spec.jobTemplate.spec.template.metadata.labels["app.kubernetes.io/namespace"]
+          value: by-helm-test
+      - equal:
+          path: spec.jobTemplate.spec.template.metadata.labels["app.kubernetes.io/part-of"]
+          value: ozgcloud
+      - equal:
+          path: spec.jobTemplate.spec.template.metadata.labels["app.kubernetes.io/version"]
+          value: 0.0.0-MANAGED-BY-JENKINS
+      - equal:
+          path: spec.jobTemplate.spec.template.metadata.labels["helm.sh/chart"]
+          value: user-manager-0.0.0-MANAGED-BY-JENKINS
+      - equal:
+          path: spec.jobTemplate.spec.template.metadata.labels["ozgcloud-mongodb-client"]
+          value: "true"
+
+  - it: check cronJob serviceaccountname
+    asserts:
+      - equal:
+          path: spec.jobTemplate.spec.template.spec.serviceAccountName
+          value: truststore-secret-service-account
+
+  - it: check initContainer
+    asserts:
+      - equal:
+          path: spec.jobTemplate.spec.template.spec.initContainers[0].name
+          value: create-truststore
+      - equal:
+          path: spec.jobTemplate.spec.template.spec.initContainers[0].image
+          value: dockerproxy.ozg-sh.de/openjdk:latest
+      - equal:
+          path: spec.jobTemplate.spec.template.spec.initContainers[0].command
+          value: ["/bin/sh", "-c"]
+      - equal:
+          path: spec.jobTemplate.spec.template.spec.initContainers[0].args
+          value: 
+            - |
+              [[ -z "${TRUSTSTORE_PASSWORD}" ]] && TRUSTSTORE_PASSWORD=$(tr -dc '[:alnum:]' < /dev/urandom | head -c 12; echo)
+
+              echo $TRUSTSTORE_PASSWORD >> /tmp/password.txt
+
+              keytool -importkeystore -srckeystore /usr/java/latest/lib/security/cacerts -destkeystore /tmp/truststore.jks -srcstoretype PKCS12 -deststoretype PKCS12 -deststorepass $TRUSTSTORE_PASSWORD -srcstorepass changeit -noprompt
+
+              keytool -importcert -alias by-helm-test-ca -file /namespace-ca-cert/ca.crt -keystore /tmp/truststore.jks -storepass $TRUSTSTORE_PASSWORD -noprompt
+      - contains:
+          path: spec.jobTemplate.spec.template.spec.initContainers[0].env
+          content:
+            name: TRUSTSTORE_PASSWORD
+            valueFrom:
+              secretKeyRef:
+                name: user-manager-truststore
+                key: password
+                optional: true
+      - contains:
+          path: spec.jobTemplate.spec.template.spec.initContainers[0].volumeMounts
+          content:
+            name: namespace-ca-cert
+            mountPath: /namespace-ca-cert
+            readOnly: true
+      - contains:
+          path: spec.jobTemplate.spec.template.spec.initContainers[0].volumeMounts
+          content:
+            name: temp-dir
+            mountPath: "/tmp"
+
+  - it: check container
+    asserts:
+      - equal:
+          path: spec.jobTemplate.spec.template.spec.containers[0].name
+          value: create-truststore-secret
+      - equal:
+          path: spec.jobTemplate.spec.template.spec.containers[0].image
+          value: dockerproxy.ozg-sh.de/bitnami/kubectl:latest
+      - equal:
+          path: spec.jobTemplate.spec.template.spec.containers[0].command
+          value: ["/bin/sh", "-c"]
+      - equal:
+          path: spec.jobTemplate.spec.template.spec.containers[0].args
+          value: ["kubectl create secret generic user-manager-truststore --from-file=/tmp/truststore.jks --from-literal=password=$(cat /tmp/password.txt) --save-config --dry-run=client -o yaml | kubectl apply -n by-helm-test -f -"]
+      - contains:
+          path: spec.jobTemplate.spec.template.spec.initContainers[0].volumeMounts
+          content:
+            name: temp-dir
+            mountPath: "/tmp"
+
+  - it: check volumes
+    asserts:
+      - contains:
+          path: spec.jobTemplate.spec.template.spec.volumes
+          content:
+            name: namespace-ca-cert
+            secret:
+              secretName: by-helm-test-ca-cert
+      - contains:
+          path: spec.jobTemplate.spec.template.spec.volumes
+          content:
+            name: temp-dir
+            emptyDir: {}
+
+  - it: check restartPolicy
+    asserts:
+      - equal:
+          path: spec.jobTemplate.spec.template.spec.restartPolicy
+          value: Never
\ No newline at end of file
diff --git a/src/test/helm/truststore/truststore_rbac_test.yaml b/src/test/helm/truststore/truststore_rbac_test.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..f40118b06769e0a8b624f9d4693e9ce17e914c09
--- /dev/null
+++ b/src/test/helm/truststore/truststore_rbac_test.yaml
@@ -0,0 +1,140 @@
+#
+# 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 truststore rbac
+release:
+  name: user-manager
+  namespace: by-helm-test
+templates:
+  - templates/truststore/truststore_rbac.yaml
+tests:
+  - it: RBAC should not exist if disableCreateTruststore is true
+    set:
+      disableCreateTruststore: true
+    asserts:
+      - hasDocuments:
+        count: 0
+  - it: RBAC should not exist if disableNamespaceTruststore is true
+    set:
+      disableNamespaceTruststore: true
+    asserts:
+      - hasDocuments:
+        count: 0
+
+# ServiceAccount
+  - it: check ServiceAccount header data
+    documentIndex: 0
+    asserts:
+      - isAPIVersion:
+          of: v1
+      - isKind:
+          of: ServiceAccount
+  - it: check ServiceAccount default metadata
+    documentIndex: 0
+    asserts:
+      - equal:
+          path: metadata.name
+          value: truststore-secret-service-account
+      - equal:
+          path: metadata.namespace
+          value: by-helm-test
+
+# Role
+  - it: check Role header data
+    documentIndex: 1
+    asserts:
+      - isAPIVersion:
+          of: rbac.authorization.k8s.io/v1
+      - isKind:
+          of: Role
+  - it: check Role default metadata
+    documentIndex: 1
+    asserts:
+      - equal:
+          path: metadata.name
+          value: truststore-secret-role
+      - equal:
+          path: metadata.namespace
+          value: by-helm-test
+  - it: check Role rules
+    documentIndex: 1
+    asserts:
+      - contains:
+          path: rules
+          content:
+            apiGroups:
+              - ""
+            resources:
+              - secrets
+            resourceNames:
+              - user-manager-truststore
+            verbs:
+              - patch
+              - update
+              - get
+      - contains:
+          path: rules
+          content:
+            apiGroups:
+              - ""
+            resources:
+              - secrets
+            verbs:
+              - create
+
+# RoleBinding
+  - it: check RoleBinding header data
+    documentIndex: 2
+    asserts:
+      - isAPIVersion:
+          of: rbac.authorization.k8s.io/v1
+      - isKind:
+          of: RoleBinding
+  - it: check RoleBinding default metadata
+    documentIndex: 2
+    asserts:
+      - equal:
+          path: metadata.name
+          value: truststore-secret-role-binding
+      - equal:
+          path: metadata.namespace
+          value: by-helm-test
+  - it: check RoleBinding subjects
+    documentIndex: 2
+    asserts:
+      - contains:
+          path: subjects
+          content:
+            kind: ServiceAccount
+            name: truststore-secret-service-account
+            namespace: by-helm-test
+  - it: check RoleBinding roleRef
+    documentIndex: 2
+    asserts:
+      - equal:
+          path: roleRef
+          value:
+            kind: Role
+            name: truststore-secret-role
+            apiGroup: rbac.authorization.k8s.io
\ No newline at end of file