diff --git a/src/main/java/org/etsi/osl/osom/management/CROrchestrationService.java b/src/main/java/org/etsi/osl/osom/management/CROrchestrationService.java
index 83889fa43133f256c22a5684bf569ff2f3444323..08fc212cad95092f06ee8fb02233486195115174 100644
--- a/src/main/java/org/etsi/osl/osom/management/CROrchestrationService.java
+++ b/src/main/java/org/etsi/osl/osom/management/CROrchestrationService.java
@@ -115,6 +115,11 @@ public class CROrchestrationService implements JavaDelegate {
               sorder.getExpectedCompletionDate(), crspec);
         }
         
+
+        Characteristic servicecrspecLast = aService.getServiceCharacteristicByName("_CR_SPEC_LASTSEND");
+        servicecrspecLast.getValue().setValue( crspec );
+        su.addServiceCharacteristicItem(servicecrspecLast);
+        
         if ( response!=null && response.equals("OK")) {
           su.setState(ServiceStateType.RESERVED);
           Note successNoteItem = new Note();
diff --git a/src/main/java/org/etsi/osl/osom/serviceactions/CRPatchTask.java b/src/main/java/org/etsi/osl/osom/serviceactions/CRPatchTask.java
index 3d04a14a0e67b13d5e92eb2b61171578fc0819e8..554ccb6342804816915fd219d5702fe412ae0250 100644
--- a/src/main/java/org/etsi/osl/osom/serviceactions/CRPatchTask.java
+++ b/src/main/java/org/etsi/osl/osom/serviceactions/CRPatchTask.java
@@ -91,20 +91,44 @@ public class CRPatchTask implements JavaDelegate {
       String response = null;
       Characteristic servicecrspec = aService.getServiceCharacteristicByName("_CR_SPEC");
       String crspec = servicecrspec.getValue().getValue();
+      
+
+      Characteristic servicecrspecLast = aService.getServiceCharacteristicByName("_CR_SPEC_LASTSEND");
+      String crspecLast = servicecrspecLast.getValue().getValue();
+      
+      if (crspec.equals(crspecLast)) {
+        logger.debug("CRPatchTask: ignore this patch request. Seems they are the same as the last one send");
+        serviceOrderManager.deleteServiceActionQueueItem(item);
+        return;        
+      }
 
+        int retries = 0;
         response = createNewDeploymentUpdateRequest(aService, crspec);
+        while ( response.equals("SEE OTHER")) {
+          response = createNewDeploymentUpdateRequest(aService, crspec);
+          Thread.sleep(1000);
+          retries++;
+          if (retries>100) { //will support maximum 100 registered CRIDGE in queue
+            break;
+          }
+        }
+        
+        
         Note n = new Note();
         n.setAuthor(compname);
         n.setDate(OffsetDateTime.now(ZoneOffset.UTC).toString());
 
         if ( response!=null && response.equals("OK")) {
-
           n.setText("Service Action CRPatchTask successful . Action: " + item.getAction() + ". ");
         } else {
           n.setText("Service Action CRPatchTask failed . Action: " + item.getAction() + ". Response = " + response);
         }
 
         supd.addNoteItem(n);
+        
+        servicecrspecLast.getValue().setValue( crspec );
+        supd.addServiceCharacteristicItem(servicecrspecLast);
+        
         serviceOrderManager.deleteServiceActionQueueItem(item);
         serviceOrderManager.updateService(aService.getId(), supd, false);
         
diff --git a/src/main/java/org/etsi/osl/osom/serviceactions/CRTerminateTask.java b/src/main/java/org/etsi/osl/osom/serviceactions/CRTerminateTask.java
index 264804754548cbc51ea339c19e5e43d93ae56a92..6aad949a3a9f68aa0d9d0a52647d507688ed3c38 100644
--- a/src/main/java/org/etsi/osl/osom/serviceactions/CRTerminateTask.java
+++ b/src/main/java/org/etsi/osl/osom/serviceactions/CRTerminateTask.java
@@ -83,7 +83,17 @@ public class CRTerminateTask  implements JavaDelegate {
               }
               
               try {
-                serviceOrderManager.cridgeDeletionRequest( map, crspec);
+                String response = serviceOrderManager.cridgeDeletionRequest( map, crspec);
+
+                int retries = 0;
+                while ( response.equals("SEE OTHER")) {
+                  response = serviceOrderManager.cridgeDeletionRequest( map, crspec);
+                  Thread.sleep(1000);
+                  retries++;
+                  if (retries>100) { //will support maximum 100 registered CRIDGE in queue
+                    break;
+                  }
+                }
                 
               } catch (Exception e) {
                 // TODO Auto-generated catch block