diff --git a/bayernid-proxy-interface/pom.xml b/bayernid-proxy-interface/pom.xml
index bbdaf180b6520d41a163138c882c0dae58330cd7..7e6f940848f31f61cd9d3cebd39e54b352c5684d 100644
--- a/bayernid-proxy-interface/pom.xml
+++ b/bayernid-proxy-interface/pom.xml
@@ -30,7 +30,7 @@
 	<parent>
 		<groupId>de.ozgcloud.common</groupId>
 		<artifactId>ozgcloud-common-dependencies</artifactId>
-		<version>4.5.0-SNAPSHOT</version>
+		<version>4.5.0</version>
 		<relativePath/>
 	</parent>
 
diff --git a/pom.xml b/pom.xml
index 88cb5b3c2d1880325d01db68a8a8456815f71146..9ac1e766dd003d329e9d834794c2d14101fbce0a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -31,7 +31,7 @@
 	<parent>
 		<groupId>de.ozgcloud.common</groupId>
 		<artifactId>ozgcloud-common-parent</artifactId>
-		<version>4.5.0-SNAPSHOT</version>
+		<version>4.5.0</version>
 		<relativePath/>
 	</parent>
 
diff --git a/src/main/helm/templates/_helpers.tpl b/src/main/helm/templates/_helpers.tpl
index 591374806e479479021290713461546c3c3f11c3..7366513307c499736870b793bc78d12278e95326 100644
--- a/src/main/helm/templates/_helpers.tpl
+++ b/src/main/helm/templates/_helpers.tpl
@@ -4,18 +4,25 @@
 app.kubernetes.io/instance: bayernid-proxy
 app.kubernetes.io/managed-by: {{ .Release.Service }}
 app.kubernetes.io/name: {{ .Release.Name }}
-app.kubernetes.io/namespace: {{ .Release.Namespace }}
+app.kubernetes.io/namespace: {{ include "app.namespace" . }}
 app.kubernetes.io/part-of: ozgcloud
 app.kubernetes.io/version: {{ .Chart.Version }}
 helm.sh/chart: {{ printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" }}
 app.kubernetes.io/component: bayernid-proxy
-component: bayernid-proxy
 {{- end -}}
 
+{{/* error check 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec) */}}
+{{/* Namespace */}}
+{{- define "app.namespace" -}}
+{{- if gt (len (.Release.Namespace)) 63 -}}
+{{- fail (printf ".Release.Namespace %s ist zu lang (max. 63 Zeichen)" .Release.Namespace) -}}
+{{- end -}}
+{{ printf "%s" .Release.Namespace }}
+{{- end -}} 
+
 {{- define "app.matchLabels" }}
 app.kubernetes.io/name: {{ .Release.Name }}
-app.kubernetes.io/namespace: {{ .Release.Namespace }}
-component: bayernid-proxy
+app.kubernetes.io/namespace: {{ include "app.namespace" . }}
 {{- end -}}
 
 {{- define "app.envSpringProfiles" }}
diff --git a/src/main/helm/templates/configmap_bindings_type.yaml b/src/main/helm/templates/configmap_bindings_type.yaml
index d56b2505d154567012dff38fe9ef5b50887b45a5..6e64b9a162baa6d8adbfe2ae4d773406b50fc939 100644
--- a/src/main/helm/templates/configmap_bindings_type.yaml
+++ b/src/main/helm/templates/configmap_bindings_type.yaml
@@ -26,7 +26,7 @@ apiVersion: v1
 kind: ConfigMap
 metadata:
   name: bindings-type
-  namespace: {{ .Release.Namespace }}
+  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 f1aadaee30f8dcdd3fa17fcb61678dfbd281fd46..adabc841451041d927704f8da03742a893215cb2 100644
--- a/src/main/helm/templates/deployment.yaml
+++ b/src/main/helm/templates/deployment.yaml
@@ -26,9 +26,10 @@ apiVersion: apps/v1
 kind: Deployment
 metadata:
   name: {{ .Release.Name }}
-  namespace: {{ .Release.Namespace }}
+  namespace: {{ include "app.namespace" . }}
   labels:
     {{- include "app.defaultLabels" . | indent 4 }}
+    component: bayernid-proxy
 spec:
   progressDeadlineSeconds: 600
   replicas: {{ .Values.replicaCount }}
@@ -36,6 +37,7 @@ spec:
   selector:
     matchLabels:
       {{- include "app.matchLabels" . | indent 6 }}
+      component: bayernid-proxy
   strategy:
     rollingUpdate:
       maxSurge: 1
@@ -45,6 +47,7 @@ spec:
     metadata:
       labels:
         {{- include "app.defaultLabels" . | indent 8 }}
+        component: bayernid-proxy
     spec:  
       {{- if (.Values.serviceAccount).create }}
       serviceAccountName: {{ include "app.serviceAccountName" . }}
diff --git a/src/main/helm/templates/grpc_certificate.yaml b/src/main/helm/templates/grpc_certificate.yaml
index 94943b038637c582e735426af31c27de51ec0a47..4f294c96c6b1220cd148a91d228acc8e0b1added 100644
--- a/src/main/helm/templates/grpc_certificate.yaml
+++ b/src/main/helm/templates/grpc_certificate.yaml
@@ -27,11 +27,11 @@ apiVersion: cert-manager.io/v1
 kind: Certificate
 metadata:
   name: bayernid-proxy-grpc-tls-certificate
-  namespace: {{ .Release.Namespace }}
+  namespace: {{ include "app.namespace" . }}
 spec:
   secretName: bayernid-proxy-grpc-tls-cert
   issuerRef:
-    name: {{ .Release.Namespace }}-ca-issuer
+    name: {{ include "app.namespace" . }}-ca-issuer
     kind: Issuer
   duration: 8760h0m0s # 1 Jahr
   renewBefore: 5840h0m0s # 8 Monate
@@ -40,10 +40,10 @@ spec:
     algorithm: RSA
     encoding: PKCS8
   dnsNames:
-    - "*.{{ .Release.Name }}.{{ .Release.Namespace }}.svc.cluster.local"
-    - "{{ .Release.Name }}.{{ .Release.Namespace }}.svc.cluster.local"
-    - "{{ .Release.Name }}.{{ .Release.Namespace }}.svc.cluster"
-    - "{{ .Release.Name }}.{{ .Release.Namespace }}.svc"
-    - "{{ .Release.Name }}.{{ .Release.Namespace }}"
+    - "*.{{ .Release.Name }}.{{ include "app.namespace" . }}.svc.cluster.local"
+    - "{{ .Release.Name }}.{{ include "app.namespace" . }}.svc.cluster.local"
+    - "{{ .Release.Name }}.{{ include "app.namespace" . }}.svc.cluster"
+    - "{{ .Release.Name }}.{{ include "app.namespace" . }}.svc"
+    - "{{ .Release.Name }}.{{ include "app.namespace" . }}"
     - "{{ .Release.Name }}"
 {{- 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 35c46c125ff3963c3ed081d5286b37036d475c0a..4e6bce277abdb8b56db1ce55ca9cd4151662e0c7 100644
--- a/src/main/helm/templates/network_policy.yaml
+++ b/src/main/helm/templates/network_policy.yaml
@@ -27,7 +27,7 @@ apiVersion: networking.k8s.io/v1
 kind: NetworkPolicy
 metadata:
   name: network-policy-bayernid-proxy
-  namespace: {{ .Release.Namespace }}
+  namespace: {{ include "app.namespace" . }}
 spec:
   podSelector:
     matchLabels:
@@ -43,6 +43,13 @@ spec:
       podSelector: 
         matchLabels:
           component: vorgang-manager
+  - from:
+    - namespaceSelector:
+        matchLabels:
+          name: {{ (.Values.networkPolicy).monitoringNamespace | default "openshift-user-workload-monitoring" }}
+    ports:
+    - protocol: TCP
+      port: 8081
 {{- with (.Values.networkPolicy).additionalIngressConfigLocal }}
 {{ toYaml . | indent 2 }}
 {{- end }}
diff --git a/src/main/helm/templates/service.yaml b/src/main/helm/templates/service.yaml
index ed6467de511d8fddec146bd3fb2a96791f7f7a8f..532b76c955fee9570f85fd2651335a065e15076e 100644
--- a/src/main/helm/templates/service.yaml
+++ b/src/main/helm/templates/service.yaml
@@ -26,9 +26,10 @@ apiVersion: v1
 kind: Service
 metadata:
   name: {{.Release.Name }}
-  namespace: {{ .Release.Namespace }}
+  namespace: {{ include "app.namespace" . }}
   labels:
     {{- include "app.defaultLabels" . | indent 4 }}
+    component: bayernid-proxy
 spec:
   type: ClusterIP
   ports:
@@ -40,3 +41,4 @@ spec:
       protocol: TCP
   selector:
     {{- include "app.matchLabels" . | indent 4 }}
+    component: bayernid-proxy
diff --git a/src/main/helm/templates/service_account.yaml b/src/main/helm/templates/service_account.yaml
index 231d53f52dfe67b27f474ebf552d1e10a052f042..3bac8e223d1fd108b386d1f06ed4e9fb2284a67c 100644
--- a/src/main/helm/templates/service_account.yaml
+++ b/src/main/helm/templates/service_account.yaml
@@ -27,5 +27,5 @@ apiVersion: v1
 kind: ServiceAccount
 metadata:
   name: {{ include "app.serviceAccountName" . }}
-  namespace: {{ .Release.Namespace }}
+  namespace: {{ include "app.namespace" . }}
 {{- end }}
\ No newline at end of file
diff --git a/src/main/helm/templates/service_monitor.yaml b/src/main/helm/templates/service_monitor.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..a8e022b40568c35d246ca22f77f88a161592185c
--- /dev/null
+++ b/src/main/helm/templates/service_monitor.yaml
@@ -0,0 +1,43 @@
+#
+# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
+# Ministerpräsidenten des Landes Schleswig-Holstein
+# Staatskanzlei
+# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
+#
+# Lizenziert unter der EUPL, Version 1.2 oder - sobald
+# diese von der Europäischen Kommission genehmigt wurden -
+# Folgeversionen der EUPL ("Lizenz");
+# Sie dürfen dieses Werk ausschließlich gemäß
+# dieser Lizenz nutzen.
+# Eine Kopie der Lizenz finden Sie hier:
+#
+# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
+#
+# Sofern nicht durch anwendbare Rechtsvorschriften
+# gefordert oder in schriftlicher Form vereinbart, wird
+# die unter der Lizenz verbreitete Software "so wie sie
+# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
+# ausdrücklich oder stillschweigend - verbreitet.
+# Die sprachspezifischen Genehmigungen und Beschränkungen
+# unter der Lizenz sind dem Lizenztext zu entnehmen.
+#
+
+apiVersion: monitoring.coreos.com/v1
+kind: ServiceMonitor
+metadata:
+  name: {{ .Release.Name }}
+  namespace: {{ include "app.namespace" . }}
+  labels:
+    {{- include "app.defaultLabels" . | indent 4 }}
+    component: bayernid-proxy-service-monitor
+spec:
+  endpoints:
+  - port: metrics
+    path: /actuator/prometheus
+  namespaceSelector:
+    matchNames:
+    - {{ include "app.namespace" . }}
+  selector:
+    matchLabels:
+      {{- include "app.matchLabels" . | indent 6 }}
+      component: bayernid-proxy
\ No newline at end of file
diff --git a/src/test/helm/deployment_63_char_test.yaml b/src/test/helm/deployment_63_char_test.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..6aa7af646b647c6a193413ed24b5f78fa9a97440
--- /dev/null
+++ b/src/test/helm/deployment_63_char_test.yaml
@@ -0,0 +1,48 @@
+#
+# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
+# Ministerpräsidenten des Landes Schleswig-Holstein
+# Staatskanzlei
+# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
+#
+# Lizenziert unter der EUPL, Version 1.2 oder - sobald
+# diese von der Europäischen Kommission genehmigt wurden -
+# Folgeversionen der EUPL ("Lizenz");
+# Sie dürfen dieses Werk ausschließlich gemäß
+# dieser Lizenz nutzen.
+# Eine Kopie der Lizenz finden Sie hier:
+#
+# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
+#
+# Sofern nicht durch anwendbare Rechtsvorschriften
+# gefordert oder in schriftlicher Form vereinbart, wird
+# die unter der Lizenz verbreitete Software "so wie sie
+# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
+# ausdrücklich oder stillschweigend - verbreitet.
+# Die sprachspezifischen Genehmigungen und Beschränkungen
+# unter der Lizenz sind dem Lizenztext zu entnehmen.
+#
+
+suite: test deyploment less than 63 chars
+release:
+  name: bayernid-proxy
+  namespace: by-helm-test
+
+templates:
+  - templates/deployment.yaml
+set:
+  ozgcloud:
+    environment: dev
+    bayernid:
+      server: "https://test"
+      certificateSecretName: "bayernidCertificat"
+
+tests:
+  - it: should fail on .Release.Namespace length longer than 63 characters
+    release:
+      namespace: test1234567890123123456789012345678901234567890123456789012345678901234567890123456789012345678904567890
+    asserts:
+      - failedTemplate:
+          errorMessage: .Release.Namespace test1234567890123123456789012345678901234567890123456789012345678901234567890123456789012345678904567890 ist zu lang (max. 63 Zeichen)
+  - it: should not fail on .Release.Namespace length less than 63 characters
+    asserts:
+      - notFailedTemplate: {}
\ 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 e8adaa912e8ca2ca7a5f85c14a1cf04f15f00a88..87a413a71650374c6fb50334a34c0ae698a61e41 100644
--- a/src/test/helm/network_policy_test.yaml
+++ b/src/test/helm/network_policy_test.yaml
@@ -77,6 +77,15 @@ tests:
                 podSelector: 
                   matchLabels:
                     component: vorgang-manager
+            - from:
+              - namespaceSelector:
+                  matchLabels:
+                    name: openshift-user-workload-monitoring
+              ports:
+                - port: 8081
+                  protocol: TCP
+
+                                   
             egress:
             - to:
               - namespaceSelector:
@@ -91,6 +100,22 @@ tests:
                   protocol: UDP
                 - port: 5353
                   protocol: TCP
+  - it: should set rule for monitoring
+    set:
+      networkPolicy:
+        dnsServerNamespace: test-dns-namespace
+        monitoringNamespace: test-monitoring
+    asserts:
+      - contains:
+          path: spec.ingress
+          content:
+            from:
+            - namespaceSelector:
+                matchLabels:
+                  name: test-monitoring
+            ports:
+              - port: 8081
+                protocol: TCP
 
   - it: add ingress rule by values local
     set:
diff --git a/src/test/helm/service_monitor_test.yaml b/src/test/helm/service_monitor_test.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..ba8983c365d364184ce8937977139ce1866e36cc
--- /dev/null
+++ b/src/test/helm/service_monitor_test.yaml
@@ -0,0 +1,92 @@
+#
+# Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
+# Ministerpräsidenten des Landes Schleswig-Holstein
+# Staatskanzlei
+# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
+#
+# Lizenziert unter der EUPL, Version 1.2 oder - sobald
+# diese von der Europäischen Kommission genehmigt wurden -
+# Folgeversionen der EUPL ("Lizenz");
+# Sie dürfen dieses Werk ausschließlich gemäß
+# dieser Lizenz nutzen.
+# Eine Kopie der Lizenz finden Sie hier:
+#
+# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
+#
+# Sofern nicht durch anwendbare Rechtsvorschriften
+# gefordert oder in schriftlicher Form vereinbart, wird
+# die unter der Lizenz verbreitete Software "so wie sie
+# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
+# ausdrücklich oder stillschweigend - verbreitet.
+# Die sprachspezifischen Genehmigungen und Beschränkungen
+# unter der Lizenz sind dem Lizenztext zu entnehmen.
+#
+
+suite: test service_monitor
+release:
+  name: bayernid-proxy
+  namespace: sh-helm-test
+templates:
+  - templates/service_monitor.yaml
+tests:
+  - it: should have basic info and the label component with value bayernid-proxy-service-monitor attached
+    asserts:
+      - isKind:
+          of: ServiceMonitor
+      - isAPIVersion:
+          of: monitoring.coreos.com/v1
+      - equal:
+          path: metadata.name
+          value: bayernid-proxy
+      - equal:
+          path: metadata.namespace
+          value: sh-helm-test
+      - equal:
+          path: metadata.labels["component"]
+          value: bayernid-proxy-service-monitor
+      
+  - it: should contain default lables and component lables
+    asserts:
+      - equal:
+          path: metadata.labels
+          value:
+            app.kubernetes.io/component: bayernid-proxy
+            app.kubernetes.io/instance: bayernid-proxy
+            app.kubernetes.io/managed-by: Helm
+            app.kubernetes.io/name: bayernid-proxy
+            app.kubernetes.io/namespace: sh-helm-test
+            app.kubernetes.io/part-of: ozgcloud
+            app.kubernetes.io/version: 0.0.0-MANAGED-BY-JENKINS
+            component: bayernid-proxy-service-monitor
+            helm.sh/chart: bayernid-proxy-0.0.0-MANAGED-BY-JENKINS
+
+  - it: should have the metrics endpoint configured by default
+    set:
+      env.springProfiles: oc,stage
+    asserts:
+      - contains:
+          path: spec.endpoints
+          content:
+            port: metrics
+            path: /actuator/prometheus
+  - it: should be able to enable the endpoint
+    asserts:
+      - contains:
+          path: spec.endpoints
+          content:
+            port: metrics
+            path: /actuator/prometheus
+  - it: namespace selector should contain the namespace
+    asserts:
+      - contains:
+          path: spec.namespaceSelector.matchNames
+          content: sh-helm-test
+
+  - it: selector should contain helm recommended labels name and namespace
+    asserts:
+      - equal:
+          path: spec.selector.matchLabels
+          value: 
+            app.kubernetes.io/name: bayernid-proxy
+            app.kubernetes.io/namespace: sh-helm-test
+            component: bayernid-proxy