diff --git a/src/main/helm/templates/_helpers.tpl b/src/main/helm/templates/_helpers.tpl
index 59f494e51d8a6842fc5eab58c56c4c179ad03a01..de78b3fcf20a2677189f21672768deaf4ca88bc5 100644
--- a/src/main/helm/templates/_helpers.tpl
+++ b/src/main/helm/templates/_helpers.tpl
@@ -139,4 +139,8 @@ app.kubernetes.io/namespace: {{ include "app.namespace" . }}
 {{- $lowerClientName := . | lower }}
 {{- $alphanumericClientName :=  (include "app.replaceAllNonAlphanumeric" $lowerClientName ) }}
 {{- printf "%s-keycloak-client"  ( $alphanumericClientName | trunc 20) }}
+{{- end -}}
+
+{{- define "app.serviceAccountName" -}}
+{{ printf "%s" ( (.Values.serviceAccount).name | default "alfa-service-account" ) }}
 {{- end -}}
\ No newline at end of file
diff --git a/src/main/helm/templates/bindings_type_configmap.yaml b/src/main/helm/templates/bindings_type_configmap.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..2b5ab84277af3b9690be17a0925b0b6e4f3cd6b2
--- /dev/null
+++ b/src/main/helm/templates/bindings_type_configmap.yaml
@@ -0,0 +1,32 @@
+#
+# 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: v1
+kind: ConfigMap
+metadata:
+  name: alfa-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
index ba7f70df7981f1f7687c06dfa3321e6cb82058a9..f3c62e8b65a11462fc2ef24f14ee5b311cf27fdd 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: alfa
     spec:
+      {{- if (.Values.serviceAccount).create }}
+      serviceAccountName: {{ include "app.serviceAccountName" . }}
+      {{- end }}
       topologySpreadConstraints:
       - maxSkew: 1
         topologyKey: kubernetes.io/hostname
@@ -134,7 +137,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
@@ -150,20 +159,39 @@ spec:
            readOnly: true
          - name: temp-dir
            mountPath: "/tmp"
+        {{- if (.Values.sso).tlsCertName }}
+         - name: sso-tls-certificate
+           mountPath: "/bindings/ca-certificates/sso-tls-crt.pem"
+           subPath: tls.crt
+           readOnly: true
+        {{- end }}
       volumes:
          - name: bindings
            configMap:
-              name: bindings-type
+              name: alfa-bindings-type
          - name: user-manager-tls-certificate
            secret:
               secretName: user-manager-tls-cert
          - name: temp-dir
            emptyDir: {}
+        {{- if (.Values.sso).tlsCertName }}
+         - name: sso-tls-certificate
+           secret:
+              secretName: {{ .Values.sso.tlsCertName }}
+        {{- end }}
       dnsConfig: {}
       dnsPolicy: ClusterFirst
       imagePullSecrets:
+      {{- if .Values.imagePullSecret }}
+      - name: {{ .Values.imagePullSecret }}
+      {{ else }}
       - name: alfa-image-pull-secret
+      {{- end }}
       restartPolicy: Always
+      {{- with .Values.hostAliases }}
+      hostAliases:
+{{ toYaml . | indent 8 }}
+      {{- end }}
       schedulerName: default-scheduler
       securityContext: {}
       terminationGracePeriodSeconds: 30
diff --git a/src/main/helm/templates/image-pull-secret.yaml b/src/main/helm/templates/image-pull-secret.yaml
index 5703ac4e5dd6cf2256d0502c5d5dc4bac6237b9e..a8a00fa77dd35d2e1c63a452fea3e947e5349cbb 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 99f46917b63acea9d1f90c0121fdc11955e6ebd2..2dea7390aa17f67f6566eacc6b712798b3180551 100644
--- a/src/main/helm/templates/ingress.yaml
+++ b/src/main/helm/templates/ingress.yaml
@@ -26,7 +26,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
@@ -52,6 +56,8 @@ spec:
   tls:
     - hosts:
       - {{ trimPrefix "https://" ( include "app.baseUrl" . ) }}
-      {{- 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 }}
\ No newline at end of file
diff --git a/src/main/helm/templates/keycloak-client-crd.yaml b/src/main/helm/templates/keycloak-client-crd.yaml
index 3ebada5829b7fa6037191e94526161b7dbedd78e..fbcd6e5e36878f5f7e2f50685c9e3e939e6dc021 100644
--- a/src/main/helm/templates/keycloak-client-crd.yaml
+++ b/src/main/helm/templates/keycloak-client-crd.yaml
@@ -1,3 +1,4 @@
+{{- if not (.Values.sso).disableOzgOperator -}}
 {{ range $client := .Values.sso.keycloak_clients }}
 ---
 {{- if $client.kopOperator }}
@@ -58,4 +59,5 @@ spec:
 {{ toYaml . | indent 4 }}
     {{- end }}
   {{- end }}
-{{ end }}
\ No newline at end of file
+{{ end }}
+{{- end -}}
\ No newline at end of file
diff --git a/src/main/helm/templates/keycloak-crd.yaml b/src/main/helm/templates/keycloak-crd.yaml
index 45ef2e768ee0be6ca465e66ed98226f58a20097a..71f21d0ee0d9fb65655dfe9cf8ac7365aa299d3e 100644
--- a/src/main/helm/templates/keycloak-crd.yaml
+++ b/src/main/helm/templates/keycloak-crd.yaml
@@ -1,4 +1,4 @@
----
+{{- if not (.Values.sso).disableOzgOperator -}}
 apiVersion: operator.ozgcloud.de/v1
 kind: OzgCloudKeycloakRealm
 metadata:
@@ -7,3 +7,4 @@ metadata:
 spec:
   keep_after_delete: {{ .Values.sso.keep_after_delete | default false }}
   displayName: {{ include "app.ssoRealmDisplayName" . }}
+{{- end -}}
\ No newline at end of file
diff --git a/src/main/helm/templates/keycloak-group-crd.yaml b/src/main/helm/templates/keycloak-group-crd.yaml
index 9f557969d664a464f7df6091421cc4ada9ec0bc7..ce871eebb7825f563a6fedc58bbe8a5d345e988f 100644
--- a/src/main/helm/templates/keycloak-group-crd.yaml
+++ b/src/main/helm/templates/keycloak-group-crd.yaml
@@ -1,3 +1,4 @@
+{{- if not (.Values.sso).disableOzgOperator -}}
 {{ range $group := .Values.sso.keycloak_groups }}
 ---
 apiVersion: operator.ozgcloud.de/v1
@@ -15,4 +16,5 @@ spec:
       value: {{ $attribute.value }}
     {{- end }}
   {{- end }}
-{{ end }}
\ No newline at end of file
+{{ end }}
+{{- end -}}
\ No newline at end of file
diff --git a/src/main/helm/templates/keycloak-user-crd.yaml b/src/main/helm/templates/keycloak-user-crd.yaml
index 531c2d4233d9790cfe6e3eff41e3ba8d902223fb..fd766a7174272a8448e6732ff716305d71ff925e 100644
--- a/src/main/helm/templates/keycloak-user-crd.yaml
+++ b/src/main/helm/templates/keycloak-user-crd.yaml
@@ -1,3 +1,4 @@
+{{- if not (.Values.sso).disableOzgOperator -}}
 {{ range $user := concat (.Values.sso.api_users | default list) (.Values.sso.keycloak_users | default list) }}
 ---
 {{- if $user.kopOperator }}
@@ -41,4 +42,5 @@ spec:
 {{ toYaml . | indent 6 }}
     {{- end }}
   {{- end }}
-{{ end }}
\ No newline at end of file
+{{ end }}
+{{- end -}}
\ No newline at end of file
diff --git a/src/main/helm/templates/ozgcloud_keycloak_operator_secrets_read_role.yaml b/src/main/helm/templates/ozgcloud_keycloak_operator_secrets_read_role.yaml
index aac7f74a5b94d7ef0d3c5e76a75bee83b3d086e1..f03b806e1fb9cbbfb1c52d859dfdb636f5f485e6 100644
--- a/src/main/helm/templates/ozgcloud_keycloak_operator_secrets_read_role.yaml
+++ b/src/main/helm/templates/ozgcloud_keycloak_operator_secrets_read_role.yaml
@@ -1,4 +1,5 @@
-{{- if or (.Values.sso.keycloak_users) (.Values.sso.api_users) }} 
+{{- if not (.Values.sso).disableOzgOperator }}
+{{- if or (.Values.sso.keycloak_users) (.Values.sso.api_users) }}
 apiVersion: rbac.authorization.k8s.io/v1
 kind: Role
 metadata:
@@ -16,4 +17,5 @@ rules:
     verbs:
       - get
       - list
+{{- end }}
 {{- end }}
\ No newline at end of file
diff --git a/src/main/helm/templates/ozgcloud_keycloak_operator_secrets_read_role_binding.yaml b/src/main/helm/templates/ozgcloud_keycloak_operator_secrets_read_role_binding.yaml
index deb14859f8ec076370be684d804f8771c3db470f..832fd464fd53fa709c1e76c46558b6f8bc4a62b8 100644
--- a/src/main/helm/templates/ozgcloud_keycloak_operator_secrets_read_role_binding.yaml
+++ b/src/main/helm/templates/ozgcloud_keycloak_operator_secrets_read_role_binding.yaml
@@ -1,3 +1,4 @@
+{{- if not (.Values.sso).disableOzgOperator }}
 {{- if or (.Values.sso.keycloak_users) (.Values.sso.api_users) }}
 apiVersion: rbac.authorization.k8s.io/v1
 kind: RoleBinding
@@ -12,4 +13,5 @@ roleRef:
   kind: Role
   name: ozgcloud-keycloak-operator-secrets-read-role-alfa
   apiGroup: rbac.authorization.k8s.io
+{{- end }}
 {{- end }}
\ No newline at end of file
diff --git a/src/main/helm/templates/ozgcloud_keycloak_operator_secrets_write_role.yaml b/src/main/helm/templates/ozgcloud_keycloak_operator_secrets_write_role.yaml
index 98ebcf04351ddc06feec8529bbff72b0c7ea2ebb..58a135db883529b13407c31b28b2008309df5670 100644
--- a/src/main/helm/templates/ozgcloud_keycloak_operator_secrets_write_role.yaml
+++ b/src/main/helm/templates/ozgcloud_keycloak_operator_secrets_write_role.yaml
@@ -1,3 +1,4 @@
+{{- if not (.Values.sso).disableOzgOperator }}
 {{- if or (.Values.sso.keycloak_users) (.Values.sso.api_users) }}
 apiVersion: rbac.authorization.k8s.io/v1
 kind: Role
@@ -12,3 +13,4 @@ rules:
     verbs:
       - create
 {{- end }}
+{{- end }}
\ No newline at end of file
diff --git a/src/main/helm/templates/ozgcloud_keycloak_operator_secrets_write_role_binding.yaml b/src/main/helm/templates/ozgcloud_keycloak_operator_secrets_write_role_binding.yaml
index 517307c08e2a0a94f94e1062d3fcc5d3428679ce..8f8fecc682dbb1fd7357b04ede7c526291a7d2c1 100644
--- a/src/main/helm/templates/ozgcloud_keycloak_operator_secrets_write_role_binding.yaml
+++ b/src/main/helm/templates/ozgcloud_keycloak_operator_secrets_write_role_binding.yaml
@@ -1,3 +1,4 @@
+{{- if not (.Values.sso).disableOzgOperator }}
 {{- if or (.Values.sso.keycloak_users) (.Values.sso.api_users) }}
 apiVersion: rbac.authorization.k8s.io/v1
 kind: RoleBinding
@@ -12,4 +13,5 @@ roleRef:
   kind: Role
   name: ozgcloud-keycloak-operator-secrets-write-role-alfa
   apiGroup: rbac.authorization.k8s.io
+{{- end }}
 {{- end }}
\ No newline at end of file
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 6299afcb8429b324f98f373af6e57512af60a27d..df1548effd48f4cfdbeeb632a84a328e748306d4 100644
--- a/src/main/helm/values.yaml
+++ b/src/main/helm/values.yaml
@@ -29,11 +29,6 @@ baseUrl: dev.by.ozg-cloud.de
 sso:
   serverUrl: https://sso.dev.by.ozg-cloud.de
 
-imageCredentials:
-  registry: docker.ozg-sh.de
-  username: ozgcloud
-  password:  
-  email: webmaster@ozg-sh.de
 
 image:
   repo: docker.ozg-sh.de
diff --git a/src/test/bindings_type_configmap_test.yaml b/src/test/bindings_type_configmap_test.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..da77e60e93df1637cd2fab6703d9c9f6f5fbc0cd
--- /dev/null
+++ b/src/test/bindings_type_configmap_test.yaml
@@ -0,0 +1,46 @@
+#
+# 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: Certificate ConfigMap Binding
+release:
+  name: alfa
+  namespace: sh-helm-test
+templates:
+  - templates/bindings_type_configmap.yaml
+tests:
+  - it: validate configMap values
+    asserts:
+      - isKind:
+          of: ConfigMap
+      - equal:
+          path: metadata.name
+          value: bindings-type
+      - equal:
+          path: metadata.namespace
+          value: sh-helm-test
+      - equal:
+          path: data
+          value:
+            type: | 
+              ca-certificates
\ No newline at end of file
diff --git a/src/test/helm/deployment_bindings_test.yaml b/src/test/helm/deployment_bindings_test.yaml
index c15ba1620117f2c0ed7087d45c0a266228fc0a1a..e1f8d9ecccead616a88dab079307e715dca2f672 100644
--- a/src/test/helm/deployment_bindings_test.yaml
+++ b/src/test/helm/deployment_bindings_test.yaml
@@ -52,6 +52,13 @@ tests:
           content:
             name: temp-dir
             mountPath: "/tmp"
+      - notContains:
+          path: spec.template.spec.containers[0].volumeMounts
+          content:
+            name: sso-tls-certificate
+            mountPath: "/bindings/ca-certificates/ssl-tls-ca.pem"
+            subPath: ca.crt
+            readOnly: true
   - it: should have volume mounts
     set: 
        usermanagerName: user-manager
@@ -61,7 +68,7 @@ tests:
            content:
               name: bindings
               configMap:
-                 name: bindings-type
+                 name: alfa-bindings-type
       - contains:
            path: spec.template.spec.volumes
            content:
@@ -72,4 +79,26 @@ tests:
           path: spec.template.spec.volumes
           content:
             name: temp-dir
-            emptyDir: {}
\ No newline at end of file
+            emptyDir: {}
+      - notContains:
+          path: spec.template.spec.volumes
+          content:
+            name: sso-tls-certificate
+  - it: should have sso tls cert mount
+    set: 
+       usermanagerName: user-manager
+       sso.tlsCertName: sso-tls-cert
+    asserts:
+      - contains:
+          path: spec.template.spec.volumes
+          content:
+            name: sso-tls-certificate
+            secret:
+              secretName: sso-tls-cert
+      - contains:
+          path: spec.template.spec.containers[0].volumeMounts
+          content:
+            name: sso-tls-certificate
+            mountPath: "/bindings/ca-certificates/sso-tls-crt.pem"
+            subPath: tls.crt
+            readOnly: true
\ No newline at end of file
diff --git a/src/test/helm/deployment_defaults_spec_containers_securityContext_test.yaml b/src/test/helm/deployment_defaults_spec_containers_securityContext_test.yaml
index ca3da3f1d8788db76b62da17dcf6f5e074c2b0d3..16f0109ff540cebb7b24da478c6443ade68e6483 100644
--- a/src/test/helm/deployment_defaults_spec_containers_securityContext_test.yaml
+++ b/src/test/helm/deployment_defaults_spec_containers_securityContext_test.yaml
@@ -29,7 +29,7 @@ release:
 templates:
   - templates/deployment.yaml
 tests:
-  - it: should work
+  - it: check default values
     asserts:
       - isKind:
           of: Deployment
@@ -44,4 +44,22 @@ tests:
           value: false
       - equal:
           path: spec.template.spec.containers[0].securityContext.runAsNonRoot
-          value: false
+          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..517408b4e2d4253f52badff8cc619d1689dba8f6
--- /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: alfa
+  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..6e9426395432e6a30dcb4753bd38937edcfcb066
--- /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: alfa
+  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: alfa-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..2a6a0afc9b9042800078d1aacbc3b6943b0055dc
--- /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: alfa
+  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: alfa-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
new file mode 100644
index 0000000000000000000000000000000000000000..6ea26d0703f105c33527df9b24ea6351d29394d8
--- /dev/null
+++ b/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: alfa
+  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: alfa-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/src/test/helm/keycloak-client-crd-test.yaml b/src/test/helm/keycloak-client-crd-test.yaml
index f84809c0bff91e37867b7c39821eb4f234ab7d9e..4902829d978673407ad2bed0659acc537dc8b949 100644
--- a/src/test/helm/keycloak-client-crd-test.yaml
+++ b/src/test/helm/keycloak-client-crd-test.yaml
@@ -238,3 +238,15 @@ tests:
                 userinfo.token.claim: "true"
                 multivalued: "true"
                 aggregate.attrs: "true"
+
+  - it: should not create client cr if ozg operator is disabled
+    set:
+      sso:
+        disableOzgOperator: true
+        keycloak_clients:
+          - client_name: alfa
+            client_roles:
+              - name: ERSTE_ROLLE
+    asserts:
+      - hasDocuments:
+          count: 0
\ No newline at end of file
diff --git a/src/test/helm/keycloak-crd-test.yaml b/src/test/helm/keycloak-crd-test.yaml
index 973e898b2b10a5846a92de7daa84295b1a900454..0c0e17061de164e73aceb8d304723420e4fee42c 100644
--- a/src/test/helm/keycloak-crd-test.yaml
+++ b/src/test/helm/keycloak-crd-test.yaml
@@ -61,6 +61,9 @@ tests:
           path: spec.displayName
           value: Realm für Helm (test)
 
-
-
-
+  - it: should not create keycloak cr if ozg operator is disabled
+    set:
+      sso.disableOzgOperator: true
+    asserts:
+      - hasDocuments:
+          count: 0
\ No newline at end of file
diff --git a/src/test/helm/keycloak-group-crd-test.yaml b/src/test/helm/keycloak-group-crd-test.yaml
index d549158977db88203d38a1092f52c78f4dab4705..d72c99a0c51205e1330eb29e113aa7cb5d81763b 100644
--- a/src/test/helm/keycloak-group-crd-test.yaml
+++ b/src/test/helm/keycloak-group-crd-test.yaml
@@ -198,4 +198,14 @@ tests:
       - equal:
           path: metadata.name
           value: "besonders-langer-gru-keycloak-group"
-        documentIndex: 3
\ No newline at end of file
+        documentIndex: 3
+
+  - it: should not create group cr if ozg operator is disabled
+    set:
+      sso:
+        disableOzgOperator: true
+        keycloak_groups:
+          - name: ".erste gruppe"
+    asserts:
+      - hasDocuments:
+          count: 0
\ No newline at end of file
diff --git a/src/test/helm/keycloak-user-crd-test.yaml b/src/test/helm/keycloak-user-crd-test.yaml
index 5d8bf3dbeb34f2c620efc8d9f78d7534e019240f..6749e412eccff60baea5c5a4bf697bc468a9e4fb 100644
--- a/src/test/helm/keycloak-user-crd-test.yaml
+++ b/src/test/helm/keycloak-user-crd-test.yaml
@@ -553,4 +553,14 @@ tests:
           value: kop
       - equal:
           path: metadata.annotations.[helm.sh/resource-policy]
-          value: keep
\ No newline at end of file
+          value: keep
+
+  - it: should not create user cr if ozg operator is disabled
+    set:
+      sso:
+        disableOzgOperator: true
+        keycloak_users:
+          - name: kop
+    asserts:
+      - hasDocuments:
+          count: 0
\ No newline at end of file
diff --git a/src/test/helm/ozgcloud_keycloak_operator_secrets_read_role_binding_test.yaml b/src/test/helm/ozgcloud_keycloak_operator_secrets_read_role_binding_test.yaml
index 5260c6877a43597a263374a09db4b03ac5681a75..b2968dd01a5eebc796023878e7e5cc2cd48bcc8c 100644
--- a/src/test/helm/ozgcloud_keycloak_operator_secrets_read_role_binding_test.yaml
+++ b/src/test/helm/ozgcloud_keycloak_operator_secrets_read_role_binding_test.yaml
@@ -74,4 +74,14 @@ tests:
           content:
             kind: ServiceAccount
             name: ozgcloud-keycloak-operator-serviceaccount
-            namespace: test-operator-namespace
\ No newline at end of file
+            namespace: test-operator-namespace
+
+  - it: should not create RoleBinding if ozg operator is disabled
+    set:
+      sso:
+        disableOzgOperator: true
+        api_users:
+          - name: apiUser
+    asserts:
+      - hasDocuments:
+          count: 0
diff --git a/src/test/helm/ozgcloud_keycloak_operator_secrets_read_role_test.yaml b/src/test/helm/ozgcloud_keycloak_operator_secrets_read_role_test.yaml
index 2466ec7fa40dffe6b98c5c472989b398cc2ffb5d..c357513f57c0e6a9bb08aab6b33d8edb8c28ba3d 100644
--- a/src/test/helm/ozgcloud_keycloak_operator_secrets_read_role_test.yaml
+++ b/src/test/helm/ozgcloud_keycloak_operator_secrets_read_role_test.yaml
@@ -72,4 +72,14 @@ tests:
                - secrets
             verbs:
                - get
-               - list
\ No newline at end of file
+               - list
+
+  - it: should not create Role if ozg operator is disabled
+    set:
+      sso:
+        disableOzgOperator: true
+        api_users:
+          - name: apiUser
+    asserts:
+      - hasDocuments:
+          count: 0
\ No newline at end of file
diff --git a/src/test/helm/ozgcloud_keycloak_operator_secrets_write_role_binding_test.yaml b/src/test/helm/ozgcloud_keycloak_operator_secrets_write_role_binding_test.yaml
index 018e058be037ed3cefc00a6ad37b4bdcff205888..bab7d3f21457ae6f335bb8c793a7f38466157365 100644
--- a/src/test/helm/ozgcloud_keycloak_operator_secrets_write_role_binding_test.yaml
+++ b/src/test/helm/ozgcloud_keycloak_operator_secrets_write_role_binding_test.yaml
@@ -74,4 +74,14 @@ tests:
           content:
             kind: ServiceAccount
             name: ozgcloud-keycloak-operator-serviceaccount
-            namespace: test-operator-namespace
\ No newline at end of file
+            namespace: test-operator-namespace
+
+  - it: should not create RoleBinding if ozg operator is disabled
+    set:
+      sso:
+        disableOzgOperator: true
+        api_users:
+          - name: apiUser
+    asserts:
+      - hasDocuments:
+          count: 0
diff --git a/src/test/helm/ozgcloud_keycloak_operator_secrets_write_role_test.yaml b/src/test/helm/ozgcloud_keycloak_operator_secrets_write_role_test.yaml
index 16b4766bd43a05be653660156121188006654d56..6614157874477c5f37b8c7e579b0458fc3e3eec5 100644
--- a/src/test/helm/ozgcloud_keycloak_operator_secrets_write_role_test.yaml
+++ b/src/test/helm/ozgcloud_keycloak_operator_secrets_write_role_test.yaml
@@ -61,4 +61,14 @@ tests:
             resources:
                - secrets
             verbs:
-               - create
\ No newline at end of file
+               - create
+
+  - it: should not create Role if ozg operator is disabled
+    set:
+      sso:
+        disableOzgOperator: true
+        api_users:
+          - name: apiUser
+    asserts:
+      - hasDocuments:
+          count: 0
\ 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..89fca75606528f96abf1ddd80c45a8d0acdaf371
--- /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: alfa
+  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: alfa-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