diff --git a/src/main/java/org/etsi/osl/cridge/KubernetesClientResource.java b/src/main/java/org/etsi/osl/cridge/KubernetesClientResource.java
index dd77567f95e1fc872ef8e28b9cb364cb4bd586a9..d01fdd28e6101c4c48c8f4ec987a790721cbc628 100644
--- a/src/main/java/org/etsi/osl/cridge/KubernetesClientResource.java
+++ b/src/main/java/org/etsi/osl/cridge/KubernetesClientResource.java
@@ -444,13 +444,20 @@ public class KubernetesClientResource {
           }
         }
       }));
+      
+      //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 {
-        gkr.getMetadata().setName( "cr" + ((String) headers.get("org.etsi.osl.resourceId")).substring(0, 8) ) ;
+        //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
+      }
+      
       String nameSpacename = (String) headers.get("org.etsi.osl.namespace");
 
       try {
@@ -615,22 +622,70 @@ public class KubernetesClientResource {
     }catch (Exception e) {
       e.printStackTrace();
     }
-    
-
-    
       
     return "DONE";
 
   }
   
   public String patchCR(Map<String, Object> headers, String crspec) {
+    logger.debug("============ patchCR crspec =============");
 
-    logger.debug("============ PATCH crspec =============" );
-    logger.debug("{}", crspec );
-    logger.error("NOT IMPLEMENTED" );
+    logger.debug("Check if this CRIDGE instance is related to this kubernets cluster context");
+    if (!checkCRIDGEClusterContext(headers)) {
+      return "SEE OTHER";
+    }
 
-    return "DONE";
 
+
+    logger.debug("Patch the following CR:");
+    logger.debug("{}", crspec);
+    try (final KubernetesClient k8s = new KubernetesClientBuilder().build()) {
+
+      GenericKubernetesResource gkr =  Serialization.unmarshal( crspec );
+      headers.forEach(((hname, hval) ->{
+        if (hval instanceof String s) {
+          if ( hname.contains("org.etsi.osl")) {
+            logger.debug("Header: {} = {} ", hname, s );      
+            if ( gkr.getMetadata() == null ) {
+              gkr.setMetadata( new ObjectMeta());
+              gkr.getMetadata().setLabels( new HashMap<String, String>());
+            }
+            gkr.getMetadata().getLabels().put(hname, s);
+          }
+        }
+      }));
+      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") ) ;
+      
+            
+      logger.debug("{}", gkr.toString() );
+      
+      Resource<GenericKubernetesResource> dummyObject = k8s.resource( gkr );
+      dummyObject.patch();      
+    }catch (Exception e) {
+      e.printStackTrace();
+      return "FAIL " + e.getMessage();
+    }
+    return "OK";
+
+
+  }
+
+  private Boolean checkCRIDGEClusterContext( Map<String, Object> headers) {
+    if ( (headers.get("currentContextCluster") ==null) || 
+        (headers.get("clusterMasterURL") ==null) || 
+        ( ! headers.get("currentContextCluster").equals( kubernetesContextDefinition.getCurrentContextCluster() )) || 
+        ( ! headers.get("clusterMasterURL").equals( kubernetesContextDefinition.getMasterURL() ))) {
+
+      logger.debug("Will return SEE OTHER header.currentContextCluster={}, this.context= {} header.clusterMasterURLclusterMasterURL={}, this.context= {}", 
+          headers.get("currentContextCluster"),  
+          kubernetesContextDefinition.getCurrentContextCluster(), 
+          headers.get("clusterMasterURL"),  
+          kubernetesContextDefinition.getMasterURL() );
+      return false;      
+    }
+    
+    return true;
   }
 
 }