diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index bb7d754baa751630b25598e182a30f062e9b6ebd..40be386b981d8564ef04539edebb44dc6a389d39 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -21,7 +21,7 @@ include:
       - ci-templates/default.yml
       - ci-templates/build.yml
     rules:
-      - if: '$CI_COMMIT_REF_PROTECTED && $CI_COMMIT_REF_NAME != "main" && $CI_COMMIT_REF_NAME != "develop"'
+      - if: '$CI_COMMIT_REF_PROTECTED == "true" && $CI_COMMIT_REF_NAME != "main" && $CI_COMMIT_REF_NAME != "develop"'
 
   - project: osl/code/org.etsi.osl.main
     ref: develop
@@ -29,7 +29,7 @@ include:
       - ci-templates/default.yml
       - ci-templates/build_unprotected.yml
     rules:
-      - if: '$CI_COMMIT_REF_NAME != "main" && $CI_COMMIT_REF_NAME != "develop" && !$CI_COMMIT_REF_PROTECTED'
+      - if: '$CI_COMMIT_REF_NAME != "main" && $CI_COMMIT_REF_NAME != "develop" && $CI_COMMIT_REF_PROTECTED == "false"'
 
 maven_build:
   extends: .maven_build
diff --git a/Dockerfile b/Dockerfile
index f44060eb99868f55b3768468447451422e6a00dc..6cffc0c75263b23bd4d27764c7e734427d0e5622 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -2,5 +2,5 @@ FROM ibm-semeru-runtimes:open-17.0.7_7-jdk
 MAINTAINER openslice.io
 RUN mkdir /opt/shareclasses
 RUN mkdir -p /opt/openslice/lib/
-COPY target/org.etsi.osl.cridge-1.0.0-exec.jar /opt/openslice/lib/
-CMD ["java", "-Xshareclasses:cacheDir=/opt/shareclasses", "-jar", "/opt/openslice/lib/org.etsi.osl.cridge-1.0.0-exec.jar"]
+COPY target/org.etsi.osl.cridge-1.1.0-exec.jar /opt/openslice/lib/
+CMD ["java", "-Xshareclasses:cacheDir=/opt/shareclasses", "-jar", "/opt/openslice/lib/org.etsi.osl.cridge-1.1.0-exec.jar"]
diff --git a/helm/cridge/.helmignore b/helm/cridge/.helmignore
new file mode 100644
index 0000000000000000000000000000000000000000..0e8a0eb36f4ca2c939201c0d54b5d82a1ea34778
--- /dev/null
+++ b/helm/cridge/.helmignore
@@ -0,0 +1,23 @@
+# Patterns to ignore when building packages.
+# This supports shell glob matching, relative path matching, and
+# negation (prefixed with !). Only one pattern per line.
+.DS_Store
+# Common VCS dirs
+.git/
+.gitignore
+.bzr/
+.bzrignore
+.hg/
+.hgignore
+.svn/
+# Common backup files
+*.swp
+*.bak
+*.tmp
+*.orig
+*~
+# Various IDEs
+.project
+.idea/
+*.tmproj
+.vscode/
diff --git a/helm/cridge/Chart.yaml b/helm/cridge/Chart.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..b2f5982d5abee6bd8da4a651e6abb678d3902dc8
--- /dev/null
+++ b/helm/cridge/Chart.yaml
@@ -0,0 +1,23 @@
+apiVersion: v2
+name: cridge
+description: Cridge Helm chart for Kubernetes
+
+# A chart can be either an 'application' or a 'library' chart.
+#
+# Application charts are a collection of templates that can be packaged into versioned archives
+# to be deployed.
+#
+# Library charts provide useful utilities or functions for the chart developer. They're included as
+# a dependency of application charts to inject those utilities and functions into the rendering
+# pipeline. Library charts do not define any templates and therefore cannot be deployed.
+type: application
+
+# This is the chart version. This version number should be incremented each time you make changes
+# to the chart and its templates, including the app version.
+# Versions are expected to follow Semantic Versioning (https://semver.org/)
+version: 1.0.0
+
+# This is the version number of the application being deployed. This version number should be
+# incremented each time you make changes to the application. Versions are not expected to
+# follow Semantic Versioning. They should reflect the version the application is using.
+appVersion: 2024Q4-SNAPSHOT
diff --git a/helm/cridge/files/org.etsi.osl.cridge/kubeconfig.yaml.empty b/helm/cridge/files/org.etsi.osl.cridge/kubeconfig.yaml.empty
new file mode 100644
index 0000000000000000000000000000000000000000..11764038afa4e39de82cc537994a03903690cde2
--- /dev/null
+++ b/helm/cridge/files/org.etsi.osl.cridge/kubeconfig.yaml.empty
@@ -0,0 +1,19 @@
+apiVersion: v1
+kind: Config
+clusters:
+- name: development-cluster
+  cluster:
+    certificate-authority: path/to/ca.crt # Path to certificate authority file
+    server: https://123.45.67.89:6443 # Cluster API server address
+contexts:
+- name: dev-user@development-cluster
+  context:
+    cluster: development-cluster
+    namespace: development # Default namespace
+    user: dev-user
+current-context: dev-user@development-cluster
+users:
+- name: dev-user
+  user:
+    client-certificate: path/to/cert.crt # Path to the client certificate
+    client-key: path/to/key.key # Path to the client key
diff --git a/helm/cridge/templates/_helpers.tpl b/helm/cridge/templates/_helpers.tpl
new file mode 100644
index 0000000000000000000000000000000000000000..89f9f71fba483f569751099ef78cdfb1da8a3f4c
--- /dev/null
+++ b/helm/cridge/templates/_helpers.tpl
@@ -0,0 +1,62 @@
+{{/*
+Expand the name of the chart.
+*/}}
+{{- define "openslice.name" -}}
+{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
+{{- end }}
+
+{{/*
+Create a default fully qualified app name.
+We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
+If release name contains chart name it will be used as a full name.
+*/}}
+{{- define "openslice.fullname" -}}
+{{- if .Values.fullnameOverride }}
+{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
+{{- else }}
+{{- $name := default .Chart.Name .Values.nameOverride }}
+{{- if contains $name .Release.Name }}
+{{- .Release.Name | trunc 63 | trimSuffix "-" }}
+{{- else }}
+{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
+{{- end }}
+{{- end }}
+{{- end }}
+
+{{/*
+Create chart name and version as used by the chart label.
+*/}}
+{{- define "openslice.chart" -}}
+{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
+{{- end }}
+
+{{/*
+Common labels
+*/}}
+{{- define "openslice.labels" -}}
+helm.sh/chart: {{ include "openslice.chart" . }}
+{{ include "openslice.selectorLabels" . }}
+{{- if .Chart.AppVersion }}
+app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
+{{- end }}
+app.kubernetes.io/managed-by: {{ .Release.Service }}
+{{- end }}
+
+{{/*
+Selector labels
+*/}}
+{{- define "openslice.selectorLabels" -}}
+app.kubernetes.io/name: {{ include "openslice.name" . }}
+app.kubernetes.io/instance: {{ .Release.Name }}
+{{- end }}
+
+{{/*
+Create the name of the service account to use
+*/}}
+{{- define "openslice.serviceAccountName" -}}
+{{- if .Values.serviceAccount.create }}
+{{- default (include "openslice.fullname" .) .Values.serviceAccount.name }}
+{{- else }}
+{{- default "default" .Values.serviceAccount.name }}
+{{- end }}
+{{- end }}
diff --git a/helm/cridge/templates/deployment.yaml b/helm/cridge/templates/deployment.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..0353795d55c52108050cc68941e183099492838b
--- /dev/null
+++ b/helm/cridge/templates/deployment.yaml
@@ -0,0 +1,57 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:	
+  namespace: {{ .Release.Namespace }}
+  labels:
+    app: {{ include "openslice.fullname" . }}
+    org.etsi.osl.service: cridge
+    chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
+    {{- include "openslice.labels" . | nindent 4 }}
+  name: {{ include "openslice.fullname" . }}-cridge
+spec:
+  replicas: {{ .Values.replicaCount }}
+  selector:
+    matchLabels:
+      app: {{ include "openslice.fullname" . }}
+      org.etsi.osl.service: cridge
+      {{- include "openslice.selectorLabels" . | nindent 6 }}
+  template:
+    metadata:
+      labels:
+        app: {{ include "openslice.fullname" . }}
+        org.etsi.osl.service: cridge
+        {{- include "openslice.selectorLabels" . | nindent 8 }}
+    spec:
+      containers:
+        - image: "{{ .Values.image.cridge.repository }}:{{ .Values.image.cridge.tag | default .Chart.AppVersion }}"
+          imagePullPolicy: {{ .Values.image.cridge.pullPolicy | default "Always" }}
+          name: {{ include "openslice.fullname" . }}-cridge
+          env:
+            - name: SPRING_APPLICATION_JSON
+              value: >-
+                {
+                  "spring.activemq.brokerUrl": "{{ .Values.oscreds.activemq.brokerUrl }}",  
+                  "spring.activemq.user": "{{ .Values.oscreds.activemq.user }}", 
+                  "spring.activemq.password": "{{ .Values.oscreds.activemq.password }}",
+                  "logging.level.org.springframework" : "{{ .Values.spring.logLevel | default "INFO" }}",
+                  "logging.level.org.etsi.osl.cridge" : "{{ .Values.logLevel | default "INFO" }}" 
+                }
+          resources:
+            {{- toYaml .Values.resources | nindent 12 }}
+          securityContext:
+            {{- if .Values.securityContext.enabled }}
+            allowPrivilegeEscalation: {{ .Values.securityContext.allowPrivilegeEscalation }}
+            capabilities:
+              drop: {{ .Values.securityContext.capabilities.drop }}
+            seccompProfile:
+              type: {{ .Values.securityContext.seccompProfile.type }}
+            {{- end }}
+          volumeMounts:
+            - name: kubeconfig
+              readOnly: true
+              mountPath: /root/.kube
+      restartPolicy: Always
+      volumes:
+        - name: kubeconfig
+          secret:
+            secretName: {{ include "openslice.fullname" . }}-kubeconfig
diff --git a/helm/cridge/templates/secret.yaml b/helm/cridge/templates/secret.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..5d0e729ff52f96a3f218498446febbf07d0ac9d4
--- /dev/null
+++ b/helm/cridge/templates/secret.yaml
@@ -0,0 +1,28 @@
+{{- $kubeconfigBase64 := .Values.kubeconfig.base64 | default "" -}}
+{{- $kubeconfigFile := .Values.kubeconfig.raw | default (.Files.Get "files/org.etsi.osl.cridge/kubeconfig.yaml") -}}
+{{- $kubeconfig := "" -}}
+
+{{- if $kubeconfigBase64 }}
+  {{- $kubeconfig = $kubeconfigBase64 | b64dec }}
+{{- else if $kubeconfigFile }}
+  {{- $kubeconfig = $kubeconfigFile }}
+{{- end }}
+
+apiVersion: v1
+kind: Secret
+metadata:
+  namespace: {{ .Release.Namespace }}
+  labels:
+    app: {{ include "openslice.fullname" . }}
+    org.etsi.osl.service: cridge
+    chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
+    {{- include "openslice.labels" . | nindent 4 }}
+  name: {{ include "openslice.fullname" . }}-kubeconfig
+type: Opaque
+data:
+  config: |-
+    {{- if $kubeconfig }}
+    {{ $kubeconfig | b64enc | nindent 4 }}
+    {{- else }}
+    {{- required "A kubeconfig file is required." ($kubeconfig | b64enc) | nindent 4 }}
+    {{- end }}
diff --git a/helm/cridge/values.yaml b/helm/cridge/values.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..1d87a532db9f2dedef0881fd3a0de007c17f54fb
--- /dev/null
+++ b/helm/cridge/values.yaml
@@ -0,0 +1,32 @@
+# Default values for cridge.
+
+replicaCount: 1
+
+image:
+  cridge:
+    repository: labs.etsi.org:5050/osl/code/org.etsi.osl.cridge
+    pullPolicy: Always
+    # Overrides the image tag whose default is the chart appVersion.
+    tag: "develop"
+
+oscreds:
+  activemq:
+    brokerUrl: tcp://openslice-artemis:61616?jms.watchTopicAdvisories=false # Where the cridge should connect to
+    user: artemis
+    password: artemis
+
+logLevel: INFO
+spring:
+  loglevel: INFO
+
+securityContext:
+  enabled: true
+  allowPrivilegeEscalation: false
+  capabilities:
+    drop: ["ALL"]
+  seccompProfile:
+    type: RuntimeDefault
+
+kubeconfig:
+  base64: ""   # Provide base64-encoded kubeconfig here if available
+  raw: ""      # Provide raw kubeconfig here if available
diff --git a/pom.xml b/pom.xml
index 76e6d7e936603df3a077bf7b37d4e722307488c7..56b90c4d44fdfe6acb67c0a631de937ac5db8493 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,14 +5,20 @@
 	<parent>
 		<groupId>org.etsi.osl</groupId>
 		<artifactId>org.etsi.osl.main</artifactId>
-		<version>1.0.0</version>
+		<version>2024Q4</version>
 		<relativePath>../org.etsi.osl.main</relativePath>
 	</parent>
 
 
 	<artifactId>org.etsi.osl.cridge</artifactId>
 	<name>org.etsi.osl.cridge</name>
-	<url>https://osl.etsi.org</url>
+	<version>${org.etsi.osl.cridge.version}</version>
+	
+	<organization>
+		<name>OpenSlice by ETSI</name>
+		<url>https://osl.etsi.org</url>
+	</organization>
+
 
 
 
@@ -97,6 +103,12 @@
 			<artifactId>spring-boot-starter-actuator</artifactId>
 		</dependency>
 
+		<dependency>
+            <groupId>org.bouncycastle</groupId>
+            <artifactId>bcpkix-jdk15on</artifactId>
+            <version>1.70</version>
+        </dependency>
+
 
 
 		<!-- fabric8 -->
diff --git a/src/main/java/org/etsi/osl/cridge/CRRouteBuilder.java b/src/main/java/org/etsi/osl/cridge/CRRouteBuilder.java
index 78ec06a93467a1a3af0ca0f050b753d36b043056..83237090c17a55f30ffd5864ea6db9c126dbabbd 100644
--- a/src/main/java/org/etsi/osl/cridge/CRRouteBuilder.java
+++ b/src/main/java/org/etsi/osl/cridge/CRRouteBuilder.java
@@ -57,8 +57,8 @@ public class CRRouteBuilder  extends RouteBuilder{
         .bean( kubernetesClientResource, "patchCR(${headers}, ${body})")
         .convertBodyTo( String.class );
         
-        // every  3600000 ms (60 minutes)
-        from( "timer://processUpdateResources?period=3600000" )
+        // every  120000 ms (2 minutes)
+        from( "timer://processUpdateResources?period=120000" )
         .log(LoggingLevel.INFO, log, " process nameSpacesTobeDeleted!")
         .to("log:DEBUG?showBody=true&showHeaders=true")
         .bean( CRRouteBuilder.class , "processNameSpacesTobeDeleted()");
@@ -72,8 +72,8 @@ public class CRRouteBuilder  extends RouteBuilder{
 	     Date currentTime = new Date(); //get current time
 	     long diffInMillies = Math.abs(currentTime .getTime() - datetime.getTime());
 	     
-	     long diff = TimeUnit.HOURS.convert(diffInMillies, TimeUnit.MILLISECONDS);
-	     if (diff<=2) { //after 2 hours this namespace will be deleted
+	     long diff = TimeUnit.MINUTES.convert(diffInMillies, TimeUnit.MILLISECONDS);
+	     if (diff<=2) { //after 2 minutes this namespace will be deleted
 	       return;
 	     }
 	     
diff --git a/src/main/java/org/etsi/osl/cridge/CatalogClient.java b/src/main/java/org/etsi/osl/cridge/CatalogClient.java
index 0527c112490fd42faf3432af76c9d13e867c2124..9500084021bc1ca52378fe60aef6a77c60f8ce22 100644
--- a/src/main/java/org/etsi/osl/cridge/CatalogClient.java
+++ b/src/main/java/org/etsi/osl/cridge/CatalogClient.java
@@ -36,8 +36,8 @@ public class CatalogClient  extends RouteBuilder{
 	@Value("${CATALOG_GET_RESOURCESPEC_BY_ID}")
 	private String CATALOG_GET_RESOURCESPEC_BY_ID = "";
 
-	@Value("${CATALOG_GET_RESOURCESPEC_BY_ΝAME_CATEGORY}")
-	private String CATALOG_GET_RESOURCESPEC_BY_ΝAME_CATEGORY = "";
+	@Value("${CATALOG_GET_RESOURCESPEC_BY_NAME_CATEGORY}")
+	private String CATALOG_GET_RESOURCESPEC_BY_NAME_CATEGORY = "";
 
 
 	@Value("${CATALOG_UPDADD_RESOURCESPEC}")
@@ -87,7 +87,7 @@ public class CatalogClient  extends RouteBuilder{
 			map.put( "acategory", aCategory);
 			map.put( "aversion", aVersion);
 			Object response = 
-					template.requestBodyAndHeaders( CATALOG_GET_RESOURCESPEC_BY_ΝAME_CATEGORY, null, map);
+					template.requestBodyAndHeaders( CATALOG_GET_RESOURCESPEC_BY_NAME_CATEGORY, null, map);
 
 			if ( !(response instanceof String)) {
 				logger.error("Resource Specification object is wrong.");
diff --git a/src/main/java/org/etsi/osl/cridge/KubernetesClientResource.java b/src/main/java/org/etsi/osl/cridge/KubernetesClientResource.java
index 088cd982fdfd3af871c23c519db39fcd9824ace2..4546d74a4d2dff2708f3f5c3c8c9d193bb9e4631 100644
--- a/src/main/java/org/etsi/osl/cridge/KubernetesClientResource.java
+++ b/src/main/java/org/etsi/osl/cridge/KubernetesClientResource.java
@@ -51,13 +51,13 @@ public class KubernetesClientResource {
   @Autowired
   CatalogClient catalogClient;
 
+
   private KubernetesContextDefinition kubernetesContextDefinition = null;
 
   private ResourceSpecification kubernetesCRDV1ResourceSpec = null;
 
   private ResourceSpecification kubernetesCRV1ResourceSpec = null;
   
-  private ResourceSpecification kubernetesSecretResourceSpec = null;
   
 
   /**
@@ -66,7 +66,7 @@ public class KubernetesClientResource {
    */
   private ConcurrentHashMap<String, Date> nameSpacesTobeDeleted = new ConcurrentHashMap<>();
 
-  private Map<String, Object> watchersForNamespaces = new HashMap<>();
+  private Map<String, NamespaceWatcher> watchersForNamespaces = new HashMap<>();
 
   
 
@@ -108,10 +108,7 @@ public class KubernetesClientResource {
           KubernetesCRV1.OSL_KUBCRV1_RSPEC_CATEGORY,
           KubernetesCRV1.OSL_KUBCRV1_RSPEC_VERSION);
 
-      kubernetesSecretResourceSpec  = catalogClient.retrieveResourceSpecByNameCategoryVersion(
-          KubernetesSecret.OSL_KUBSECRET_RSPEC_NAME, 
-          KubernetesSecret.OSL_KUBSECRET_RSPEC_CATEGORY,
-          KubernetesSecret.OSL_KUBSECRET_RSPEC_VERSION);
+
 
     }
     return kubernetesContextDefinition;
@@ -341,63 +338,8 @@ public class KubernetesClientResource {
   }
   
   
-  KubernetesSecret KubernetesSecret2OpensliceResource(Secret secret) {
-
-    
-    String baseCRD = String.format( "%s@%s@%s@%s",
-        secret.getKind(),
-        secret.getApiVersion(),
-        kubernetesClient.getConfiguration().getCurrentContext().getContext().getCluster(),
-        kubernetesClient.getMasterUrl().toExternalForm());
-
-    KubernetesSecret kcrv = KubernetesSecret.builder()
-        .osl_KUBCRD_RSPEC_UUID( kubernetesSecretResourceSpec.getUuid() )
-        .name( secret.getMetadata().getName()  
-            + "@" 
-            + secret.getMetadata().getNamespace()
-            + "@" 
-            +  kubernetesClient.getConfiguration().getCurrentContext().getContext().getCluster()
-            + "@" + 
-            kubernetesClient.getMasterUrl().toExternalForm()  )
-        .version( secret.getApiVersion() )
-        .currentContextCluster( kubernetesClient.getConfiguration().getCurrentContext().getContext().getCluster() )
-        .clusterMasterURL( kubernetesClient.getMasterUrl().toString()  )
-        .fullResourceName( "" )
-        .namespace( Serialization.asJson( secret.getMetadata().getNamespace()) )
-        .kind( secret.getKind() )
-        .apiGroup( secret.getPlural() )
-        .uID( secret.getMetadata().getUid() )
-        .metadata(Serialization.asJson( secret.getMetadata())  ) //.metadata( gkr.getMetadata().toString() )        
-        .description( 
-            String.format( "A secret in namespace %s on %s", secret.getMetadata().getNamespace(),  baseCRD ))
-        .build();
 
 
-    secret.getMetadata().getLabels().forEach((pk, pv) -> {
-      logger.debug("\t label: {} {} ", pk, pv);
-      kcrv.getProperties().put( pk  , pv);
-
-    });
-    
-
-    if (secret.getData()  != null)
-      secret.getData().forEach((kPropName, vProVal) -> {
-        logger.debug("propName={} propValue={} ", kPropName, vProVal );        
-        kcrv.getData().put(kPropName, vProVal);
-      });
-    if (secret.getStringData()  != null)
-      secret.getStringData().forEach((kPropName, vProVal) -> {
-        logger.debug("propName={} propValue={} ", kPropName, vProVal );        
-        kcrv.getProperties().put(kPropName, vProVal);
-      });
-    
-    kcrv.setDataObj( Serialization.asYaml( secret.getData() )  );
-    kcrv.setYaml( Serialization.asYaml( secret ) );
-    kcrv.setJson( Serialization.asJson( secret ) );
-
-    return kcrv;
-  }
-
   
 
   public String deployCR(Map<String, Object> headers, String crspec) {
@@ -475,7 +417,9 @@ public class KubernetesClientResource {
        */        
 
       if ( this.watchersForNamespaces.get(nameSpacename) == null ) {
-        SharedIndexInformer<Secret> result = createWatchersFornamespace( nameSpacename, headers );       
+        
+        //SharedIndexInformer<Secret> result = createWatchersFornamespace( nameSpacename, headers );
+        NamespaceWatcher result = NamespaceWatcher.getNew( kubernetesClient, catalogClient, nameSpacename, headers);
         this.watchersForNamespaces.put(nameSpacename, result);
       }
       
@@ -498,87 +442,6 @@ public class KubernetesClientResource {
 
   }
   
-  /**
-   * if the equivalent namespace for the service order is successfully created the create
-   * related wathcers  for secrets, services, configmaps, pods, etc
-   *     1) we need to create domainmodels for these
-   *     2) we add them as support resources to our initial resource
-   * @param nameSpacename
-   * @param headers 
-   * @return 
-   */
-  private SharedIndexInformer<Secret> createWatchersFornamespace(String nameSpacename, Map<String, Object> headers) {
-    //watcher for secrets
-      
-      SharedIndexInformer<Secret> shixInformer = 
-          this.getKubernetesClient()
-          .secrets().inNamespace(nameSpacename).inform(new ResourceEventHandler<Secret>() {
-
-            @Override
-            public void onAdd(Secret obj) {
-            logger.debug("Added Namespace watcher Resource Kind:{} Name:{} UID:{} Namespace:{}", 
-                obj.getKind(), 
-                obj.getMetadata().getName(),
-                obj.getMetadata().getUid(),
-                obj.getMetadata().getNamespace());
-            
-            headers.forEach(((hname, hval) ->{
-              if (hval instanceof String s) {
-                if ( hname.contains("org.etsi.osl")) {
-                  logger.debug("Header: {} = {} ", hname, s );      
-                  if ( obj.getMetadata() == null ) {
-                    obj.setMetadata( new ObjectMeta());
-                    obj.getMetadata().setLabels( new HashMap<String, String>());
-                  }
-                  obj.getMetadata().getLabels().put(hname, s);
-                }
-              }
-            }));
-            
-            updateKubernetesSecretResourceInOSLCatalog( obj );     
-            
-              
-            }
-
-            @Override
-            public void onUpdate(Secret oldObj, Secret newObj) {
-              logger.debug("onUpdate Namespace watcher Resource Kind:{} Name:{} UID:{} Namespace:{}", 
-                  newObj.getKind(), 
-                  newObj.getMetadata().getName(),
-                  newObj.getMetadata().getUid(),
-                  newObj.getMetadata().getNamespace());
-              updateKubernetesSecretResourceInOSLCatalog( newObj );    
-              
-            }
-
-            @Override
-            public void onDelete(Secret obj, boolean deletedFinalStateUnknown) {
-              logger.debug("onDelete Namespace watcher Resource Kind:{} Name:{} UID:{} Namespace:{}", 
-                  obj.getKind(), 
-                  obj.getMetadata().getName(),
-                  obj.getMetadata().getUid(),
-                  obj.getMetadata().getNamespace());
-              updateKubernetesSecretResourceInOSLCatalog( obj );    
-              
-            }
-
-        
-      }, 30 * 1000L); // resync period (set 0 for no resync);
-    
-      shixInformer.start();
-      
-      return shixInformer;
-    
-  }
-
-  private void updateKubernetesSecretResourceInOSLCatalog(Secret resource) {
-    ResourceCreate rs = this
-        .KubernetesSecret2OpensliceResource( resource )
-        .toResourceCreate();
-
-    catalogClient.createOrUpdateResourceByNameCategoryVersion( rs );  
-    
-  }
   
   
 
@@ -618,7 +481,13 @@ public class KubernetesClientResource {
       
       
       this.nameSpacesTobeDeleted.put(nameSpacename, new Date() );
+      NamespaceWatcher watchersForNamespace = this.watchersForNamespaces.get(nameSpacename);
+      if ( watchersForNamespace!= null) {
+        watchersForNamespace.disableNamespace( nameSpacename );
+      }
+      
       this.watchersForNamespaces.remove(nameSpacename);
+
       
     }catch (Exception e) {
       e.printStackTrace();
@@ -656,8 +525,19 @@ public class KubernetesClientResource {
           }
         }
       }));
-      gkr.getMetadata().setNamespace( (String) headers.get("org.etsi.osl.namespace") ); //set default namespace the service Order ID if a namespace is not there
-      gkr.getMetadata().setName( (String) headers.get("org.etsi.osl.prefixName") ) ;
+
+      //we must change and assign a name to the resource
+      if ( headers.get("org.etsi.osl.prefixId") !=null ) {
+        gkr.getMetadata().setName( (String) headers.get("org.etsi.osl.prefixName") ) ;
+      }else {
+        //it must start with an alpha character
+        gkr.getMetadata().setName( "cr" + ((String) headers.get("org.etsi.osl.resourceId")).substring(0, 8) ) ; 
+      }
+      
+      
+      if (  gkr.getMetadata().getNamespace() == null ||  gkr.getMetadata().getNamespace().equals("") ) {
+        gkr.getMetadata().setNamespace( (String) headers.get("org.etsi.osl.serviceOrderId") ); //set default namespace the service Order ID if a namespace is not there
+      }
       
             
       logger.debug("{}", gkr.toString() );
diff --git a/src/main/java/org/etsi/osl/cridge/NamespaceWatcher.java b/src/main/java/org/etsi/osl/cridge/NamespaceWatcher.java
new file mode 100644
index 0000000000000000000000000000000000000000..1e1ea08a88eb30f3d6704479fb774adfaa44cc4b
--- /dev/null
+++ b/src/main/java/org/etsi/osl/cridge/NamespaceWatcher.java
@@ -0,0 +1,553 @@
+package org.etsi.osl.cridge;
+
+import java.io.StringReader;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import org.etsi.osl.domain.model.kubernetes.KubernetesConfigMap;
+import org.etsi.osl.domain.model.kubernetes.KubernetesSecret;
+import org.etsi.osl.domain.model.kubernetes.KubernetesService;
+import org.etsi.osl.tmf.rcm634.model.ResourceSpecification;
+import org.etsi.osl.tmf.ri639.model.ResourceCreate;
+import org.etsi.osl.tmf.ri639.model.ResourceStatusType;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.yaml.snakeyaml.Yaml;
+import io.fabric8.kubernetes.api.model.ConfigMap;
+import io.fabric8.kubernetes.api.model.ObjectMeta;
+import io.fabric8.kubernetes.api.model.Secret;
+import io.fabric8.kubernetes.api.model.Service;
+import io.fabric8.kubernetes.client.KubernetesClient;
+import io.fabric8.kubernetes.client.informers.ResourceEventHandler;
+import io.fabric8.kubernetes.client.informers.SharedIndexInformer;
+import io.fabric8.kubernetes.client.utils.Serialization;
+
+public class NamespaceWatcher {
+  
+
+  private static final Logger logger = LoggerFactory.getLogger( "org.etsi.osl.cridge" );
+  
+  private KubernetesClient kubernetesClient;
+
+  private CatalogClient catalogClient; 
+  
+  private String nameSpacename;
+  
+  private Map<String, Object> headers;
+
+  private ResourceSpecification kubernetesSecretResourceSpec = null;
+
+  private ResourceSpecification kubernetesServiceResourceSpec = null;
+
+  private ResourceSpecification kubernetesConfigMapResourceSpec = null;
+  
+  List< SharedIndexInformer<?>> informers = new ArrayList<>();
+  
+  
+  public NamespaceWatcher(KubernetesClient kubernetesClient, CatalogClient catalogClient, String anameSpacename, Map<String, Object> aheaders) {
+    super();
+    this.kubernetesClient = kubernetesClient;
+    this.catalogClient = catalogClient;
+    this.nameSpacename = anameSpacename;
+    this.headers = aheaders;
+    
+    kubernetesSecretResourceSpec  = catalogClient.retrieveResourceSpecByNameCategoryVersion(
+        KubernetesSecret.OSL_KUBSECRET_RSPEC_NAME, 
+        KubernetesSecret.OSL_KUBSECRET_RSPEC_CATEGORY,
+        KubernetesSecret.OSL_KUBSECRET_RSPEC_VERSION);
+    
+    kubernetesServiceResourceSpec  = catalogClient.retrieveResourceSpecByNameCategoryVersion(
+        KubernetesService.OSL_KUBSERVICE_RSPEC_NAME, 
+        KubernetesService.OSL_KUBSERVICE_RSPEC_CATEGORY,
+        KubernetesService.OSL_KUBSERVICE_RSPEC_VERSION);
+    
+
+    kubernetesConfigMapResourceSpec  = catalogClient.retrieveResourceSpecByNameCategoryVersion(
+        KubernetesConfigMap.OSL_KUBCMAP_RSPEC_NAME, 
+        KubernetesConfigMap.OSL_KUBCMAP_RSPEC_CATEGORY,
+        KubernetesConfigMap.OSL_KUBCMAP_RSPEC_VERSION);
+  }
+  
+  public static NamespaceWatcher getNew(KubernetesClient kubernetesClient2, CatalogClient catalogClient2, String anameSpacename, Map<String, Object> aheaders) {
+    
+    NamespaceWatcher aNamespaceWatchers = new NamespaceWatcher(kubernetesClient2, catalogClient2, anameSpacename, aheaders);
+    
+    SharedIndexInformer<Secret> rSecret = aNamespaceWatchers.createSecretWatchersFornamespace(anameSpacename, aheaders);
+    aNamespaceWatchers.informers.add( rSecret );
+
+    SharedIndexInformer<Service> rService = aNamespaceWatchers.createServiceWatcherssForNamespace(anameSpacename, aheaders);
+    aNamespaceWatchers.informers.add( rService );
+
+    SharedIndexInformer<ConfigMap> rCMap = aNamespaceWatchers.createConfigMapWatcherssForNamespace(anameSpacename, aheaders);
+    aNamespaceWatchers.informers.add( rService );
+    
+    
+    return aNamespaceWatchers;
+    
+  }
+
+  
+
+  
+  
+  /**
+   * if the equivalent namespace for the service order is successfully created the create
+   * related wathcers  for secrets, services, configmaps, pods, etc
+   *     1) we need to create domainmodels for these
+   *     2) we add them as support resources to our initial resource
+   * @param nameSpacename
+   * @param headers 
+   * @return 
+   */
+  
+  
+  private SharedIndexInformer<Secret> createSecretWatchersFornamespace(String nameSpacename, Map<String, Object> headers) {
+    //watcher for secrets
+      SharedIndexInformer<Secret> shixInformer = this.kubernetesClient.secrets().inNamespace(nameSpacename).inform(new ResourceEventHandler<Secret>() {
+
+            @Override
+            public void onAdd(Secret obj) {
+            logger.debug("Added Namespace watcher Resource Kind:{} Name:{} UID:{} Namespace:{}", 
+                obj.getKind(), 
+                obj.getMetadata().getName(),
+                obj.getMetadata().getUid(),
+                obj.getMetadata().getNamespace());
+            
+            headers.forEach(((hname, hval) ->{
+              if (hval instanceof String s) {
+                if ( hname.contains("org.etsi.osl")) {
+                  logger.debug("Header: {} = {} ", hname, s );      
+                  if ( obj.getMetadata() == null ) {
+                    obj.setMetadata( new ObjectMeta());
+                    obj.getMetadata().setLabels( new HashMap<String, String>());
+                  }
+                  obj.getMetadata().getLabels().put(hname, s);
+                }
+              }
+            }));
+            
+            updateKubernetesSecretResourceInOSLCatalog( obj, false );     
+            
+              
+            }
+
+            @Override
+            public void onUpdate(Secret oldObj, Secret newObj) {
+              logger.debug("onUpdate Namespace watcher Resource Kind:{} Name:{} UID:{} Namespace:{}", 
+                  newObj.getKind(), 
+                  newObj.getMetadata().getName(),
+                  newObj.getMetadata().getUid(),
+                  newObj.getMetadata().getNamespace());
+              updateKubernetesSecretResourceInOSLCatalog( newObj, false );    
+              
+            }
+
+            @Override
+            public void onDelete(Secret obj, boolean deletedFinalStateUnknown) {
+              logger.debug("onDelete Namespace watcher Resource Kind:{} Name:{} UID:{} Namespace:{}", 
+                  obj.getKind(), 
+                  obj.getMetadata().getName(),
+                  obj.getMetadata().getUid(),
+                  obj.getMetadata().getNamespace());
+              updateKubernetesSecretResourceInOSLCatalog( obj, true );    
+              
+            }
+
+        
+      }, 30 * 1000L); // resync period (set 0 for no resync);
+    
+      shixInformer.start();
+      
+      return shixInformer;
+    
+  }
+  
+  
+
+
+  private void updateKubernetesSecretResourceInOSLCatalog(Secret resource, boolean toDelete) {
+//    if (this.informers.size() == 0) {
+//      logger.debug("Informers are 0. Will exit updateKubernetesSecretResourceInOSLCatalog");
+//      return;
+//    }
+    ResourceCreate rs = this.KubernetesSecret2OpensliceResource( resource ).toResourceCreate();
+    if (toDelete) {
+      rs.setResourceStatus(ResourceStatusType.SUSPENDED);
+    }
+    catalogClient.createOrUpdateResourceByNameCategoryVersion( rs );  
+    
+  }
+  
+  
+  public KubernetesSecret KubernetesSecret2OpensliceResource(Secret secret) {
+
+    
+    String baseCRD = String.format( "%s@%s@%s@%s",
+        secret.getKind(),
+        secret.getApiVersion(),
+        kubernetesClient.getConfiguration().getCurrentContext().getContext().getCluster(),
+        kubernetesClient.getMasterUrl().toExternalForm());
+
+    KubernetesSecret kcrv = KubernetesSecret.builder().osl_KUBCRD_RSPEC_UUID( kubernetesSecretResourceSpec.getUuid() )
+        .name( secret.getMetadata().getName()  
+            + "@" 
+            + secret.getMetadata().getNamespace()
+            + "@" 
+            +  kubernetesClient.getConfiguration().getCurrentContext().getContext().getCluster()
+            + "@" + 
+            kubernetesClient.getMasterUrl().toExternalForm()  )
+        .version( secret.getApiVersion() )
+        .currentContextCluster( kubernetesClient.getConfiguration().getCurrentContext().getContext().getCluster() )
+        .clusterMasterURL( kubernetesClient.getMasterUrl().toString()  )
+        .fullResourceName( "" )
+        .namespace( Serialization.asJson( secret.getMetadata().getNamespace()) )
+        .kind( secret.getKind() )
+        .apiGroup( secret.getPlural() )
+        .uID( secret.getMetadata().getUid() )
+        .metadata(Serialization.asJson( secret.getMetadata())  ) //.metadata( gkr.getMetadata().toString() )        
+        .description( 
+            String.format( "A secret in namespace %s on %s", secret.getMetadata().getNamespace(),  baseCRD ))
+        .build();
+
+
+    secret.getMetadata().getLabels().forEach((pk, pv) -> {
+      logger.debug("\t label: {} {} ", pk, pv);
+      kcrv.getProperties().put( pk  , pv);
+
+    });
+    
+
+    if (secret.getData()  != null)
+      secret.getData().forEach((kPropName, vProVal) -> {
+        logger.debug("propName={} propValue={} ", kPropName, vProVal );        
+        kcrv.getData().put(kPropName, vProVal);
+      });
+    if (secret.getStringData()  != null)
+      secret.getStringData().forEach((kPropName, vProVal) -> {
+        logger.debug("propName={} propValue={} ", kPropName, vProVal );        
+        kcrv.getProperties().put(kPropName, vProVal);
+      });
+    
+    kcrv.setDataObj( Serialization.asYaml( secret.getData() )  );
+    //kcrv.setYaml( Serialization.asYaml( secret ) );
+    kcrv.setJson( Serialization.asJson( secret ) );
+
+    return kcrv;
+  }
+  
+  
+  
+  
+  
+  /*******************
+   * 
+   * Services Watcher
+   * 
+   *******************/
+  private SharedIndexInformer<Service> createServiceWatcherssForNamespace(String nameSpacename, Map<String, Object> headers) {
+    //watcher for secrets
+      SharedIndexInformer<Service> shixInformer = this.kubernetesClient.services().inNamespace(nameSpacename).inform(new ResourceEventHandler<Service>() {
+
+            @Override
+            public void onAdd(Service obj) {
+            logger.debug("Added Namespace watcher Resource Kind:{} Name:{} UID:{} Namespace:{}", 
+                obj.getKind(), 
+                obj.getMetadata().getName(),
+                obj.getMetadata().getUid(),
+                obj.getMetadata().getNamespace());
+            
+            headers.forEach(((hname, hval) ->{
+              if (hval instanceof String s) {
+                if ( hname.contains("org.etsi.osl")) {
+                  logger.debug("Header: {} = {} ", hname, s );      
+                  if ( obj.getMetadata() == null ) {
+                    obj.setMetadata( new ObjectMeta());
+                    obj.getMetadata().setLabels( new HashMap<String, String>());
+                  }
+                  obj.getMetadata().getLabels().put(hname, s);
+                }
+              }
+            }));
+            
+            updateKubernetesServiceResourceInOSLCatalog( obj, false );     
+            
+              
+            }
+
+            @Override
+            public void onUpdate(Service oldObj, Service newObj) {
+              logger.debug("onUpdate Namespace watcher Resource Kind:{} Name:{} UID:{} Namespace:{}", 
+                  newObj.getKind(), 
+                  newObj.getMetadata().getName(),
+                  newObj.getMetadata().getUid(),
+                  newObj.getMetadata().getNamespace());
+              updateKubernetesServiceResourceInOSLCatalog( newObj, false );    
+              
+            }
+
+            @Override
+            public void onDelete(Service obj, boolean deletedFinalStateUnknown) {
+              logger.debug("onDelete Namespace watcher Resource Kind:{} Name:{} UID:{} Namespace:{}", 
+                  obj.getKind(), 
+                  obj.getMetadata().getName(),
+                  obj.getMetadata().getUid(),
+                  obj.getMetadata().getNamespace());
+              updateKubernetesServiceResourceInOSLCatalog( obj, true );    
+              
+            }
+
+        
+      }, 30 * 1000L); // resync period (set 0 for no resync);
+    
+      shixInformer.start();
+      
+      return shixInformer;
+    
+  }
+
+
+
+  private void updateKubernetesServiceResourceInOSLCatalog(Service resource, boolean toDelete) {
+//    if (this.informers.size() == 0) {
+//      logger.debug("Informers are 0. Will exit updateKubernetesServiceResourceInOSLCatalog");
+//      return;
+//    }
+    ResourceCreate rs = this.KubernetesService2OpensliceResource( resource ).toResourceCreate();
+    if (toDelete) {
+      rs.setResourceStatus(ResourceStatusType.SUSPENDED);
+    }
+    catalogClient.createOrUpdateResourceByNameCategoryVersion( rs );  
+    
+  }
+
+  
+  KubernetesService KubernetesService2OpensliceResource(Service serv) {
+    
+    String baseCRD = String.format( "%s@%s@%s@%s",
+        serv.getKind(),
+        serv.getApiVersion(),
+        kubernetesClient.getConfiguration().getCurrentContext().getContext().getCluster(),
+        kubernetesClient.getMasterUrl().toExternalForm());
+
+    KubernetesService kcrv = KubernetesService.builder().osl_KUBCRD_RSPEC_UUID( kubernetesServiceResourceSpec.getUuid() )
+        .name( serv.getMetadata().getName()  
+            + "@" 
+            + serv.getMetadata().getNamespace()
+            + "@" 
+            +  kubernetesClient.getConfiguration().getCurrentContext().getContext().getCluster()
+            + "@" + 
+            kubernetesClient.getMasterUrl().toExternalForm()  )
+        .version( serv.getApiVersion() )
+        .currentContextCluster( kubernetesClient.getConfiguration().getCurrentContext().getContext().getCluster() )
+        .clusterMasterURL( kubernetesClient.getMasterUrl().toString()  )
+        .fullResourceName( "" )
+        .namespace( Serialization.asJson( serv.getMetadata().getNamespace()) )
+        .kind( serv.getKind() )
+        .apiGroup( serv.getPlural() )
+        .uID( serv.getMetadata().getUid() )
+        .metadata(Serialization.asJson( serv.getMetadata())  ) //.metadata( gkr.getMetadata().toString() )        
+        .description( 
+            String.format( "A service in namespace %s on %s", serv.getMetadata().getNamespace(),  baseCRD ))
+        .build();
+
+
+      serv.getMetadata().getLabels().forEach((pk, pv) -> {
+        logger.debug("\t label: {} {} ", pk, pv);
+        kcrv.getProperties().put( pk  , pv);
+
+    });
+    
+
+    kcrv.setSpecObj( Serialization.asYaml( serv.getSpec() )  );
+    kcrv.setStatusObj( Serialization.asYaml( serv.getStatus() )  );
+    //kcrv.setYaml( Serialization.asYaml( serv ) );
+    kcrv.setJson( Serialization.asJson( serv ) );
+    
+    // Convert YAML to Map<String, String>
+    Map<String, String> resultMap = yamlToMap(  kcrv.getSpecObj() );
+    kcrv.setSpec(resultMap);
+    
+    resultMap = yamlToMap(  kcrv.getStatusObj() );
+    kcrv.setStatus(resultMap);    
+
+    return kcrv;
+  }
+
+
+  public static Map<String, String> yamlToMap(String yamlString) {
+    Yaml yaml = new Yaml();
+    Map<String, Object> yamlMap = yaml.load(new StringReader(yamlString));
+
+    // Create a result map that will contain flattened key-value pairs
+    Map<String, String> resultMap = new LinkedHashMap<>();
+    
+    // Call the recursive method to flatten the map
+    flattenMap("", yamlMap, resultMap);
+
+    return resultMap;
+  }
+  
+  // Recursive method to flatten the YAML structure
+  private static void flattenMap(String prefix, Map<String, Object> sourceMap, Map<String, String> resultMap) {
+      for (Map.Entry<String, Object> entry : sourceMap.entrySet()) {
+          String key = prefix.isEmpty() ? entry.getKey() : prefix + "." + entry.getKey();
+          Object value = entry.getValue();
+
+          if (value instanceof Map) {
+              // Recursively flatten nested maps
+              flattenMap(key, (Map<String, Object>) value, resultMap);
+          } else {
+              // Convert value to String and put it in the resultMap
+              resultMap.put(key, value.toString());
+          }
+      }
+  }
+
+  
+
+  /*******************
+   * 
+   * ConfigMap Watcher
+   * 
+   *******************/
+  private SharedIndexInformer<ConfigMap> createConfigMapWatcherssForNamespace(String nameSpacename, Map<String, Object> headers) {
+    //watcher for secrets
+      SharedIndexInformer<ConfigMap> shixInformer = this.kubernetesClient.configMaps().inNamespace(nameSpacename).inform(new ResourceEventHandler<ConfigMap>() {
+
+            @Override
+            public void onAdd(ConfigMap obj) {
+            logger.debug("Added Namespace watcher Resource Kind:{} Name:{} UID:{} Namespace:{}", 
+                obj.getKind(), 
+                obj.getMetadata().getName(),
+                obj.getMetadata().getUid(),
+                obj.getMetadata().getNamespace());
+            
+            headers.forEach(((hname, hval) ->{
+              if (hval instanceof String s) {
+                if ( hname.contains("org.etsi.osl")) {
+                  logger.debug("Header: {} = {} ", hname, s );      
+                  if ( obj.getMetadata() == null ) {
+                    obj.setMetadata( new ObjectMeta());
+                    obj.getMetadata().setLabels( new HashMap<String, String>());
+                  }
+                  obj.getMetadata().getLabels().put(hname, s);
+                }
+              }
+            }));
+            
+            updateKubernetesConfigMapResourceInOSLCatalog( obj, false );     
+            
+              
+            }
+
+            @Override
+            public void onUpdate(ConfigMap oldObj, ConfigMap newObj) {
+              logger.debug("onUpdate Namespace watcher Resource Kind:{} Name:{} UID:{} Namespace:{}", 
+                  newObj.getKind(), 
+                  newObj.getMetadata().getName(),
+                  newObj.getMetadata().getUid(),
+                  newObj.getMetadata().getNamespace());
+              updateKubernetesConfigMapResourceInOSLCatalog( newObj, false );    
+              
+            }
+
+            @Override
+            public void onDelete(ConfigMap obj, boolean deletedFinalStateUnknown) {
+              logger.debug("onDelete Namespace watcher Resource Kind:{} Name:{} UID:{} Namespace:{}", 
+                  obj.getKind(), 
+                  obj.getMetadata().getName(),
+                  obj.getMetadata().getUid(),
+                  obj.getMetadata().getNamespace());
+              updateKubernetesConfigMapResourceInOSLCatalog( obj, true );    
+              
+            }
+
+        
+      }, 30 * 1000L); // resync period (set 0 for no resync);
+    
+      shixInformer.start();
+      
+      return shixInformer;
+    
+  }
+  
+  private void updateKubernetesConfigMapResourceInOSLCatalog(ConfigMap resource, boolean toDelete) {
+//    if (this.informers.size() == 0) {
+//      logger.debug("Informers are 0. Will exit updateKubernetesConfigMapResourceInOSLCatalog");
+//      return;
+//    }
+    ResourceCreate rs = this.KubernetesConfigMap2OpensliceResource( resource ).toResourceCreate();
+    if (toDelete) {
+      rs.setResourceStatus(ResourceStatusType.SUSPENDED);
+    }
+    catalogClient.createOrUpdateResourceByNameCategoryVersion( rs );  
+    
+  }
+
+  KubernetesConfigMap KubernetesConfigMap2OpensliceResource(ConfigMap cmap) {
+
+    
+    String baseCRD = String.format( "%s@%s@%s@%s",
+        cmap.getKind(),
+        cmap.getApiVersion(),
+        kubernetesClient.getConfiguration().getCurrentContext().getContext().getCluster(),
+        kubernetesClient.getMasterUrl().toExternalForm());
+
+    KubernetesConfigMap kcrv = KubernetesConfigMap.builder().osl_KUBCRD_RSPEC_UUID( kubernetesConfigMapResourceSpec.getUuid() )
+        .name( cmap.getMetadata().getName()  
+            + "@" 
+            + cmap.getMetadata().getNamespace()
+            + "@" 
+            +  kubernetesClient.getConfiguration().getCurrentContext().getContext().getCluster()
+            + "@" + 
+            kubernetesClient.getMasterUrl().toExternalForm()  )
+        .version( cmap.getApiVersion() )
+        .currentContextCluster( kubernetesClient.getConfiguration().getCurrentContext().getContext().getCluster() )
+        .clusterMasterURL( kubernetesClient.getMasterUrl().toString()  )
+        .fullResourceName( "" )
+        .namespace( Serialization.asJson( cmap.getMetadata().getNamespace()) )
+        .kind( cmap.getKind() )
+        .apiGroup( cmap.getPlural() )
+        .uID( cmap.getMetadata().getUid() )
+        .metadata(Serialization.asJson( cmap.getMetadata())  ) //.metadata( gkr.getMetadata().toString() )        
+        .description( 
+            String.format( "A configMap in namespace %s on %s", cmap.getMetadata().getNamespace(),  baseCRD ))
+        .build();
+
+
+    cmap.getMetadata().getLabels().forEach((pk, pv) -> {
+      logger.debug("\t label: {} {} ", pk, pv);
+      kcrv.getProperties().put( pk  , pv);
+
+    });
+    
+
+    kcrv.setDataObj( Serialization.asYaml( cmap.getData() )  );
+    //kcrv.setYaml( Serialization.asYaml( cmap ) );
+    kcrv.setJson( Serialization.asJson( cmap ) );
+
+    // Convert YAML to Map<String, String>
+    Map<String, String> resultMap = yamlToMap(  kcrv.getDataObj() );
+    kcrv.setData(resultMap);
+    
+    return kcrv;
+  }
+
+
+  public void disableNamespace(String ns) {
+    this.kubernetesClient.configMaps().inNamespace(ns).delete();
+    this.kubernetesClient.secrets().inNamespace(ns).delete();
+    this.kubernetesClient.services().inNamespace(ns).delete();
+
+//    for (SharedIndexInformer<?> sharedIndexInformer : informers) {
+//      sharedIndexInformer.stop();
+//      sharedIndexInformer.close();
+//       
+//    }
+//    this.informers.clear();
+    
+  }
+
+}
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 3dcfe7f5d3f21f9643a3f64f6c353611194ceb19..ff80f2bb9193f539e9ae1d97f7a0053c7ac0417d 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -12,6 +12,7 @@ spring:
       max-connections: 100
     packages:
       trust-all: true
+  autoconfigure.exclude: org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
 
 server:
   port: 0
@@ -38,7 +39,7 @@ CATALOG_ADD_RESOURCESPEC: "jms:queue:CATALOG.ADD.RESOURCESPEC"
 CATALOG_UPD_RESOURCESPEC: "jms:queue:CATALOG.UPD.RESOURCESPEC"
 CATALOG_UPDADD_RESOURCESPEC: "jms:queue:CATALOG.UPDADD.RESOURCESPEC"
 CATALOG_GET_RESOURCESPEC_BY_ID: "jms:queue:CATALOG.GET.RESOURCESPEC_BY_ID"
-CATALOG_GET_RESOURCESPEC_BY_ΝAME_CATEGORY: "jms:queue:CATALOG.GET.RESOURCESPEC_BY_ΝAME_CATEGORY"
+CATALOG_GET_RESOURCESPEC_BY_NAME_CATEGORY: "jms:queue:CATALOG.GET.RESOURCESPEC_BY_NAME_CATEGORY"
 
 
 #CRD ACTIONS
diff --git a/src/test/java/org/etsi/osl/cridge/CridgeIntegrationTest.java b/src/test/java/org/etsi/osl/cridge/CridgeIntegrationTest.java
index 3ebb8aec06da6a8d761b1e158cbe040d0d2b8524..cffb9ae6a7fa630a84015d7710b05658ac1a44a6 100644
--- a/src/test/java/org/etsi/osl/cridge/CridgeIntegrationTest.java
+++ b/src/test/java/org/etsi/osl/cridge/CridgeIntegrationTest.java
@@ -41,11 +41,13 @@ import io.fabric8.kubernetes.api.model.NamedContextBuilder;
 import io.fabric8.kubernetes.api.model.ObjectMetaBuilder;
 import io.fabric8.kubernetes.api.model.Secret;
 import io.fabric8.kubernetes.api.model.SecretBuilder;
+import io.fabric8.kubernetes.api.model.ServiceList;
 import io.fabric8.kubernetes.api.model.WatchEvent;
 import io.fabric8.kubernetes.api.model.WatchEventBuilder;
 import io.fabric8.kubernetes.api.model.apiextensions.v1.CustomResourceDefinition;
 import io.fabric8.kubernetes.api.model.apiextensions.v1.CustomResourceDefinitionList;
 import io.fabric8.kubernetes.api.model.apiextensions.v1.CustomResourceDefinitionListBuilder;
+import io.fabric8.kubernetes.api.model.apiextensions.v1.ConversionRequestFluent.V1beta1ServiceReferenceObjectsNested;
 import io.fabric8.kubernetes.client.Config;
 import io.fabric8.kubernetes.client.KubernetesClient;
 import io.fabric8.kubernetes.client.KubernetesClientBuilder;
@@ -66,7 +68,7 @@ import io.fabric8.kubernetes.client.utils.Serialization;
     "kubernetes.master = test_kube",
     "spring.activemq.brokerUrl = vm://embedded?broker.persistent=false,useShutdownHook=false",
     "CATALOG_GET_RESOURCESPEC_BY_ID = direct:get_rspec_byid",
-    "CATALOG_GET_RESOURCESPEC_BY_ΝAME_CATEGORY = direct:get_rspec_byNameCategory",
+    "CATALOG_GET_RESOURCESPEC_BY_NAME_CATEGORY = direct:get_rspec_byNameCategory",
     "CATALOG_UPDADD_RESOURCE = direct:updadd_resource",})
 
 
@@ -226,12 +228,61 @@ public class CridgeIntegrationTest {
     // server api expectations
     server.expect().get()
         .withPath("/api/v1/namespaces/orderid-xxx-xxx-xxx/secrets?resourceVersion=0")
-        .andReturn(HttpURLConnection.HTTP_OK, crdMyCalc).once();
-
+        .andReturn(HttpURLConnection.HTTP_OK, crdMyCalc).always();   
+    
     server.expect().get().withPath(
         "/api/v1/namespaces/orderid-xxx-xxx-xxx/secrets?allowWatchBookmarks=true&timeoutSeconds=600&watch=true")
-        .andReturn(HttpURLConnection.HTTP_OK, crdMyCalc).once();
+        .andReturn(HttpURLConnection.HTTP_OK, crdMyCalc).always();
 
+    server.expect().get().withPath(
+        "/api/v1/namespaces/orderid-xxx-xxx-xxx/services?allowWatchBookmarks=true&resourceVersion=12345&timeoutSeconds=600&watch=true")
+        .andReturn(HttpURLConnection.HTTP_OK,  "{\r\n"
+            + "      \"kind\": \"ServiceList\",\r\n"
+            + "      \"apiVersion\": \"v1\",\r\n"
+            + "      \"metadata\": {\r\n"
+            + "        \"resourceVersion\": \"12345\"\r\n"
+            + "      },\r\n"
+            + "      \"items\": []\r\n"
+            + "    }").always(); 
+    
+    // server api expectations
+    server.expect().get()
+        .withPath("/api/v1/namespaces/orderid-xxx-xxx-xxx/services?resourceVersion=0")
+        .andReturn(HttpURLConnection.HTTP_OK , "{\r\n"
+            + "      \"kind\": \"ServiceList\",\r\n"
+            + "      \"apiVersion\": \"v1\",\r\n"
+            + "      \"metadata\": {\r\n"
+            + "        \"resourceVersion\": \"12345\"\r\n"
+            + "      },\r\n"
+            + "      \"items\": []\r\n"
+            + "    }").always();
+    
+
+    
+    server.expect().get().withPath(
+        "/api/v1/namespaces/orderid-xxx-xxx-xxx/configmaps?allowWatchBookmarks=true&resourceVersion=12345&timeoutSeconds=600&watch=true")
+        .andReturn(HttpURLConnection.HTTP_OK,  "{\r\n"
+            + "      \"kind\": \"ConfigMapList\",\r\n"
+            + "      \"apiVersion\": \"v1\",\r\n"
+            + "      \"metadata\": {\r\n"
+            + "        \"resourceVersion\": \"12345\"\r\n"
+            + "      },\r\n"
+            + "      \"items\": []\r\n"
+            + "    }").always(); 
+    
+    // server api expectations
+    server.expect().get()
+        .withPath("/api/v1/namespaces/orderid-xxx-xxx-xxx/configmaps?resourceVersion=0")
+        .andReturn(HttpURLConnection.HTTP_OK , "{\r\n"
+            + "      \"kind\": \"ConfigMapList\",\r\n"
+            + "      \"apiVersion\": \"v1\",\r\n"
+            + "      \"metadata\": {\r\n"
+            + "        \"resourceVersion\": \"12345\"\r\n"
+            + "      },\r\n"
+            + "      \"items\": []\r\n"
+            + "    }").always();
+    
+ 
     server.expect().get()
         .withPath("/apis/stable.example.com/v1/namespaces/orderid-xxx-xxx-xxx/mycalculators")
         .andReturn(HttpURLConnection.HTTP_OK, crdMyCalc).once();
@@ -392,12 +443,10 @@ public class CridgeIntegrationTest {
     Secret secretCreated = routesPreparation.kubernetesClient.secrets().inNamespace("default")
         .resource(secret1).create();
 
+    
 
-    KubernetesSecret value =
-        kubernetesClientResource.KubernetesSecret2OpensliceResource(secretCreated);
-
-    assertEquals("Secret", value.getKind());
-    assertEquals("v1", value.getVersion());
+    assertEquals("Secret", secretCreated.getKind());
+    assertEquals("v1", secretCreated.getApiVersion() );
 
 
   }