diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000000000000000000000000000000000000..bb7d754baa751630b25598e182a30f062e9b6ebd
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,40 @@
+include:
+  - project: osl/code/org.etsi.osl.main
+    ref: main
+    file: 
+      - ci-templates/default.yml
+      - ci-templates/build.yml
+    rules:
+      - if: '$CI_COMMIT_REF_NAME == "main"'
+  
+  - project: osl/code/org.etsi.osl.main
+    ref: develop
+    file: 
+      - ci-templates/default.yml
+      - ci-templates/build.yml
+    rules:
+      - if: '$CI_COMMIT_REF_NAME == "develop"'
+
+  - project: osl/code/org.etsi.osl.main
+    ref: $CI_COMMIT_REF_NAME
+    file: 
+      - ci-templates/default.yml
+      - ci-templates/build.yml
+    rules:
+      - if: '$CI_COMMIT_REF_PROTECTED && $CI_COMMIT_REF_NAME != "main" && $CI_COMMIT_REF_NAME != "develop"'
+
+  - project: osl/code/org.etsi.osl.main
+    ref: develop
+    file: 
+      - 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'
+
+maven_build:
+  extends: .maven_build
+
+docker_build:
+  extends: .docker_build
+  needs:
+    - maven_build
diff --git a/Dockerfile.osom b/Dockerfile
similarity index 51%
rename from Dockerfile.osom
rename to Dockerfile
index f58352e6448da0c482f6b2a48134103141e7c09c..68aefbc7f20e13c9ec0b1d461e0b71382edd58af 100644
--- a/Dockerfile.osom
+++ b/Dockerfile
@@ -2,7 +2,7 @@ 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.osom-1.2.0-SNAPSHOT.jar /opt/openslice/lib/
-COPY target/org.etsi.osl.osom-1.2.0-SNAPSHOT-exec.jar /opt/openslice/lib/
+COPY target/org.etsi.osl.osom-1.0.0.jar /opt/openslice/lib/
+COPY target/org.etsi.osl.osom-1.0.0-exec.jar /opt/openslice/lib/
 COPY . /opt/openslice/lib/
-CMD ["java", "-Xshareclasses:cacheDir=/opt/shareclasses","-jar", "/opt/openslice/lib/org.etsi.osl.osom-1.2.0-SNAPSHOT-exec.jar"]
\ No newline at end of file
+CMD ["java", "-Xshareclasses:cacheDir=/opt/shareclasses","-jar", "/opt/openslice/lib/org.etsi.osl.osom-1.0.0-exec.jar"]
\ No newline at end of file
diff --git a/ci_settings.xml b/ci_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..69ad06ed6c63795d191555afde6ea2d1da4e133d
--- /dev/null
+++ b/ci_settings.xml
@@ -0,0 +1,16 @@
+<settings xmlns="http://maven.apache.org/SETTINGS/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd">
+  <servers>
+    <server>
+      <id>gitlab-maven</id>
+      <configuration>
+        <httpHeaders>
+          <property>
+            <name>Job-Token</name>
+            <value>${CI_JOB_TOKEN}</value>
+          </property>
+        </httpHeaders>
+      </configuration>
+    </server>
+  </servers>
+</settings>
diff --git a/pom.xml b/pom.xml
index 343c6c1d2fae7e80dd74c2f464ed18c730cf2a16..9a6a469ef3b67959b07a1863ee7a726fc425c92e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,12 +5,12 @@
 	<parent>
 		<groupId>org.etsi.osl</groupId>
 		<artifactId>org.etsi.osl.main</artifactId>
-		<version>1.2.0-SNAPSHOT</version>
+		<version>1.0.0</version>
 		<relativePath>../org.etsi.osl.main</relativePath>
 	</parent>
 
-	<artifactId>org.etsi.osl.osom</artifactId>
 
+	<artifactId>org.etsi.osl.osom</artifactId>
 	<name>org.etsi.osl.osom</name>
 	<url>http://maven.apache.org</url>
 
@@ -23,6 +23,23 @@
 		<flowable.version>${flowable-version}</flowable.version>
 	</properties>
 
+	<repositories>
+		<repository>
+			<id>gitlab-maven</id>
+			<url>https://labs.etsi.org/rep/api/v4/groups/260/-/packages/maven</url>
+		</repository>
+	</repositories>
+	<distributionManagement>
+		<repository>
+			<id>gitlab-maven</id>
+			<url>${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/maven</url>
+		</repository>
+		<snapshotRepository>
+			<id>gitlab-maven</id>
+			<url>${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/maven</url>
+		</snapshotRepository>
+	</distributionManagement>
+	
 	<dependencyManagement>
 		<dependencies>
 			<!-- Spring Boot BOM -->
@@ -68,14 +85,14 @@
 		</dependency>
 		<dependency>
 			<groupId>org.etsi.osl</groupId>
-			<artifactId>org.etsi.osl.tmf.api</artifactId>
-			<version>${project.version}</version>
+			<artifactId>org.etsi.osl.model.tmf</artifactId>
+			<version>${org.etsi.osl.model.tmf.version}</version>
 		</dependency>
 		
 		<dependency>
 			<groupId>org.etsi.osl</groupId>
-			<artifactId>org.etsi.osl.model</artifactId>
-			<version>${project.version}</version>
+			<artifactId>org.etsi.osl.model.nfv</artifactId>
+			<version>${org.etsi.osl.model.nfv.version}</version>
 		</dependency>
 		
 		
diff --git a/src/main/java/org/etsi/osl/osom/OsomSpringBoot.java b/src/main/java/org/etsi/osl/osom/OsomSpringBoot.java
index 423aa634d55a3d286598beac3122df00ab11b054..e2830e64d6be262bab35bc7d4b615ed1dda5a238 100644
--- a/src/main/java/org/etsi/osl/osom/OsomSpringBoot.java
+++ b/src/main/java/org/etsi/osl/osom/OsomSpringBoot.java
@@ -26,16 +26,10 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.CommandLineRunner;
 import org.springframework.boot.ExitCodeGenerator;
 import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.autoconfigure.domain.EntityScan;
-import org.springframework.boot.context.properties.EnableConfigurationProperties;
 //import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
 //import org.springframework.cloud.context.config.annotation.RefreshScope;
 import org.springframework.context.ApplicationContext;
-import org.springframework.context.annotation.ComponentScan;
-import org.springframework.context.annotation.ComponentScan.Filter;
-import org.springframework.context.annotation.FilterType;
 
 /**
  * @author ctranoris
diff --git a/src/main/java/org/etsi/osl/osom/configuration/ActiveMQComponentConfig.java b/src/main/java/org/etsi/osl/osom/configuration/ActiveMQComponentConfig.java
index a49908f2cc863701e0716cba86a3739a15795432..c7cdebd51deda1ca18a69da44f319a08d6e979e0 100644
--- a/src/main/java/org/etsi/osl/osom/configuration/ActiveMQComponentConfig.java
+++ b/src/main/java/org/etsi/osl/osom/configuration/ActiveMQComponentConfig.java
@@ -22,7 +22,6 @@ package org.etsi.osl.osom.configuration;
 import org.apache.camel.component.activemq.ActiveMQComponent;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
-
 import jakarta.jms.ConnectionFactory;
 
 /**
diff --git a/src/main/java/org/etsi/osl/osom/configuration/OSOMRouteBuilder.java b/src/main/java/org/etsi/osl/osom/configuration/OSOMRouteBuilder.java
index e4ac7e7470a3601bcd9a00546a16646d59464c1c..9cddc76578abe059c330241ec2b09677f6f5275f 100644
--- a/src/main/java/org/etsi/osl/osom/configuration/OSOMRouteBuilder.java
+++ b/src/main/java/org/etsi/osl/osom/configuration/OSOMRouteBuilder.java
@@ -25,21 +25,16 @@ import org.apache.camel.Exchange;
 import org.apache.camel.LoggingLevel;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.model.dataformat.JsonLibrary;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.etsi.osl.osom.management.ServiceOrderManager;
-import org.etsi.osl.osom.serviceactions.ServiceActionCheck;
+import org.etsi.osl.model.nfv.ExperimentMetadata;
+import org.etsi.osl.model.nfv.Product;
+import org.etsi.osl.model.nfv.ValidationJob;
+import org.etsi.osl.model.nfv.ValidationStatus;
+import org.etsi.osl.model.nfv.VxFMetadata;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.stereotype.Component;
-import org.etsi.osl.model.ExperimentMetadata;
-import org.etsi.osl.model.Product;
-import org.etsi.osl.model.ValidationJob;
-import org.etsi.osl.model.ValidationStatus;
-import org.etsi.osl.model.VxFMetadata;
-import org.etsi.osl.tmf.am642.model.AlarmCreate;
-import org.etsi.osl.tmf.so641.model.ServiceOrder;
 
 @Configuration
 //@RefreshScope
@@ -54,7 +49,9 @@ public class OSOMRouteBuilder extends RouteBuilder {
     @Value("${CRD_DEPLOY_CR_REQ}")
     private String CRD_DEPLOY_CR_REQ = "";
     
-    
+
+    @Value("${CRD_PATCH_CR_REQ}")
+    private String CRD_PATCH_CR_REQ = "";
     
 	public void configure() {
 		
@@ -75,6 +72,20 @@ public class OSOMRouteBuilder extends RouteBuilder {
       .to(CRD_DEPLOY_CR_REQ);
       
       
+      from("direct:retriesCRD_PATCH_CR_REQ")
+      .errorHandler(deadLetterChannel("direct:retriesDeadLetters")
+              .maximumRedeliveries( 10 ) //let's try 10 times to send it....
+              .redeliveryDelay( 30000 ).useOriginalMessage()
+              //.deadLetterHandleNewException( false )
+              //.logExhaustedMessageHistory(false)
+              .logExhausted(true)
+              .logHandled(true)
+              //.retriesExhaustedLogLevel(LoggingLevel.WARN)
+              .retryAttemptedLogLevel( LoggingLevel.WARN) )
+      .to(CRD_PATCH_CR_REQ);
+      
+      
+      
       /**
        * dead Letter Queue Users if everything fails to connect
        */
diff --git a/src/main/java/org/etsi/osl/osom/lcm/LCMRulesController.java b/src/main/java/org/etsi/osl/osom/lcm/LCMRulesController.java
index 760874b7dd85a46912889432174c6c69dfd10617..46cc5474358abae03c5ca777f61d029232f2bc82 100644
--- a/src/main/java/org/etsi/osl/osom/lcm/LCMRulesController.java
+++ b/src/main/java/org/etsi/osl/osom/lcm/LCMRulesController.java
@@ -4,20 +4,18 @@ import java.io.IOException;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-
 import com.fasterxml.jackson.annotation.JsonInclude;
 import com.fasterxml.jackson.core.type.TypeReference;
 import com.fasterxml.jackson.databind.ObjectMapper;
-
 import org.apache.camel.ProducerTemplate;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.etsi.osl.osom.management.ServiceOrderManager;
+import org.etsi.osl.tmf.lcm.model.ELCMRulePhase;
+import org.etsi.osl.tmf.lcm.model.LCMRuleSpecification;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
-import org.etsi.osl.tmf.lcm.model.ELCMRulePhase;
-import org.etsi.osl.tmf.lcm.model.LCMRuleSpecification;
 
 /**
  * @author ctranoris
diff --git a/src/main/java/org/etsi/osl/osom/lcm/LCMRulesExecutor.java b/src/main/java/org/etsi/osl/osom/lcm/LCMRulesExecutor.java
index 3a77c8ef553c605e684600de4420d367a792ec1f..a157c1d3c1fcea170dc90cf2a975d66d0640dfc4 100644
--- a/src/main/java/org/etsi/osl/osom/lcm/LCMRulesExecutor.java
+++ b/src/main/java/org/etsi/osl/osom/lcm/LCMRulesExecutor.java
@@ -12,18 +12,16 @@ import java.nio.file.Paths;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
-
 import javax.tools.Diagnostic;
 import javax.tools.DiagnosticCollector;
 import javax.tools.JavaCompiler;
 import javax.tools.JavaFileObject;
 import javax.tools.StandardJavaFileManager;
 import javax.tools.ToolProvider;
-
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-
 import org.etsi.osl.tmf.lcm.model.LCMRuleSpecification;
+import org.springframework.boot.system.ApplicationHome;
 
 /**
  * @author ctranoris
@@ -165,10 +163,12 @@ public class LCMRulesExecutor {
          * This is the location of the jar inside the running container 
          */
         
-        File classesJar = new File("/opt/openslice/lib/org.etsi.osl.osom-1.2.0-SNAPSHOT.jar");        
-        if ( classesJar.exists()  ) {
-            optionList.addAll(Arrays.asList("-classpath", classesJar.getAbsoluteFile().toString() ));
-        } 
+        ApplicationHome home = new ApplicationHome(LCMRulesExecutor.class);        
+        File classesJar =  home.getSource();     
+        if ( classesJar != null && classesJar.exists()  ) {
+            optionList.addAll(Arrays.asList("-classpath", classesJar.getAbsoluteFile().toString().replace("-exec", "") ));
+        }
+        logger.debug("classesJar =  "+ classesJar); 
         logger.debug("optionList =  "+ optionList.toString());
         
 
@@ -213,7 +213,7 @@ public class LCMRulesExecutor {
 
         URL[] classpath = new URL[] { temp.toUri().toURL()  };
             
-        if ( classesJar.exists()  ) {
+        if ( classesJar != null && classesJar.exists()  ) {
         	classpath = new URL[] { temp.toUri().toURL(), classesJar.toURI().toURL()  };
         } 
         logger.debug("classpath =  "+ classpath.toString());
diff --git a/src/main/java/org/etsi/osl/osom/lcm/LCMRulesExecutorVariables.java b/src/main/java/org/etsi/osl/osom/lcm/LCMRulesExecutorVariables.java
index 198e5b3f1b86c237597c1225990d79515da75029..312490ca7788de280a8e6981a347bf39b050b6af 100644
--- a/src/main/java/org/etsi/osl/osom/lcm/LCMRulesExecutorVariables.java
+++ b/src/main/java/org/etsi/osl/osom/lcm/LCMRulesExecutorVariables.java
@@ -28,7 +28,7 @@ public class LCMRulesExecutorVariables {
 	private Service service;
 	private List<String> compileDiagnosticErrors;
 	private ServiceOrderManager serviceOrderManager;
-	private Map<String, String> outParams;
+	private Map<String, Map<String, String> > outParams;
 
 	/**
 	 * @param spec
@@ -50,6 +50,7 @@ public class LCMRulesExecutorVariables {
 		this.service = serviceInstance;
 		this.serviceOrderManager = aServiceOrderManager;
 		this.compileDiagnosticErrors = new ArrayList<>();
-		this.outParams = new HashMap<String,String>();
+		
+		this.outParams = new HashMap<>();
 	}
 }
diff --git a/src/main/java/org/etsi/osl/osom/lcm/LcmBaseExecutor.java b/src/main/java/org/etsi/osl/osom/lcm/LcmBaseExecutor.java
index fa11e710c598766c7a7d524a178731823f1707aa..7e7025a8e3f8afa93637d2e72bb42b33722c70b7 100644
--- a/src/main/java/org/etsi/osl/osom/lcm/LcmBaseExecutor.java
+++ b/src/main/java/org/etsi/osl/osom/lcm/LcmBaseExecutor.java
@@ -1,13 +1,14 @@
 package org.etsi.osl.osom.lcm;
 
 import java.io.IOException;
+import java.time.OffsetDateTime;
+import java.time.ZoneOffset;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Optional;
 import java.util.function.Consumer;
-
 import javax.net.ssl.SSLException;
-
 import com.fasterxml.jackson.annotation.JsonInclude;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.core.type.TypeReference;
@@ -17,15 +18,9 @@ import com.fasterxml.jackson.databind.node.ArrayNode;
 import com.jayway.jsonpath.Configuration;
 import com.jayway.jsonpath.JsonPath;
 import com.jayway.jsonpath.Option;
-
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.etsi.osl.osom.partnerservices.GenericClient;
-import org.springframework.core.ParameterizedTypeReference;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.HttpStatusCode;
-import org.springframework.web.reactive.function.client.WebClient;
 import org.etsi.osl.tmf.common.model.Any;
 import org.etsi.osl.tmf.common.model.EValueType;
 import org.etsi.osl.tmf.common.model.service.Characteristic;
@@ -35,10 +30,16 @@ import org.etsi.osl.tmf.lcm.model.LCMRuleSpecification;
 import org.etsi.osl.tmf.prm669.model.RelatedParty;
 import org.etsi.osl.tmf.scm633.model.ServiceSpecRelationship;
 import org.etsi.osl.tmf.sim638.model.Service;
+import org.etsi.osl.tmf.sim638.model.ServiceCreate;
+import org.etsi.osl.tmf.sim638.model.ServiceUpdate;
 import org.etsi.osl.tmf.so641.model.ServiceOrder;
 import org.etsi.osl.tmf.so641.model.ServiceOrderCreate;
 import org.etsi.osl.tmf.so641.model.ServiceOrderItemRelationship;
 import org.etsi.osl.tmf.so641.model.ServiceOrderStateType;
+import org.springframework.core.ParameterizedTypeReference;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpStatusCode;
+import org.springframework.web.reactive.function.client.WebClient;
 import jakarta.validation.Valid;
 import jakarta.validation.constraints.NotNull;
 import reactor.core.publisher.Mono;
@@ -395,8 +396,10 @@ public abstract class LcmBaseExecutor {
 		
 
 		System.out.println("============================================================================= \n");
-		System.out.println("The value length is apayload= \n" + apayload.length());
-		System.out.println("The value is apayload= \n" + apayload);
+        System.out.println("The value is apayload= \n" + apayload);
+        if (apayload!=null) {
+          System.out.println("The value length is apayload= \n" + apayload.length());          
+        }
 		System.out.println("============================================================================= \n");
 
 		if (baseurl != null) {
@@ -792,11 +795,152 @@ public abstract class LcmBaseExecutor {
 
 		return "";
 	}
+	
+	
+	
+    /**
+     * Set the value to a characteristics of a referenced service
+     * @param serviceName the name of the service reference
+     * @param characteristics map with name.value
+     * @param value
+     */
+    public void setServiceRefCharacteristicsValues(String serviceName, HashMap<String, String> charvals) {
+      
+      //logger.debug( String.format( "setServiceRefPropValue %s %s %s ", serviceName, characteristicName, value ) );
+      logger.debug( String.format( "setServiceRefCharacteristicsValues for %s ", serviceName ) );
+      
+      Service ctxService = this.vars.getService();      
+      
+      if (ctxService == null) {
+        ServiceCreate scre = this.vars.getServiceToCreate();
+        if (scre != null) {
+          for (String charname : charvals.keySet()) {
+            setCharacteristicOfCurrentService(  serviceName + "::" + charname, charvals.get(charname) ); 
+          }
+        }
+        return;
+      }
+      
+      @NotNull @Valid ServiceRef refSrvice = null;
+      
+      for (ServiceRef sr : ctxService.getSupportingService()) {
+          if ( sr.getName().equals(serviceName) ) {
+              refSrvice = sr;
+              break;
+          }
+      }
+
+      
+      if (refSrvice == null) {
+          return;
+      }
+      
+      if (this.vars.getServiceOrderManager() != null) {
+        Service aService = this.vars.getServiceOrderManager().retrieveService(refSrvice.getId());
+        if (aService != null) {
+
+          ServiceUpdate supd = new ServiceUpdate();
+          Note n = new Note();
+          n.setAuthor("LCMRULE " + this.lcmspec.getName());
+          n.setDate(OffsetDateTime.now(ZoneOffset.UTC).toString());
+          String note = "";
+          for (String charname : charvals.keySet()) {            
+            setCharacteristicOfCurrentService(  serviceName + "::" + charname, charvals.get(charname) );
+            
+            Characteristic servicecrspecLast = aService.getServiceCharacteristicByName(charname);            
+            if (servicecrspecLast != null) {
+              servicecrspecLast.getValue().setValue( charvals.get(charname) );
+              supd.addServiceCharacteristicItem(servicecrspecLast);              
+              note += charname + "=" + charvals.get(charname)+ ", ";
+            }  
+          }
+          
+          
+          n.setText( String.format( "New characterisictic values for ServiceRef %s: %s" , serviceName, note ));
+          supd.addNoteItem(n);
+          this.vars.getServiceOrderManager().updateService(aService.getId(), supd, true);
+
+        }
+        
+      }
+    
+    }
+	
+//	/**
+//	 * Set the value to a characteristic of a referenced service
+//	 * @param serviceName the name of the service reference
+//	 * @param characteristicName
+//	 * @param value
+//	 */
+//	public void setServiceRefPropValue( String serviceName, String characteristicName, String value ) {
+//      logger.debug( String.format( "setServiceRefPropValue %s %s %s ", serviceName, characteristicName, value ) );
+//      Service ctxService = this.vars.getService();
+//      
+//      
+//      if (ctxService == null) {
+//        ServiceCreate scre = this.vars.getServiceToCreate();
+//        if (scre != null) {
+//          setCharacteristicOfCurrentService(  serviceName + "::" + characteristicName, value);          
+//        }
+//        return;
+//      }
+//      
+//      
+//
+//      
+//      
+//      
+//      @NotNull @Valid ServiceRef refSrvice = null;
+//      
+//      for (ServiceRef sr : ctxService.getSupportingService()) {
+//          if ( sr.getName().equals(serviceName) ) {
+//              refSrvice = sr;
+//              break;
+//          }
+//      }
+//
+//
+//      setCharacteristicOfCurrentService(  serviceName + "::" + characteristicName, value);
+//      
+//      if (refSrvice == null) {
+//          return;
+//      }
+//      
+//      if (this.vars.getServiceOrderManager() != null) {
+//        Service aService = this.vars.getServiceOrderManager().retrieveService(refSrvice.getId());
+//        if (aService != null) {
+//
+//          ServiceUpdate supd = new ServiceUpdate();
+//
+//          Characteristic servicecrspecLast =
+//              aService.getServiceCharacteristicByName(characteristicName);
+//          if (servicecrspecLast != null) {
+//            servicecrspecLast.getValue().setValue(value);
+//            supd.addServiceCharacteristicItem(servicecrspecLast);
+//            Note n = new Note();
+//            n.setAuthor("LCMRULE " + this.lcmspec.getName());
+//            n.setDate(OffsetDateTime.now(ZoneOffset.UTC).toString());
+//            n.setText("Set new value (" + value + ") to ref Service (" + serviceName
+//                + ") Characteristic: " + characteristicName);
+//            supd.addNoteItem(n);
+//            this.vars.getServiceOrderManager().updateService(aService.getId(), supd, true);
+//            
+//            
+//          }
+//
+//        }
+//        
+//      }
+//      
+//	}
+
 
 
+	
+	
 
-	//createServiceRefIf("Bundle B", getServiceRefPropValue("BundleA", "state", "").equals("active")==true);
-	public boolean createServiceRefIf(String serviceName, boolean b) {
+  //createServiceRefIf("Bundle B", getServiceRefPropValue("BundleA", "state", "").equals("active")==true);
+	public boolean createServiceRefIf(String serviceName, boolean b, HashMap<String, String> charvals) {
 
 		logger.debug( String.format("createServiceRefwhen serviceName=%s = %s", serviceName, b ) );
 		
@@ -810,7 +954,8 @@ public abstract class LcmBaseExecutor {
 		
 		
 		if (serviceIDToCheckDependcy != null) {		
-			this.vars.getOutParams().put( serviceIDToCheckDependcy, Boolean.toString(b) );
+		  charvals.put("_CREATESERVICEREF_", Boolean.toString(b));
+		  this.vars.getOutParams().put( serviceIDToCheckDependcy, charvals );
 		}
 		
 		return false;
diff --git a/src/main/java/org/etsi/osl/osom/management/AlarmsService.java b/src/main/java/org/etsi/osl/osom/management/AlarmsService.java
index ec21c95c2864d7b286fcd56ecbd88bc4d7d89a74..879e6a266d4d06848c698b8d6d9ae845b8d4cb13 100644
--- a/src/main/java/org/etsi/osl/osom/management/AlarmsService.java
+++ b/src/main/java/org/etsi/osl/osom/management/AlarmsService.java
@@ -3,22 +3,19 @@ package org.etsi.osl.osom.management;
 import java.io.IOException;
 import java.time.OffsetDateTime;
 import java.time.ZoneOffset;
-
 import com.fasterxml.jackson.annotation.JsonInclude;
 import com.fasterxml.jackson.databind.ObjectMapper;
-
 import org.apache.camel.CamelContext;
 import org.apache.camel.ProducerTemplate;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Service;
-
 import org.etsi.osl.tmf.am642.model.AlarmCreate;
 import org.etsi.osl.tmf.am642.model.AlarmStateType;
 import org.etsi.osl.tmf.am642.model.AlarmUpdate;
 import org.etsi.osl.tmf.am642.model.Comment;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
 
 @Service
 public class AlarmsService {
diff --git a/src/main/java/org/etsi/osl/osom/management/AutomationCheck.java b/src/main/java/org/etsi/osl/osom/management/AutomationCheck.java
index 1e8fc763c03c5e9fb14acfc21d0f5eb44c0380eb..d8aef5d75a29dd9ea47ed4ce1dbe2387f9579b1e 100644
--- a/src/main/java/org/etsi/osl/osom/management/AutomationCheck.java
+++ b/src/main/java/org/etsi/osl/osom/management/AutomationCheck.java
@@ -22,16 +22,16 @@ package org.etsi.osl.osom.management;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.etsi.osl.osom.lcm.LCMRulesController;
-import org.flowable.engine.delegate.DelegateExecution;
-import org.flowable.engine.delegate.JavaDelegate;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Component;
 import org.etsi.osl.tmf.common.model.UserPartRoleType;
 import org.etsi.osl.tmf.prm669.model.RelatedParty;
 import org.etsi.osl.tmf.scm633.model.ServiceSpecification;
 import org.etsi.osl.tmf.sim638.model.EServiceStartMode;
 import org.etsi.osl.tmf.sim638.model.Service;
+import org.flowable.engine.delegate.DelegateExecution;
+import org.flowable.engine.delegate.JavaDelegate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
 
 /**
  * @author ctranoris
diff --git a/src/main/java/org/etsi/osl/osom/management/CROrchestrationCheckDeploymentService.java b/src/main/java/org/etsi/osl/osom/management/CROrchestrationCheckDeploymentService.java
index 364aa98b0f0bc1dcdb68b53893b0c56c5673b801..8d036fe08f7360d1b018579af19d5c4de45e803a 100644
--- a/src/main/java/org/etsi/osl/osom/management/CROrchestrationCheckDeploymentService.java
+++ b/src/main/java/org/etsi/osl/osom/management/CROrchestrationCheckDeploymentService.java
@@ -19,24 +19,24 @@
  */
 package org.etsi.osl.osom.management;
 
+import java.time.OffsetDateTime;
+import java.time.ZoneOffset;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Optional;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.flowable.engine.delegate.DelegateExecution;
-import org.flowable.engine.delegate.JavaDelegate;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import org.etsi.osl.model.DeploymentDescriptor;
-import org.etsi.osl.model.DeploymentDescriptorStatus;
-import org.etsi.osl.model.DeploymentDescriptorVxFInstanceInfo;
-import org.etsi.osl.tmf.common.model.Any;
-import org.etsi.osl.tmf.common.model.service.Characteristic;
+import org.etsi.osl.tmf.common.model.service.Note;
 import org.etsi.osl.tmf.common.model.service.ResourceRef;
 import org.etsi.osl.tmf.common.model.service.ServiceStateType;
 import org.etsi.osl.tmf.ri639.model.Resource;
-import org.etsi.osl.tmf.ri639.model.ResourceStatusType;
 import org.etsi.osl.tmf.sim638.model.Service;
 import org.etsi.osl.tmf.sim638.model.ServiceUpdate;
+import org.flowable.engine.delegate.DelegateExecution;
+import org.flowable.engine.delegate.JavaDelegate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
 import jakarta.validation.Valid;
 
 
@@ -46,6 +46,10 @@ public class CROrchestrationCheckDeploymentService implements JavaDelegate {
 	private static final transient Log logger = LogFactory.getLog(CROrchestrationCheckDeploymentService.class.getName());
 
 
+
+    @Value("${spring.application.name}")
+    private String compname;
+
 	@Autowired
 	private ServiceOrderManager serviceOrderManager;
 	
@@ -69,96 +73,47 @@ public class CROrchestrationCheckDeploymentService implements JavaDelegate {
 			return;
 		}
 
-
 		execution.setVariable("serviceDeploymentFinished", Boolean.FALSE );
 
-
 		ServiceUpdate supd = new ServiceUpdate();
 		boolean propagateToSO = false;
 
 		//retrieve the related supporting resource by id and check its status
 		//ResourceRef supresourceRef = aService.getSupportingResource().stream().findFirst().get();//we assume for now we have only one related resource
 
-        @Valid
-        ServiceStateType nextState = aService.getState() ;
-        boolean allActive = aService.getSupportingResource().size() > 0 ;
-        boolean allTerminated = aService.getSupportingResource().size() > 0 ;
-        boolean existsInactive=false;
-        boolean existsTerminated=false;
-        boolean existsReserved=false;
-		for ( ResourceRef supresourceRef : aService.getSupportingResource()) {
-	        Resource res = serviceOrderManager.retrieveResource( supresourceRef.getId() );
-	        if ( res == null ) {
-	          supd.setState( ServiceStateType.TERMINATED);
-	          execution.setVariable("serviceDeploymentFinished", Boolean.TRUE);
-	          Service serviceResult = serviceOrderManager.updateService( aService.getId(), supd, propagateToSO );
-	          return;
-	        }
-
-
-	        
-	        if ( res.getResourceStatus() != null ) {
-	          switch (res.getResourceStatus()) {
-	            case AVAILABLE: {
-	              nextState = ServiceStateType.ACTIVE;
-	              break;
-	            }
-	            case STANDBY: {
-	              nextState = ServiceStateType.RESERVED;
-	              break;
-	            }
-	            case SUSPENDED: {
-	              nextState = ServiceStateType.INACTIVE;
-	              break;
-	            }
-	            case RESERVED: {
-	              nextState = ServiceStateType.RESERVED;
-	              break;
-	            }
-	            case UNKNOWN: {
-	              if (aService.getState().equals( ServiceStateType.ACTIVE  )) {
-	                nextState = ServiceStateType.TERMINATED;              
-	              }
-	              break;
-	            }
-	            case ALARM: {
-	              nextState = ServiceStateType.INACTIVE;
-	              break;
-	            }
-	            default:
-	              throw new IllegalArgumentException("Unexpected value: " + res.getResourceStatus());
-	          } 
-	        }
-
-            allActive = allActive && nextState == ServiceStateType.ACTIVE;
-            allTerminated = allTerminated && nextState == ServiceStateType.TERMINATED;
-            existsInactive = existsInactive || nextState == ServiceStateType.INACTIVE;
-            existsTerminated = existsTerminated || nextState == ServiceStateType.TERMINATED;
-            existsReserved = existsReserved || nextState == ServiceStateType.RESERVED;
-            
-		  
+		List<Resource> rlist = new ArrayList<Resource>();
+        for (ResourceRef rref : aService.getSupportingResource()) {
+          Resource res = serviceOrderManager.retrieveResource(rref.getId());
+          
+          if (  res == null ) {
+            supd.setState( ServiceStateType.TERMINATED);
+            execution.setVariable("serviceDeploymentFinished", Boolean.TRUE);
+            Service serviceResult = serviceOrderManager.updateService( aService.getId(), supd, propagateToSO );
+            return;
+          }
+          rlist.add(res);
+          
         }
+        @Valid
+        ServiceStateType currentState = aService.getState();        
+        
+	    ServiceStateType nextState = aService.findNextStateBasedOnSupportingResources(rlist);
+	    
+	    if (!currentState.equals(nextState)) {
+	        supd.setState( nextState );     
+	        Note n = new Note();
+	        n.setText("Service Status Changed to: " +  nextState);
+	        n.setAuthor(compname);
+	        n.setDate(OffsetDateTime.now(ZoneOffset.UTC).toString());
+	        supd.addNoteItem(n);	        
+	        aService = serviceOrderManager.updateService( aService.getId(), supd, propagateToSO );	      
+	    }
 		
-		
-		if ( allActive ) {
-		  supd.setState( ServiceStateType.ACTIVE ); 
-		} else if ( allTerminated ) {
-          supd.setState( ServiceStateType.TERMINATED ); 
-        } else if ( existsInactive ) {
-          supd.setState( ServiceStateType.INACTIVE ); 
-        } else if ( existsReserved ) {
-          supd.setState( ServiceStateType.RESERVED ); 
-        } else if ( existsTerminated ) {
-          supd.setState( ServiceStateType.INACTIVE ); 
-        }
-		
-		Service serviceResult = serviceOrderManager.updateService( aService.getId(), supd, propagateToSO );
-		
-		if ( serviceResult!= null ) {
-			if ( serviceResult.getState().equals(ServiceStateType.ACTIVE)
-					|| serviceResult.getState().equals(ServiceStateType.TERMINATED)) {
+		if ( aService!= null ) {
+			if ( aService.getState().equals(ServiceStateType.ACTIVE)
+					|| aService.getState().equals(ServiceStateType.TERMINATED)) {
 
-				logger.info("Deployment Status OK. Service state = " + serviceResult.getState() );
+				logger.info("Deployment Status OK. Service state = " + aService.getState() );
 				execution.setVariable("serviceDeploymentFinished", Boolean.TRUE);
 				return;
 			}			
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 79ab248cd03b44de0710d67b3bec763535fb2609..235012d76826f393907031bf5c2cf94a126f7f52 100644
--- a/src/main/java/org/etsi/osl/osom/management/CROrchestrationService.java
+++ b/src/main/java/org/etsi/osl/osom/management/CROrchestrationService.java
@@ -23,16 +23,8 @@ import java.time.OffsetDateTime;
 import java.time.ZoneOffset;
 import java.util.HashMap;
 import java.util.Map;
-
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.flowable.engine.delegate.DelegateExecution;
-import org.flowable.engine.delegate.JavaDelegate;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Component;
-
-import org.etsi.osl.model.DeploymentDescriptor;
 import org.etsi.osl.tmf.common.model.service.Characteristic;
 import org.etsi.osl.tmf.common.model.service.Note;
 import org.etsi.osl.tmf.common.model.service.ResourceRef;
@@ -45,6 +37,11 @@ import org.etsi.osl.tmf.scm633.model.ServiceSpecification;
 import org.etsi.osl.tmf.sim638.model.Service;
 import org.etsi.osl.tmf.sim638.model.ServiceUpdate;
 import org.etsi.osl.tmf.so641.model.ServiceOrder;
+import org.flowable.engine.delegate.DelegateExecution;
+import org.flowable.engine.delegate.JavaDelegate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
 
 
 @Component(value = "crOrchestrationService") // bean name
@@ -115,9 +112,14 @@ public class CROrchestrationService implements JavaDelegate {
         String response = null;
         if (crspec != null) {
           response = createNewDeploymentRequest(aService, resourceCR, sorder.getId(), sorder.getStartDate(),
-              sorder.getExpectedCompletionDate(), sorder.getId(), crspec);
+              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();
@@ -172,6 +174,15 @@ public class CROrchestrationService implements JavaDelegate {
   }
 
 
+  /**
+   * 
+   * THe resource has a temporary name.
+   * later on the name and its characteristics are updated via cridge 
+   * @param rSpecRef
+   * @param sOrder
+   * @param aService
+   * @return
+   */
   private Resource createRelatedResource(ResourceSpecificationRef rSpecRef, ServiceOrder sOrder, Service aService) {
     
     ResourceCreate resCreate = new ResourceCreate();
@@ -190,9 +201,40 @@ public class CROrchestrationService implements JavaDelegate {
   }
 
 
+  /**
+   * 
+   * This function makes a new deployment request for a custom resource  specification.
+   * The request is performed via the message queue.
+   * The function sends also some headers that are related and needed for deployment
+   * These are the headers, that some of them are also added as metadata labels in CR:
+   * <br>
+   * <br><b>currentContextCluster:</b> current context of cluster
+   * <br><b>clusterMasterURL:</b> current master url of the cluster
+   * <br><b>org.etsi.osl.serviceId:</b> This is the related service id that the created resource has a reference
+   * <br><b>org.etsi.osl.resourceId:</b> This is the related resource id that the created CR will wrap and reference. There
+   * <br><b>org.etsi.osl.prefixName:</b> we need to add a short prefix (default is cr) to various places. For example in K8s cannot start with a number
+   * <br><b>org.etsi.osl.serviceOrderId:</b> the related service order id of this deployment request
+   * <br><b>org.etsi.osl.namespace:</b> requested namespace name
+   * <br><b>org.etsi.osl.statusCheckFieldName:</b> The name of the field that is needed to be monitored in order to monitor the status of the service and translate it to TMF resource statys (RESERVED AVAILABLE, etc)
+   * <br><b>org.etsi.osl.statusCheckValueStandby:</b> The CR specific value (of the CheckFieldName) that needs to me mapped to the TMF resource state STANDBY (see org.etsi.osl.tmf.ri639.model.ResourceStatusType)
+   * <br><b>org.etsi.osl.statusCheckValueAlarm:</b> The CR specific value (of the CheckFieldName) that needs to me mapped to the TMF resource state ALARMS (see org.etsi.osl.tmf.ri639.model.ResourceStatusType)
+   * <br><b>org.etsi.osl.statusCheckValueAvailable:</b> The CR specific value (of the CheckFieldName) that needs to me mapped to the TMF resource state AVAILABLE (see org.etsi.osl.tmf.ri639.model.ResourceStatusType)
+   * <br><b>org.etsi.osl.statusCheckValueReserved:</b> The CR specific value (of the CheckFieldName) that needs to me mapped to the TMF resource state RESERVED (see org.etsi.osl.tmf.ri639.model.ResourceStatusType)
+   * <br><b>org.etsi.osl.statusCheckValueUnknown:</b> The CR specific value (of the CheckFieldName) that needs to me mapped to the TMF resource state UNKNOWN (see org.etsi.osl.tmf.ri639.model.ResourceStatusType)
+   * <br><b>org.etsi.osl.statusCheckValueSuspended:</b> The CR specific value (of the CheckFieldName) that needs to me mapped to the TMF resource state SUSPENDED (see org.etsi.osl.tmf.ri639.model.ResourceStatusType)
+   * <br>
+   * 
+   * @param aService reference to the service that the resource and the CR belongs to
+   * @param resourceCR reference the equivalent resource in TMF repo of the target CR. One to one mapping
+   * @param orderId related service order ID
+   * @param startDate start date of the deployment  (not used currently)
+   * @param endDate end date of the deployment (not used currently)
+   * @param _CR_SPEC the spec that is sent to cridge (in json)
+   * @return a string respons from cridge. It might return "OK" if everything is ok. "SEE OTHER" if there are multiple CRIDGEs then some other cridge will handle the request for the equivalent cluster. Any other response is handled as error
+   */
   private String createNewDeploymentRequest(Service aService, Resource resourceCR, String orderId,
       OffsetDateTime startDate,
-      OffsetDateTime endDate, String orderid, String _CR_SPEC) {
+      OffsetDateTime endDate, String _CR_SPEC) {
 
     try {
       Map<String, Object> map = new HashMap<>();
diff --git a/src/main/java/org/etsi/osl/osom/management/CheckServiceTestDeployment.java b/src/main/java/org/etsi/osl/osom/management/CheckServiceTestDeployment.java
index 84a2b71af47596f472d91599cd5dc2225ee0c41b..c21c634a8b0b7ed5b676c47f83ed474fc19f323c 100644
--- a/src/main/java/org/etsi/osl/osom/management/CheckServiceTestDeployment.java
+++ b/src/main/java/org/etsi/osl/osom/management/CheckServiceTestDeployment.java
@@ -2,15 +2,8 @@ package org.etsi.osl.osom.management;
 
 import java.util.ArrayList;
 import java.util.List;
-
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.flowable.engine.delegate.DelegateExecution;
-import org.flowable.engine.delegate.JavaDelegate;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Component;
-
 import org.etsi.osl.tmf.common.model.Any;
 import org.etsi.osl.tmf.common.model.EValueType;
 import org.etsi.osl.tmf.common.model.service.Characteristic;
@@ -27,6 +20,11 @@ import org.etsi.osl.tmf.stm653.model.ServiceTest;
 import org.etsi.osl.tmf.stm653.model.ServiceTestCreate;
 import org.etsi.osl.tmf.stm653.model.ServiceTestSpecification;
 import org.etsi.osl.tmf.stm653.model.ServiceTestSpecificationRef;
+import org.flowable.engine.delegate.DelegateExecution;
+import org.flowable.engine.delegate.JavaDelegate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
 import jakarta.validation.Valid;
 
 @Component(value = "checkServiceTestDeployment") //bean name
diff --git a/src/main/java/org/etsi/osl/osom/management/CreateReservedService.java b/src/main/java/org/etsi/osl/osom/management/CreateReservedService.java
index 042353e75033d59219b789325eabc1e0d01ac021..d545ff922ec40dafbf9358a270b0ff2eeee5538c 100644
--- a/src/main/java/org/etsi/osl/osom/management/CreateReservedService.java
+++ b/src/main/java/org/etsi/osl/osom/management/CreateReservedService.java
@@ -3,17 +3,13 @@ package org.etsi.osl.osom.management;
 import java.time.OffsetDateTime;
 import java.time.ZoneOffset;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
-
+import java.util.Map;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.etsi.osl.osom.lcm.LCMRulesController;
 import org.etsi.osl.osom.lcm.LCMRulesExecutorVariables;
-import org.flowable.engine.delegate.DelegateExecution;
-import org.flowable.engine.delegate.JavaDelegate;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Component;
 import org.etsi.osl.tmf.common.model.Any;
 import org.etsi.osl.tmf.common.model.EValueType;
 import org.etsi.osl.tmf.common.model.UserPartRoleType;
@@ -37,6 +33,11 @@ import org.etsi.osl.tmf.so641.model.ServiceOrder;
 import org.etsi.osl.tmf.so641.model.ServiceOrderItem;
 import org.etsi.osl.tmf.so641.model.ServiceOrderStateType;
 import org.etsi.osl.tmf.so641.model.ServiceOrderUpdate;
+import org.flowable.engine.delegate.DelegateExecution;
+import org.flowable.engine.delegate.JavaDelegate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
 import jakarta.validation.Valid;
 
 @Component(value = "createReservedService") // bean name
@@ -97,9 +98,16 @@ public class CreateReservedService implements JavaDelegate {
 		logger.debug("Retrieved Service ID:" + spec.getId());
 		logger.debug("Retrieved Service Name:" + spec.getName());
 		
+	      //this map contains as key the id of the serviceSpecs to be created
+        //and as value a Map of initial characteristics and their values
+        Map<String, Map<String,String>> tobeCreatedInitialCharValues = new HashMap<>();
+        
+        if ( execution.getVariable("serviceSpecsToCreateInitialCharValues") != null ) {
+          tobeCreatedInitialCharValues = (Map<String, Map<String, String>>) execution.getVariable("serviceSpecsToCreateInitialCharValues");
+        }
 		
 		//this is a main underlying service for the requested service (restriction)					
-		Service createdUnderlService = addServicesToVariables( spec, sor, soi,  parentService );
+		Service createdUnderlService = addServicesToVariables( spec, sor, soi,  parentService, tobeCreatedInitialCharValues );
 		
 		soi.getService().setState( ServiceStateType.RESERVED );
 		soi.setState(ServiceOrderStateType.INPROGRESS);
@@ -146,11 +154,12 @@ public class CreateReservedService implements JavaDelegate {
 	 * @param servicesHandledByNFVOAutomated
 	 * @param servicesLocallyAutomated
 	 * @param parentService 
+	 * @param tobeCreatedInitialCharValues 
 	 * @return 
 	 */
 	private Service addServicesToVariables(ServiceSpecification specrel, 
 			ServiceOrder sor, ServiceOrderItem soi, 
-			Service parentService) {
+			Service parentService, Map<String, Map<String, String>> tobeCreatedInitialCharValues) {
 		
 		logger.debug("\tService spec name :" + specrel.getName());
 		logger.debug("\tService spec type :" + specrel.getType());
@@ -160,25 +169,23 @@ public class CreateReservedService implements JavaDelegate {
 		
 		
 		if ( partnerOrg != null  ) {
-			createdServ = createServiceByServiceSpec(sor, soi, specrel, EServiceStartMode.AUTOMATICALLY_MANAGED, partnerOrg, parentService);
-			
-			
+			createdServ = createServiceByServiceSpec(sor, soi, specrel, EServiceStartMode.AUTOMATICALLY_MANAGED, partnerOrg, parentService, tobeCreatedInitialCharValues);
 		}	
 		else if (specrel.getType().equals("ResourceFacingServiceSpecification")) {
-			createdServ = createServiceByServiceSpec(sor, soi, specrel, EServiceStartMode.AUTOMATICALLY_MANAGED, null, parentService);
+			createdServ = createServiceByServiceSpec(sor, soi, specrel, EServiceStartMode.AUTOMATICALLY_MANAGED, null, parentService, tobeCreatedInitialCharValues);
 			
 		} else if ( specrel.getType().equals("CustomerFacingServiceSpecification") && (specrel.isIsBundle()!=null) && specrel.isIsBundle() ) {
-			createdServ = createServiceByServiceSpec(sor, soi, specrel, EServiceStartMode.AUTOMATICALLY_MANAGED, null, parentService);			
+			createdServ = createServiceByServiceSpec(sor, soi, specrel, EServiceStartMode.AUTOMATICALLY_MANAGED, null, parentService, tobeCreatedInitialCharValues);			
 			
 		} else if ( specrel.getType().equals("CustomerFacingServiceSpecification") && (specrel.findSpecCharacteristicByName("OSAUTOMATED") != null )  ) {
-			createdServ = createServiceByServiceSpec(sor, soi, specrel, EServiceStartMode.AUTOMATICALLY_MANAGED, null, parentService);			
+			createdServ = createServiceByServiceSpec(sor, soi, specrel, EServiceStartMode.AUTOMATICALLY_MANAGED, null, parentService, tobeCreatedInitialCharValues);			
 			
 		} else if ( specrel.getType().equals("CustomerFacingServiceSpecification") && (specrel.findSpecCharacteristicByName("testSpecRef") != null )  ) {
-			createdServ = createServiceByServiceSpec(sor, soi, specrel, EServiceStartMode.AUTOMATICALLY_MANAGED, null, parentService);			
+			createdServ = createServiceByServiceSpec(sor, soi, specrel, EServiceStartMode.AUTOMATICALLY_MANAGED, null, parentService, tobeCreatedInitialCharValues);			
 			
 		}	
 		else {
-			createdServ = createServiceByServiceSpec(sor, soi, specrel, EServiceStartMode.MANUALLY_BY_SERVICE_PROVIDER, null, parentService);			
+			createdServ = createServiceByServiceSpec(sor, soi, specrel, EServiceStartMode.MANUALLY_BY_SERVICE_PROVIDER, null, parentService, tobeCreatedInitialCharValues);			
 		}		
 		
 		//add now the serviceRef
@@ -229,16 +236,20 @@ public class CreateReservedService implements JavaDelegate {
 		
 	}
 	
-	
+
 	/**
 	 * @param sor
-	 * @param soi 
+	 * @param soi
 	 * @param spec
-	 * @return 
+	 * @param startMode
+	 * @param partnerOrg
+	 * @param parentService
+	 * @param tobeCreatedInitialCharValues
+	 * @return
 	 */
 	private Service createServiceByServiceSpec(ServiceOrder sor, ServiceOrderItem soi,
 			ServiceSpecification spec, EServiceStartMode startMode, 
-			RelatedParty partnerOrg, Service parentService) {
+			RelatedParty partnerOrg, Service parentService, Map<String, Map<String, String>> tobeCreatedInitialCharValues) {
 
 		ServiceCreate serviceToCreate = new ServiceCreate();
 		String servicename = spec.getName();
@@ -285,15 +296,33 @@ public class CreateReservedService implements JavaDelegate {
 			}			
 		}
 		
+	    //this map contains as key the id of the serviceSpecs to be created
+        //and as value a Map of initial characteristics and their values
+		Map<String, String> initCharValues = tobeCreatedInitialCharValues.get( spec.getId() );
+		
 		//we need to be careful here with the bundle and the related Service Specs, to properly propagate the rules inside
 		//first copy into the newly created service any characteristic values from the order
 		for (ServiceSpecCharacteristic c : spec.getServiceSpecCharacteristic()) {
 			
 			boolean characteristicFound = false;
+			
+			//pass any initial value. This has high priority
+			if ( initCharValues != null ) {
+			  if ( initCharValues.get( c.getName() ) != null ) {
+			    Characteristic orderCharacteristic = new Characteristic()
+			        .value( new Any( initCharValues.get( c.getName() ), initCharValues.get( c.getName() ))) ;
+                serviceToCreate.addServiceCharacteristicItem( helperCreateCharacteristicItem(c, orderCharacteristic ) );
+                characteristicFound = true;
+                continue;
+			    
+			  }
+			}
+			
+			
 			for (Characteristic orderCharacteristic : soi.getService().getServiceCharacteristic()) {
 				String specCharacteristicToSearch = spec.getName() + "::" +c.getName();
 				 if ( orderCharacteristic.getName().equals( specCharacteristicToSearch )) { //copy only characteristics that are related from the order
-					serviceToCreate.addServiceCharacteristicItem( addServiceCharacteristicItem(c, orderCharacteristic) );
+					serviceToCreate.addServiceCharacteristicItem( helperCreateCharacteristicItem(c, orderCharacteristic) );
 					characteristicFound = true;
 					break;
 				}
@@ -304,7 +333,7 @@ public class CreateReservedService implements JavaDelegate {
 					String specCharacteristicToSearch = c.getName();
 					 if ( orderCharacteristic.getName().equals( specCharacteristicToSearch )) { //copy only characteristics that are related from the order							 
 						
-						serviceToCreate.addServiceCharacteristicItem( addServiceCharacteristicItem(c, orderCharacteristic) );
+						serviceToCreate.addServiceCharacteristicItem( helperCreateCharacteristicItem(c, orderCharacteristic) );
 						characteristicFound = true;
 						break;
 					}
@@ -312,6 +341,8 @@ public class CreateReservedService implements JavaDelegate {
 				
 			}
 			
+			
+			
 		}	
 		
 		if ( serviceToCreate.getServiceCharacteristic() == null ) {
@@ -330,7 +361,7 @@ public class CreateReservedService implements JavaDelegate {
 					}
 				}				
 			}
-								
+
 
 			//also add parent service as relationship to parent
 			ServiceRelationship srelationship = new ServiceRelationship();
@@ -386,7 +417,7 @@ public class CreateReservedService implements JavaDelegate {
 		return null;
 	}
 	
-	private Characteristic addServiceCharacteristicItem(ServiceSpecCharacteristic c, Characteristic orderCharacteristic) {
+	private Characteristic helperCreateCharacteristicItem(ServiceSpecCharacteristic c, Characteristic orderCharacteristic) {
 		Characteristic serviceCharacteristicItem =  new Characteristic();
 		serviceCharacteristicItem.setName( c.getName() );
 		serviceCharacteristicItem.setValueType( c.getValueType() );
diff --git a/src/main/java/org/etsi/osl/osom/management/DependencyRulesSolver.java b/src/main/java/org/etsi/osl/osom/management/DependencyRulesSolver.java
index 9902fb1253501d07f20a5b921bf9618602236bc2..8ccef5a110a14dc54ef848e2792ed57f2ee73e40 100644
--- a/src/main/java/org/etsi/osl/osom/management/DependencyRulesSolver.java
+++ b/src/main/java/org/etsi/osl/osom/management/DependencyRulesSolver.java
@@ -21,17 +21,15 @@ package org.etsi.osl.osom.management;
 
 import java.util.HashMap;
 import java.util.Map;
-
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.flowable.dmn.engine.DmnEngine;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
 import org.etsi.osl.tmf.common.model.service.Characteristic;
 import org.etsi.osl.tmf.scm633.model.ServiceSpecification;
 import org.etsi.osl.tmf.so641.model.ServiceOrder;
 import org.etsi.osl.tmf.so641.model.ServiceOrderItem;
+import org.flowable.dmn.engine.DmnEngine;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
 
 /**
  * @author ctranoris
diff --git a/src/main/java/org/etsi/osl/osom/management/ExternalPartnerCheckDeploymentService.java b/src/main/java/org/etsi/osl/osom/management/ExternalPartnerCheckDeploymentService.java
index a7550e93dd387e3d70ae488525ee2545b5ea3938..df4226f9912c6d6435074ac89ed0cbbd5a97e7d3 100644
--- a/src/main/java/org/etsi/osl/osom/management/ExternalPartnerCheckDeploymentService.java
+++ b/src/main/java/org/etsi/osl/osom/management/ExternalPartnerCheckDeploymentService.java
@@ -22,15 +22,9 @@ package org.etsi.osl.osom.management;
 import java.time.OffsetDateTime;
 import java.time.ZoneOffset;
 import java.util.List;
-
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.etsi.osl.osom.partnerservices.PartnerOrganizationServicesManager;
-import org.flowable.engine.delegate.DelegateExecution;
-import org.flowable.engine.delegate.JavaDelegate;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Component;
 import org.etsi.osl.tmf.common.model.Any;
 import org.etsi.osl.tmf.common.model.UserPartRoleType;
 import org.etsi.osl.tmf.common.model.service.Characteristic;
@@ -49,6 +43,11 @@ import org.etsi.osl.tmf.so641.model.ServiceOrder;
 import org.etsi.osl.tmf.so641.model.ServiceOrderItem;
 import org.etsi.osl.tmf.so641.model.ServiceOrderStateType;
 import org.etsi.osl.tmf.so641.model.ServiceOrderUpdate;
+import org.flowable.engine.delegate.DelegateExecution;
+import org.flowable.engine.delegate.JavaDelegate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
 
 @Component(value = "externalPartnerCheckDeploymentService") //bean name
 public class ExternalPartnerCheckDeploymentService  implements JavaDelegate {
diff --git a/src/main/java/org/etsi/osl/osom/management/ExternalPartnerSubmitOrderService.java b/src/main/java/org/etsi/osl/osom/management/ExternalPartnerSubmitOrderService.java
index 7b6ee4bf850c5216c41f7edcda01fd6631d5b5ee..6e42233a19d89bac859940807aed835995e5c531 100644
--- a/src/main/java/org/etsi/osl/osom/management/ExternalPartnerSubmitOrderService.java
+++ b/src/main/java/org/etsi/osl/osom/management/ExternalPartnerSubmitOrderService.java
@@ -21,15 +21,9 @@ package org.etsi.osl.osom.management;
 
 import java.time.OffsetDateTime;
 import java.time.ZoneOffset;
-
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.etsi.osl.osom.partnerservices.PartnerOrganizationServicesManager;
-import org.flowable.engine.delegate.DelegateExecution;
-import org.flowable.engine.delegate.JavaDelegate;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Component;
 import org.etsi.osl.tmf.common.model.Any;
 import org.etsi.osl.tmf.common.model.UserPartRoleType;
 import org.etsi.osl.tmf.common.model.service.Characteristic;
@@ -46,6 +40,11 @@ import org.etsi.osl.tmf.so641.model.ServiceOrderCreate;
 import org.etsi.osl.tmf.so641.model.ServiceOrderItem;
 import org.etsi.osl.tmf.so641.model.ServiceOrderStateType;
 import org.etsi.osl.tmf.so641.model.ServiceRestriction;
+import org.flowable.engine.delegate.DelegateExecution;
+import org.flowable.engine.delegate.JavaDelegate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
 
 @Component(value = "externalPartnerSubmitOrderService") //bean name
 public class ExternalPartnerSubmitOrderService  implements JavaDelegate {
diff --git a/src/main/java/org/etsi/osl/osom/management/FetchAcknowledgedOrders.java b/src/main/java/org/etsi/osl/osom/management/FetchAcknowledgedOrders.java
index 32534760f4562a4f1ee712d2583f104d0552be89..82686ffca977d613e1456b46e04bf7855a07cfd1 100644
--- a/src/main/java/org/etsi/osl/osom/management/FetchAcknowledgedOrders.java
+++ b/src/main/java/org/etsi/osl/osom/management/FetchAcknowledgedOrders.java
@@ -22,9 +22,10 @@ package org.etsi.osl.osom.management;
 import java.time.Instant;
 import java.util.ArrayList;
 import java.util.List;
-
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.etsi.osl.tmf.so641.model.ServiceOrder;
+import org.etsi.osl.tmf.so641.model.ServiceOrderStateType;
 import org.flowable.engine.TaskService;
 import org.flowable.engine.delegate.DelegateExecution;
 import org.flowable.engine.delegate.JavaDelegate;
@@ -32,9 +33,6 @@ import org.flowable.task.api.Task;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
-import org.etsi.osl.tmf.so641.model.ServiceOrder;
-import org.etsi.osl.tmf.so641.model.ServiceOrderStateType;
-
 @Component(value = "fetchAcknowledgedOrders") // bean name
 public class FetchAcknowledgedOrders implements JavaDelegate {
 
@@ -70,7 +68,7 @@ public class FetchAcknowledgedOrders implements JavaDelegate {
 					
 
 					ServiceOrder sor = serviceOrderManager.retrieveServiceOrder( orderid );
-					if ( sor.getStartDate() != null ) {
+					if ( sor !=null && sor.getStartDate() != null ) {
 						Instant instant = Instant.now() ;                          // Capture the current moment as seen in UTC.
 						boolean canStart = sor.getStartDate().toInstant().isBefore( instant ) ;
 						
diff --git a/src/main/java/org/etsi/osl/osom/management/FetchInProgressOrders.java b/src/main/java/org/etsi/osl/osom/management/FetchInProgressOrders.java
index 0f6a3f5b6b2bf59cf5179c191708d300db59edda..baef2577d3a14cdbee359ce7376c25621a60cff3 100644
--- a/src/main/java/org/etsi/osl/osom/management/FetchInProgressOrders.java
+++ b/src/main/java/org/etsi/osl/osom/management/FetchInProgressOrders.java
@@ -21,17 +21,15 @@ package org.etsi.osl.osom.management;
 
 import java.util.ArrayList;
 import java.util.List;
-
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.etsi.osl.tmf.so641.model.ServiceOrderStateType;
 import org.flowable.engine.TaskService;
 import org.flowable.engine.delegate.DelegateExecution;
 import org.flowable.engine.delegate.JavaDelegate;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
-import org.etsi.osl.tmf.so641.model.ServiceOrderStateType;
-
 @Component(value = "fetchInProgressOrders") // bean name
 public class FetchInProgressOrders implements JavaDelegate {
 
diff --git a/src/main/java/org/etsi/osl/osom/management/FindOrderItems.java b/src/main/java/org/etsi/osl/osom/management/FindOrderItems.java
index a80bd82b11e0a24ea1b19702f760f38708b5e281..41bb9fe06507e9d21d0a7719ff303785ae8140c8 100644
--- a/src/main/java/org/etsi/osl/osom/management/FindOrderItems.java
+++ b/src/main/java/org/etsi/osl/osom/management/FindOrderItems.java
@@ -2,17 +2,15 @@ package org.etsi.osl.osom.management;
 
 import java.util.ArrayList;
 import java.util.List;
-
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.etsi.osl.tmf.so641.model.ServiceOrder;
+import org.etsi.osl.tmf.so641.model.ServiceOrderItem;
 import org.flowable.engine.delegate.DelegateExecution;
 import org.flowable.engine.delegate.JavaDelegate;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
-import org.etsi.osl.tmf.so641.model.ServiceOrder;
-import org.etsi.osl.tmf.so641.model.ServiceOrderItem;
-
 @Component(value = "findOrderItems") // bean name
 public class FindOrderItems  implements JavaDelegate {
 
diff --git a/src/main/java/org/etsi/osl/osom/management/InitializeProcessOrders.java b/src/main/java/org/etsi/osl/osom/management/InitializeProcessOrders.java
index 3b2a331fd4724358cea29e6a1146c07fd30f2c66..2d81c485d9aa703073599ac1b39242b83164e0a7 100644
--- a/src/main/java/org/etsi/osl/osom/management/InitializeProcessOrders.java
+++ b/src/main/java/org/etsi/osl/osom/management/InitializeProcessOrders.java
@@ -21,18 +21,16 @@ package org.etsi.osl.osom.management;
 
 import java.util.ArrayList;
 import java.util.List;
-
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.etsi.osl.tmf.so641.model.ServiceOrderStateType;
+import org.etsi.osl.tmf.so641.model.ServiceOrderUpdate;
 import org.flowable.engine.RuntimeService;
 import org.flowable.engine.delegate.DelegateExecution;
 import org.flowable.engine.delegate.JavaDelegate;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
-import org.etsi.osl.tmf.so641.model.ServiceOrderStateType;
-import org.etsi.osl.tmf.so641.model.ServiceOrderUpdate;
-
 @Component(value = "initializeProcessOrders") // bean name
 public class InitializeProcessOrders implements JavaDelegate {
 
diff --git a/src/main/java/org/etsi/osl/osom/management/LocalSOCheckDeployment.java b/src/main/java/org/etsi/osl/osom/management/LocalSOCheckDeployment.java
index 29c6d4df304226a5b76842a10c5bb9cf5ffeb8b3..c2626f4f87a749dadcc6b7c57dea7f8a00e4f5c9 100644
--- a/src/main/java/org/etsi/osl/osom/management/LocalSOCheckDeployment.java
+++ b/src/main/java/org/etsi/osl/osom/management/LocalSOCheckDeployment.java
@@ -21,15 +21,9 @@ package org.etsi.osl.osom.management;
 
 import java.time.OffsetDateTime;
 import java.time.ZoneOffset;
-
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.etsi.osl.osom.partnerservices.PartnerOrganizationServicesManager;
-import org.flowable.engine.delegate.DelegateExecution;
-import org.flowable.engine.delegate.JavaDelegate;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Component;
 import org.etsi.osl.tmf.common.model.service.Note;
 import org.etsi.osl.tmf.common.model.service.ServiceRef;
 import org.etsi.osl.tmf.common.model.service.ServiceStateType;
@@ -38,6 +32,11 @@ import org.etsi.osl.tmf.scm633.model.ServiceSpecification;
 import org.etsi.osl.tmf.sim638.model.Service;
 import org.etsi.osl.tmf.sim638.model.ServiceUpdate;
 import org.etsi.osl.tmf.so641.model.ServiceOrder;
+import org.flowable.engine.delegate.DelegateExecution;
+import org.flowable.engine.delegate.JavaDelegate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
 
 
 @Component(value = "localSoCheckDeployment") //bean name
diff --git a/src/main/java/org/etsi/osl/osom/management/LocalSOInitialize.java b/src/main/java/org/etsi/osl/osom/management/LocalSOInitialize.java
index b8276f77742f9803dc49eb07a1de2dd965b00f1c..411c0518f740ea0a5920bf606c553763bb2025fc 100644
--- a/src/main/java/org/etsi/osl/osom/management/LocalSOInitialize.java
+++ b/src/main/java/org/etsi/osl/osom/management/LocalSOInitialize.java
@@ -21,16 +21,15 @@ package org.etsi.osl.osom.management;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.etsi.osl.tmf.sim638.model.Service;
+import org.etsi.osl.tmf.sim638.model.ServiceUpdate;
+import org.etsi.osl.tmf.so641.model.ServiceOrder;
 import org.flowable.engine.delegate.DelegateExecution;
 import org.flowable.engine.delegate.JavaDelegate;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 
-import org.etsi.osl.tmf.sim638.model.Service;
-import org.etsi.osl.tmf.sim638.model.ServiceUpdate;
-import org.etsi.osl.tmf.so641.model.ServiceOrder;
-
 @Component(value = "localSoInitialize") //bean name
 public class LocalSOInitialize implements JavaDelegate {
 
diff --git a/src/main/java/org/etsi/osl/osom/management/NFVOrchestrationCheckDeploymentService.java b/src/main/java/org/etsi/osl/osom/management/NFVOrchestrationCheckDeploymentService.java
index 740a8fdc78d74c04a5abe83b6661da9539872153..021458906cc013f11966313a0d33d972e2951439 100644
--- a/src/main/java/org/etsi/osl/osom/management/NFVOrchestrationCheckDeploymentService.java
+++ b/src/main/java/org/etsi/osl/osom/management/NFVOrchestrationCheckDeploymentService.java
@@ -21,19 +21,18 @@ package org.etsi.osl.osom.management;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.flowable.engine.delegate.DelegateExecution;
-import org.flowable.engine.delegate.JavaDelegate;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import org.etsi.osl.model.DeploymentDescriptor;
-import org.etsi.osl.model.DeploymentDescriptorStatus;
-import org.etsi.osl.model.DeploymentDescriptorVxFInstanceInfo;
+import org.etsi.osl.model.nfv.DeploymentDescriptor;
+import org.etsi.osl.model.nfv.DeploymentDescriptorStatus;
+import org.etsi.osl.model.nfv.DeploymentDescriptorVxFInstanceInfo;
 import org.etsi.osl.tmf.common.model.Any;
 import org.etsi.osl.tmf.common.model.service.Characteristic;
 import org.etsi.osl.tmf.common.model.service.ServiceStateType;
 import org.etsi.osl.tmf.sim638.model.Service;
 import org.etsi.osl.tmf.sim638.model.ServiceUpdate;
+import org.flowable.engine.delegate.DelegateExecution;
+import org.flowable.engine.delegate.JavaDelegate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
 
 
 @Component(value = "nfvOrchestrationCheckDeploymentService") //bean name
@@ -88,7 +87,7 @@ public class NFVOrchestrationCheckDeploymentService implements JavaDelegate {
 		ServiceUpdate supd = new ServiceUpdate();
 		boolean aVNFINDEXREFadded = false;
 		
-		boolean propagateToSO = false;
+		boolean triggerServiceActionQueue = false;
 		
 		if ( aService.getServiceCharacteristic() != null ) {
 			for (Characteristic c : aService.getServiceCharacteristic()) {
@@ -104,17 +103,17 @@ public class NFVOrchestrationCheckDeploymentService implements JavaDelegate {
 					c.setValue( new Any( dd.getInstanceId() + "" ));
 				} else if ( c.getName().equals("NSR")) {
 					c.setValue( new Any( dd.getNsr() + "" ));
-					propagateToSO = true;
+					triggerServiceActionQueue = true;
 				} else if ( c.getName().equals("NSLCM")) {
 					c.setValue( new Any( dd.getNs_nslcm_details() + "" ));
-					propagateToSO = true;
+					triggerServiceActionQueue = true;
 				}				
 				if ( dd.getDeploymentDescriptorVxFInstanceInfo() !=null ) {
 					for ( DeploymentDescriptorVxFInstanceInfo vnfinfo : dd.getDeploymentDescriptorVxFInstanceInfo() ) {
 						if ( c.getName().equals(  "VNFINDEXREF_INFO_" + vnfinfo.getMemberVnfIndexRef() )) {
 							c.setValue( new Any( vnfinfo.getVxfInstanceInfo()  + "" ));
 							aVNFINDEXREFadded = true;
-							propagateToSO = true;
+							triggerServiceActionQueue = true;
 						} 
 						
 					}
@@ -154,7 +153,7 @@ public class NFVOrchestrationCheckDeploymentService implements JavaDelegate {
 			supd.setState( ServiceStateType.TERMINATED );
 		}
 		
-		Service serviceResult = serviceOrderManager.updateService( aService.getId(), supd, propagateToSO );
+		Service serviceResult = serviceOrderManager.updateService( aService.getId(), supd, triggerServiceActionQueue );
 		
 		if ( serviceResult!= null ) {
 			if ( serviceResult.getState().equals(ServiceStateType.ACTIVE)
diff --git a/src/main/java/org/etsi/osl/osom/management/NFVOrchestrationService.java b/src/main/java/org/etsi/osl/osom/management/NFVOrchestrationService.java
index d4ef027189900c820b4126db9535ca97ac9bd066..b92d3e3c842c69343daf30e7bc68a760069351c5 100644
--- a/src/main/java/org/etsi/osl/osom/management/NFVOrchestrationService.java
+++ b/src/main/java/org/etsi/osl/osom/management/NFVOrchestrationService.java
@@ -24,20 +24,13 @@ import java.time.ZoneOffset;
 import java.util.Date;
 import java.util.Map;
 import java.util.regex.Pattern;
-
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.flowable.engine.delegate.DelegateExecution;
-import org.flowable.engine.delegate.JavaDelegate;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Component;
-
-import org.etsi.osl.model.DeploymentDescriptor;
-import org.etsi.osl.model.DeploymentDescriptorStatus;
-import org.etsi.osl.model.ExperimentMetadata;
-import org.etsi.osl.model.ExperimentOnBoardDescriptor;
-import org.etsi.osl.model.NetworkServiceDescriptor;
+import org.etsi.osl.model.nfv.DeploymentDescriptor;
+import org.etsi.osl.model.nfv.DeploymentDescriptorStatus;
+import org.etsi.osl.model.nfv.ExperimentMetadata;
+import org.etsi.osl.model.nfv.ExperimentOnBoardDescriptor;
+import org.etsi.osl.model.nfv.NetworkServiceDescriptor;
 import org.etsi.osl.tmf.common.model.Any;
 import org.etsi.osl.tmf.common.model.service.Characteristic;
 import org.etsi.osl.tmf.common.model.service.Note;
@@ -47,6 +40,11 @@ import org.etsi.osl.tmf.scm633.model.ServiceSpecification;
 import org.etsi.osl.tmf.sim638.model.Service;
 import org.etsi.osl.tmf.sim638.model.ServiceUpdate;
 import org.etsi.osl.tmf.so641.model.ServiceOrder;
+import org.flowable.engine.delegate.DelegateExecution;
+import org.flowable.engine.delegate.JavaDelegate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
 
 
 @Component(value = "nfvOrchestrationService") //bean name
diff --git a/src/main/java/org/etsi/osl/osom/management/OrderCompleteService.java b/src/main/java/org/etsi/osl/osom/management/OrderCompleteService.java
index fa592d492b14bebcf75176ba25d7462f71e439e2..8f39cd0e6f790b6032eb4d02cbfded1f29068246 100644
--- a/src/main/java/org/etsi/osl/osom/management/OrderCompleteService.java
+++ b/src/main/java/org/etsi/osl/osom/management/OrderCompleteService.java
@@ -21,24 +21,26 @@ package org.etsi.osl.osom.management;
 
 import java.time.OffsetDateTime;
 import java.time.ZoneOffset;
-
+import java.util.ArrayList;
+import java.util.List;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.flowable.engine.delegate.DelegateExecution;
-import org.flowable.engine.delegate.JavaDelegate;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Component;
-
 import org.etsi.osl.tmf.common.model.service.Note;
 import org.etsi.osl.tmf.common.model.service.ResourceRef;
 import org.etsi.osl.tmf.common.model.service.ServiceRef;
 import org.etsi.osl.tmf.common.model.service.ServiceStateType;
+import org.etsi.osl.tmf.ri639.model.Resource;
 import org.etsi.osl.tmf.sim638.model.Service;
+import org.etsi.osl.tmf.sim638.model.ServiceUpdate;
 import org.etsi.osl.tmf.so641.model.ServiceOrder;
 import org.etsi.osl.tmf.so641.model.ServiceOrderItem;
 import org.etsi.osl.tmf.so641.model.ServiceOrderStateType;
 import org.etsi.osl.tmf.so641.model.ServiceOrderUpdate;
+import org.flowable.engine.delegate.DelegateExecution;
+import org.flowable.engine.delegate.JavaDelegate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
 import jakarta.validation.Valid;
 
 
@@ -127,6 +129,20 @@ public class OrderCompleteService implements JavaDelegate {
 				if ( soi.getService().getSupportingService() != null) {
 					for (ServiceRef sr : soi.getService().getSupportingService()) {
 						Service srv = serviceOrderManager.retrieveService( sr.getId() );
+//						
+//						if ( srv.getState().equals(ServiceStateType.RESERVED) 
+//                            || srv.getState().equals(ServiceStateType.INACTIVE)
+//                            || srv.getState().equals(ServiceStateType.DESIGNED) ){
+//						  try {
+//						    if ( srv.getSupportingResource()!=null && srv.getSupportingResource().size()>0  ) {
+//                              srv = reEvaluateServiceState( srv );
+//						      
+//						    }
+//                          } catch (Exception e) {
+//
+//                          }
+//						}
+						
 						existsReserved = existsReserved || srv.getState().equals(ServiceStateType.RESERVED );
 						existsInactive = existsInactive || srv.getState().equals(ServiceStateType.INACTIVE );
 						existsDesigned = existsDesigned || srv.getState().equals(ServiceStateType.DESIGNED );
@@ -138,18 +154,7 @@ public class OrderCompleteService implements JavaDelegate {
 				}
 				
 				
-				if ( soi.getService().getSupportingResource() != null) {
-					for (ResourceRef rr : soi.getService().getSupportingResource()) {
-						Service srv = serviceOrderManager.retrieveService( rr.getId() );
-						existsReserved = existsReserved || srv.getState().equals(ServiceStateType.RESERVED );
-						existsInactive = existsInactive || srv.getState().equals(ServiceStateType.INACTIVE );
-						existsDesigned = existsDesigned || srv.getState().equals(ServiceStateType.DESIGNED );
-						existsActive  = existsActive || srv.getState().equals(ServiceStateType.ACTIVE );
-						existsTerminated  = existsTerminated || srv.getState().equals(ServiceStateType.TERMINATED );
-						allTerminated = allTerminated && srv.getState().equals(ServiceStateType.TERMINATED );
-						allActive = allActive && srv.getState().equals(ServiceStateType.ACTIVE );
-					}					
-				}
+				
 				
 				@Valid
 				ServiceStateType sserviceState = soi.getService().getState();
@@ -222,4 +227,38 @@ public class OrderCompleteService implements JavaDelegate {
 		
 	}
 
+//  /**
+//   * @param srv
+//   * @return
+//   */
+//  private Service reEvaluateServiceState(Service aService) {
+//    
+//    List<Resource> rlist = new ArrayList<Resource>();
+//    for (ResourceRef rref : aService.getSupportingResource()) {
+//      Resource res = serviceOrderManager.retrieveResource(rref.getId());
+//
+//      if (  res != null ) {
+//        rlist.add(res);
+//      }
+//    }
+//
+//    ServiceStateType curState = aService.getState();
+//    
+//    ServiceStateType nextState = aService.findNextStateBasedOnSupportingResources(rlist);
+//    if ( !curState.equals(nextState)) {
+//      ServiceUpdate supd = new ServiceUpdate();
+//      supd.setState( nextState );     
+//      Note n = new Note();
+//      n.setText("Service Status Changed via OrderCompleteService method to: " +  nextState);
+//      n.setAuthor(compname);
+//      n.setDate(OffsetDateTime.now(ZoneOffset.UTC).toString());
+//      supd.addNoteItem(n);
+//      
+//      Service serviceResult = serviceOrderManager.updateService( aService.getId(), supd, false );
+//      return serviceResult;
+//      
+//    }
+//    return aService;
+//  }
+
 }
diff --git a/src/main/java/org/etsi/osl/osom/management/ProcessCreateServiceRules.java b/src/main/java/org/etsi/osl/osom/management/ProcessCreateServiceRules.java
index e21df96f23280348276a440401ac3204576c38b0..8aa8166bf849b3dfeea36ce6db582bbb4aad9f81 100644
--- a/src/main/java/org/etsi/osl/osom/management/ProcessCreateServiceRules.java
+++ b/src/main/java/org/etsi/osl/osom/management/ProcessCreateServiceRules.java
@@ -4,16 +4,10 @@ import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.etsi.osl.osom.lcm.LCMRulesController;
 import org.etsi.osl.osom.lcm.LCMRulesExecutorVariables;
-import org.flowable.engine.delegate.DelegateExecution;
-import org.flowable.engine.delegate.JavaDelegate;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Component;
 import org.etsi.osl.tmf.common.model.service.ServiceRef;
 import org.etsi.osl.tmf.common.model.service.ServiceStateType;
 import org.etsi.osl.tmf.lcm.model.ELCMRulePhase;
@@ -23,6 +17,11 @@ import org.etsi.osl.tmf.sim638.model.Service;
 import org.etsi.osl.tmf.sim638.model.ServiceUpdate;
 import org.etsi.osl.tmf.so641.model.ServiceOrder;
 import org.etsi.osl.tmf.so641.model.ServiceOrderItem;
+import org.flowable.engine.delegate.DelegateExecution;
+import org.flowable.engine.delegate.JavaDelegate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
 
 @Component(value = "processCreateServiceRules") 
 public class ProcessCreateServiceRules implements JavaDelegate {
@@ -49,6 +48,9 @@ public class ProcessCreateServiceRules implements JavaDelegate {
 		execution.setVariable("allSupportingServicesCreated", allSupportingServicesCreated ); //by default
 		
 
+
+        
+        
 		Service contextService = null;
 		String contextServiceId = (String) execution.getVariable("contextServiceId"); 
 		if ( contextServiceId != null ) {
@@ -70,29 +72,18 @@ public class ProcessCreateServiceRules implements JavaDelegate {
 		 * first find all referenced ServiceSpecs of a ServiceSpec to be created
 		 */
 		boolean foundCreatedButNOTACTIVEServices = false;
-		Map<String, Boolean> tobeCreated = new HashMap<>();
+		
+		//this map contains as key the id of the serviceSpecs to be created
+		//and as value a Map of initial characteristics and their values
+		Map<String, Map<String,String>> tobeCreated = new HashMap<>();
+		
 		for (ServiceSpecRelationship specRels : spec.getServiceSpecRelationship()) {
 			logger.debug("\tService specRelsId:" + specRels.getId());
-			tobeCreated.put(specRels.getId(), true);
+			tobeCreated.put(specRels.getId(), null);
 		}
 		
 		
-		for ( ServiceRef serviceRef: contextService.getSupportingService()  ) {
-			
-			Service theServiceReferenced = serviceOrderManager.retrieveService( serviceRef.getId() );
-			
-			if ( tobeCreated.get(theServiceReferenced.getServiceSpecificationRef().getId() ) != null ) {	
-				tobeCreated.put( theServiceReferenced.getServiceSpecificationRef().getId(), false);
-			}
-			
 
-			if ( theServiceReferenced != null ) {
-				if ( theServiceReferenced.getState().equals( ServiceStateType.RESERVED) ) {
-					foundCreatedButNOTACTIVEServices = true;
-				}
-			}
-			
-		}
 		
 		
 		/**
@@ -124,20 +115,45 @@ public class ProcessCreateServiceRules implements JavaDelegate {
 
 		for (String serviceId : vars.getOutParams().keySet()) {
 			if (  vars.getOutParams().get(serviceId) !=null) {
-				if (  vars.getOutParams().get(serviceId).equals( "true")  ) {	
-					tobeCreated.put( serviceId, true && tobeCreated.get(serviceId) );				
-				} else {
-					tobeCreated.put( serviceId, false);
-					allSupportingServicesCreated = false;	
-				}				
+			  
+
+			  if (  vars.getOutParams().get(serviceId) != null && vars.getOutParams().get(serviceId).get("_CREATESERVICEREF_") !=null) {
+                
+                if (  vars.getOutParams().get(serviceId).get("_CREATESERVICEREF_").equals( "true")  ) {   
+                  vars.getOutParams().get(serviceId).remove( "_CREATESERVICEREF_" );
+                  HashMap<String, String> myChars = new HashMap< String , String >( vars.getOutParams().get(serviceId) );
+                  tobeCreated.put( serviceId, myChars  );               
+                } else {
+                    tobeCreated.remove( serviceId);
+                    allSupportingServicesCreated = false;   
+                }
+              }
+			  
 			}
 		}
+		
+		
+		//now compare those to be created, with those already created
+        for ( ServiceRef serviceRef: contextService.getSupportingService()  ) {            
+            Service theServiceReferenced = serviceOrderManager.retrieveService( serviceRef.getId() );            
+            if ( tobeCreated.containsKey(theServiceReferenced.getServiceSpecificationRef().getId() )  ) {               
+                tobeCreated.remove( theServiceReferenced.getServiceSpecificationRef().getId());
+            }           
+
+            if ( theServiceReferenced != null ) {
+                if ( theServiceReferenced.getState().equals( ServiceStateType.RESERVED) ) {
+                    foundCreatedButNOTACTIVEServices = true;
+                }
+            }
+            
+        }
+      
 
 		serviceOrderManager.updateService( contextService.getId() , supd, false); //update context service
 		
 		List<String> servicesToCreate = new ArrayList<>();
 		for (String specid : tobeCreated.keySet()) {
-			if ( tobeCreated.get(specid) ) {
+			if ( tobeCreated.containsKey(specid)  ) {
 				servicesToCreate.add(specid);
 				allSupportingServicesCreated = false;				
 			}
@@ -162,11 +178,21 @@ public class ProcessCreateServiceRules implements JavaDelegate {
 			
 		}
 		
+		if ( contextService.getState().equals( ServiceStateType.INACTIVE ) || contextService.getState().equals( ServiceStateType.TERMINATED ) ) {
+          allSupportingServicesCreatedAndActive = true;
+          allSupportingServicesCreated = true;    
+         // this will help us to avoid a deadlock if a failure occurs
+      } 
+		
 
 		execution.setVariable("allSupportingServicesCreated", allSupportingServicesCreated ); 
 		execution.setVariable("allSupportingServicesCreatedAndActive", allSupportingServicesCreatedAndActive && allSupportingServicesCreated ); //by default
 		execution.setVariable("parentServiceId", contextServiceId);
-		execution.setVariable("serviceSpecsToCreate", servicesToCreate);
+        execution.setVariable("serviceSpecsToCreate", servicesToCreate);
+        execution.setVariable("serviceSpecsToCreateInitialCharValues", tobeCreated);
+		
+		
+		
 	}
 
 	
diff --git a/src/main/java/org/etsi/osl/osom/management/ProcessOrderItemActionAdd.java b/src/main/java/org/etsi/osl/osom/management/ProcessOrderItemActionAdd.java
index 9eda1bcd822a9b64f64522039d5815718e30c1f0..caa5b90ebcfcc141229a0fb538c1b5fc39d088f6 100644
--- a/src/main/java/org/etsi/osl/osom/management/ProcessOrderItemActionAdd.java
+++ b/src/main/java/org/etsi/osl/osom/management/ProcessOrderItemActionAdd.java
@@ -3,14 +3,14 @@ package org.etsi.osl.osom.management;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.etsi.osl.osom.lcm.LCMRulesController;
+import org.etsi.osl.tmf.scm633.model.ServiceSpecification;
+import org.etsi.osl.tmf.so641.model.ServiceOrder;
+import org.etsi.osl.tmf.so641.model.ServiceOrderItem;
 import org.flowable.engine.delegate.DelegateExecution;
 import org.flowable.engine.delegate.JavaDelegate;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
-import org.etsi.osl.tmf.scm633.model.ServiceSpecification;
-import org.etsi.osl.tmf.so641.model.ServiceOrder;
-import org.etsi.osl.tmf.so641.model.ServiceOrderItem;
 
 @Component(value = "processOrderItemActionAdd") // bean name
 public class ProcessOrderItemActionAdd implements JavaDelegate {
diff --git a/src/main/java/org/etsi/osl/osom/management/ProcessOrderItemActionCheck.java b/src/main/java/org/etsi/osl/osom/management/ProcessOrderItemActionCheck.java
index 9b5c1233ca435816568e152c09d1f7a59aa91e29..0b49e90173acc5353e5921f14aa6755a6472dc65 100644
--- a/src/main/java/org/etsi/osl/osom/management/ProcessOrderItemActionCheck.java
+++ b/src/main/java/org/etsi/osl/osom/management/ProcessOrderItemActionCheck.java
@@ -3,14 +3,14 @@ package org.etsi.osl.osom.management;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.etsi.osl.osom.lcm.LCMRulesController;
+import org.etsi.osl.tmf.so641.model.ServiceOrder;
+import org.etsi.osl.tmf.so641.model.ServiceOrderActionType;
+import org.etsi.osl.tmf.so641.model.ServiceOrderItem;
 import org.flowable.engine.delegate.DelegateExecution;
 import org.flowable.engine.delegate.JavaDelegate;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
-import org.etsi.osl.tmf.so641.model.ServiceOrder;
-import org.etsi.osl.tmf.so641.model.ServiceOrderActionType;
-import org.etsi.osl.tmf.so641.model.ServiceOrderItem;
 
 @Component(value = "processOrderItemActionCheck") // bean name
 public class ProcessOrderItemActionCheck implements JavaDelegate {
@@ -43,6 +43,10 @@ public class ProcessOrderItemActionCheck implements JavaDelegate {
 		}
 		
 		if ( soi == null ) {
+            logger.error("In ProcessOrderItemActionCheck cannot find ServiceOrderItem orderItemIdToProcess=:" + orderItemIdToProcess);
+            logger.error("In ProcessOrderItemActionCheck cannot find ServiceOrderItem sor.getUuid()=:" + sor.getUuid() );
+            logger.error("In ProcessOrderItemActionCheck cannot find ServiceOrderItem sor()=:" + sor.toString() );
+            execution.setVariable("saction", "NONE");            
 			return;
 		}
 		
diff --git a/src/main/java/org/etsi/osl/osom/management/ProcessOrderItemActionDelete.java b/src/main/java/org/etsi/osl/osom/management/ProcessOrderItemActionDelete.java
index cf6d2c7f20de19c3c5ea952bda4861766e238f50..d1bfd1520a205ae4166849fafdca58e46bbc9026 100644
--- a/src/main/java/org/etsi/osl/osom/management/ProcessOrderItemActionDelete.java
+++ b/src/main/java/org/etsi/osl/osom/management/ProcessOrderItemActionDelete.java
@@ -3,11 +3,6 @@ package org.etsi.osl.osom.management;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.etsi.osl.osom.lcm.LCMRulesController;
-import org.flowable.engine.delegate.DelegateExecution;
-import org.flowable.engine.delegate.JavaDelegate;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Component;
 import org.etsi.osl.tmf.common.model.service.ServiceRef;
 import org.etsi.osl.tmf.common.model.service.ServiceStateType;
 import org.etsi.osl.tmf.sim638.model.ServiceUpdate;
@@ -17,6 +12,11 @@ import org.etsi.osl.tmf.so641.model.ServiceOrderItem;
 import org.etsi.osl.tmf.so641.model.ServiceOrderStateType;
 import org.etsi.osl.tmf.so641.model.ServiceOrderUpdate;
 import org.etsi.osl.tmf.so641.model.ServiceRestriction;
+import org.flowable.engine.delegate.DelegateExecution;
+import org.flowable.engine.delegate.JavaDelegate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
 
 @Component(value = "processOrderItemActionDelete") // bean name
 public class ProcessOrderItemActionDelete implements JavaDelegate {
diff --git a/src/main/java/org/etsi/osl/osom/management/ProcessOrderItemActionModify.java b/src/main/java/org/etsi/osl/osom/management/ProcessOrderItemActionModify.java
index ed7d7b2c317fe1a5479b89ca2405bb800a682476..8c2f95082af631350de55447225691ce2ddffb88 100644
--- a/src/main/java/org/etsi/osl/osom/management/ProcessOrderItemActionModify.java
+++ b/src/main/java/org/etsi/osl/osom/management/ProcessOrderItemActionModify.java
@@ -3,11 +3,6 @@ package org.etsi.osl.osom.management;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.etsi.osl.osom.lcm.LCMRulesController;
-import org.flowable.engine.delegate.DelegateExecution;
-import org.flowable.engine.delegate.JavaDelegate;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Component;
 import org.etsi.osl.tmf.common.model.service.Characteristic;
 import org.etsi.osl.tmf.common.model.service.ServiceRef;
 import org.etsi.osl.tmf.common.model.service.ServiceStateType;
@@ -19,6 +14,11 @@ import org.etsi.osl.tmf.so641.model.ServiceOrderItem;
 import org.etsi.osl.tmf.so641.model.ServiceOrderStateType;
 import org.etsi.osl.tmf.so641.model.ServiceOrderUpdate;
 import org.etsi.osl.tmf.so641.model.ServiceRestriction;
+import org.flowable.engine.delegate.DelegateExecution;
+import org.flowable.engine.delegate.JavaDelegate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
 
 @Component(value = "processOrderItemActionModify") // bean name
 public class ProcessOrderItemActionModify implements JavaDelegate {
diff --git a/src/main/java/org/etsi/osl/osom/management/ServiceOrderManager.java b/src/main/java/org/etsi/osl/osom/management/ServiceOrderManager.java
index e745d3032b7784a7087cc0290884d3851ecde2d6..6290743ba0d1e9f690c0fd62db7134e3f611de1e 100644
--- a/src/main/java/org/etsi/osl/osom/management/ServiceOrderManager.java
+++ b/src/main/java/org/etsi/osl/osom/management/ServiceOrderManager.java
@@ -26,28 +26,16 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
-
 import com.fasterxml.jackson.annotation.JsonInclude;
 import com.fasterxml.jackson.databind.ObjectMapper;
-
 import org.apache.camel.ProducerTemplate;
-import org.apache.camel.model.dataformat.JsonLibrary;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.etsi.osl.model.nfv.DeploymentDescriptor;
+import org.etsi.osl.model.nfv.NetworkServiceDescriptor;
+import org.etsi.osl.model.nfv.ScaleDescriptor;
 import org.etsi.osl.osom.serviceactions.NSActionRequestPayload;
-import org.flowable.engine.RuntimeService;
-import org.flowable.engine.TaskService;
-import org.flowable.task.api.Task;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import org.etsi.osl.model.DeploymentDescriptor;
-import org.etsi.osl.model.NetworkServiceDescriptor;
-import org.etsi.osl.model.ScaleDescriptor;
 import org.etsi.osl.tmf.pm632.model.Organization;
-import org.etsi.osl.tmf.rcm634.model.ResourceSpecification;
 import org.etsi.osl.tmf.ri639.model.LogicalResource;
 import org.etsi.osl.tmf.ri639.model.PhysicalResource;
 import org.etsi.osl.tmf.ri639.model.Resource;
@@ -64,6 +52,13 @@ import org.etsi.osl.tmf.stm653.model.ServiceTest;
 import org.etsi.osl.tmf.stm653.model.ServiceTestCreate;
 import org.etsi.osl.tmf.stm653.model.ServiceTestSpecification;
 import org.etsi.osl.tmf.stm653.model.ServiceTestUpdate;
+import org.flowable.engine.RuntimeService;
+import org.flowable.engine.TaskService;
+import org.flowable.task.api.Task;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import jakarta.validation.constraints.NotNull;
 
 /**
@@ -453,16 +448,16 @@ public class ServiceOrderManager {
 	/**
 	 * @param serviceId
 	 * @param s
-	 * @param propagateToSO is a cryptic thing. However it is used as follows: if FALSE, to just update the service status in catalog without further taking any action.
+	 * @param triggerServiceActionQueue is a cryptic thing. However it is used as follows: if FALSE, to just update the service status in catalog without further taking any action.
 	 * if TRUE then the ServiceUpdate will trigger a ServiceActionQueue to further process the update. So this is needed to avoid these kinds of deadlocks
 	 * @return
 	 */
-	public org.etsi.osl.tmf.sim638.model.Service updateService(String serviceId, ServiceUpdate s, boolean propagateToSO) {
+	public org.etsi.osl.tmf.sim638.model.Service updateService(String serviceId, ServiceUpdate s, boolean triggerServiceActionQueue) {
 		logger.info("will update Service : " + serviceId );
 		try {
 			Map<String, Object> map = new HashMap<>();
 			map.put("serviceid", serviceId );
-			map.put("propagateToSO", propagateToSO );
+			map.put("triggerServiceActionQueue", triggerServiceActionQueue );
 			
 			Object response = template.requestBodyAndHeaders( CATALOG_UPD_SERVICE, toJsonString(s), map);
 
@@ -1029,7 +1024,36 @@ public class ServiceOrderManager {
       return null;
       
   }
+  
+  
 
+  /**
+   * @param rFS_CRSPEC 
+   * @param serviceId 
+   * 
+   */
+  public String cridgeDeploymentUpdateRequest(Map<String, Object> map, String CR_SPEC) {
+      
+
+      try {
+        
+        Object response = template.requestBodyAndHeaders( "direct:retriesCRD_PATCH_CR_REQ", CR_SPEC , map );
+          
+
+          if ( !(response instanceof String)) {
+              logger.error("cridgeDeploymentUpdateRequest response object is wrong.");
+              return null;
+          }
+          logger.debug("cridgeDeploymentUpdateRequest response is: " + response);
+          return (String) response;
+          
+      }catch (Exception e) {
+          logger.error("Cannot retrieve cridgeDeploymentUpdateRequest response. " + e.toString());
+          e.printStackTrace();
+      }
+      return null;
+      
+  }
   
 
   /**
diff --git a/src/main/java/org/etsi/osl/osom/management/UserOrderCompleteService.java b/src/main/java/org/etsi/osl/osom/management/UserOrderCompleteService.java
index 3cd49cc0211398954ef1b86f55a8e8c9d6d6a1d2..d9ec9f2a470ff1f4f3b2f62af667ad9e2eeb9220 100644
--- a/src/main/java/org/etsi/osl/osom/management/UserOrderCompleteService.java
+++ b/src/main/java/org/etsi/osl/osom/management/UserOrderCompleteService.java
@@ -21,15 +21,14 @@ package org.etsi.osl.osom.management;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.etsi.osl.tmf.common.model.service.ServiceStateType;
+import org.etsi.osl.tmf.sim638.model.Service;
 import org.flowable.engine.delegate.DelegateExecution;
 import org.flowable.engine.delegate.JavaDelegate;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 
-import org.etsi.osl.tmf.common.model.service.ServiceStateType;
-import org.etsi.osl.tmf.sim638.model.Service;
-
 
 @Component(value = "userOrderCompleteService") //bean name
 public class UserOrderCompleteService implements JavaDelegate {
diff --git a/src/main/java/org/etsi/osl/osom/partnerservices/FetchPartnerOrganizations.java b/src/main/java/org/etsi/osl/osom/partnerservices/FetchPartnerOrganizations.java
index 26539751c8d1b5c9ea60dc92af0b5832b98039eb..e2f7a14f022cc236b80aca78f7c9779a917d4f5b 100644
--- a/src/main/java/org/etsi/osl/osom/partnerservices/FetchPartnerOrganizations.java
+++ b/src/main/java/org/etsi/osl/osom/partnerservices/FetchPartnerOrganizations.java
@@ -21,20 +21,17 @@ package org.etsi.osl.osom.partnerservices;
 
 import java.util.ArrayList;
 import java.util.List;
-
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
-
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.etsi.osl.tmf.pm632.model.Organization;
 import org.flowable.engine.TaskService;
 import org.flowable.engine.delegate.DelegateExecution;
 import org.flowable.engine.delegate.JavaDelegate;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
-import org.etsi.osl.tmf.pm632.model.Organization;
-
 @Component(value = "fetchPartnerOrganizations") // bean name
 public class FetchPartnerOrganizations implements JavaDelegate {
 
diff --git a/src/main/java/org/etsi/osl/osom/partnerservices/FetchUpdateExternalPartnerServices.java b/src/main/java/org/etsi/osl/osom/partnerservices/FetchUpdateExternalPartnerServices.java
index 343f6f4b0ee0396bab5c18540ed1f17951902a1a..fb12205974441b595233846191470c7e9b94769b 100644
--- a/src/main/java/org/etsi/osl/osom/partnerservices/FetchUpdateExternalPartnerServices.java
+++ b/src/main/java/org/etsi/osl/osom/partnerservices/FetchUpdateExternalPartnerServices.java
@@ -20,20 +20,17 @@
 package org.etsi.osl.osom.partnerservices;
 
 import java.util.List;
-
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.JsonMappingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
-
-import org.flowable.engine.delegate.DelegateExecution;
-import org.flowable.engine.delegate.JavaDelegate;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
 import org.etsi.osl.tmf.common.model.Any;
 import org.etsi.osl.tmf.pm632.model.Characteristic;
 import org.etsi.osl.tmf.pm632.model.Organization;
 import org.etsi.osl.tmf.scm633.model.ServiceSpecification;
+import org.flowable.engine.delegate.DelegateExecution;
+import org.flowable.engine.delegate.JavaDelegate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
 
 @Component(value = "fetchUpdateExternalPartnerServices") // bean name
 public class FetchUpdateExternalPartnerServices  implements JavaDelegate {
diff --git a/src/main/java/org/etsi/osl/osom/partnerservices/FlowOneServiceOrder.java b/src/main/java/org/etsi/osl/osom/partnerservices/FlowOneServiceOrder.java
index 38c31de114ede847228b314383fbdfa415d51373..2a6c3b0d313a35cea4e1a9ebdc7910b249fd48db 100644
--- a/src/main/java/org/etsi/osl/osom/partnerservices/FlowOneServiceOrder.java
+++ b/src/main/java/org/etsi/osl/osom/partnerservices/FlowOneServiceOrder.java
@@ -21,7 +21,6 @@ package org.etsi.osl.osom.partnerservices;
 
 import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
 import com.fasterxml.jackson.annotation.JsonProperty;
-
 import org.etsi.osl.tmf.so641.model.ServiceOrderItem;
 
 @JsonIgnoreProperties(ignoreUnknown=true)
diff --git a/src/main/java/org/etsi/osl/osom/partnerservices/GenericClient.java b/src/main/java/org/etsi/osl/osom/partnerservices/GenericClient.java
index 5cf2042cad001b40b649f48fabe9f44213bd1eea..2aa4f91939c61579685bc011a9b3907eecb55bb1 100644
--- a/src/main/java/org/etsi/osl/osom/partnerservices/GenericClient.java
+++ b/src/main/java/org/etsi/osl/osom/partnerservices/GenericClient.java
@@ -23,9 +23,7 @@ import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.function.Function;
-
 import javax.net.ssl.SSLException;
-
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.springframework.http.HttpHeaders;
@@ -49,7 +47,6 @@ import org.springframework.util.StringUtils;
 import org.springframework.web.reactive.function.client.ExchangeFilterFunction;
 import org.springframework.web.reactive.function.client.ExchangeStrategies;
 import org.springframework.web.reactive.function.client.WebClient;
-
 import io.netty.channel.ChannelOption;
 import io.netty.handler.ssl.SslContext;
 import io.netty.handler.ssl.SslContextBuilder;
diff --git a/src/main/java/org/etsi/osl/osom/partnerservices/PartnerOrganizationServicesManager.java b/src/main/java/org/etsi/osl/osom/partnerservices/PartnerOrganizationServicesManager.java
index 71132f9186218667a094ad3189df906fd3f32548..366f400200f6ac3ad2667f9c7bea70b4e275766a 100644
--- a/src/main/java/org/etsi/osl/osom/partnerservices/PartnerOrganizationServicesManager.java
+++ b/src/main/java/org/etsi/osl/osom/partnerservices/PartnerOrganizationServicesManager.java
@@ -26,23 +26,13 @@ import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-
 import javax.net.ssl.SSLException;
-
 import com.fasterxml.jackson.annotation.JsonInclude;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.type.TypeFactory;
-
 import org.apache.camel.ProducerTemplate;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.core.ParameterizedTypeReference;
-import org.springframework.http.HttpStatusCode;
-import org.springframework.stereotype.Service;
-import org.springframework.web.reactive.function.client.WebClient;
-
 import org.etsi.osl.tmf.common.model.Any;
 import org.etsi.osl.tmf.pm632.model.Characteristic;
 import org.etsi.osl.tmf.pm632.model.Organization;
@@ -55,6 +45,12 @@ import org.etsi.osl.tmf.so641.model.ServiceOrder;
 import org.etsi.osl.tmf.so641.model.ServiceOrderCreate;
 import org.etsi.osl.tmf.so641.model.ServiceOrderStateType;
 import org.etsi.osl.tmf.so641.model.ServiceOrderUpdate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.core.ParameterizedTypeReference;
+import org.springframework.http.HttpStatusCode;
+import org.springframework.stereotype.Service;
+import org.springframework.web.reactive.function.client.WebClient;
 import jakarta.validation.constraints.NotNull;
 import reactor.core.publisher.Mono;
 
diff --git a/src/main/java/org/etsi/osl/osom/partnerservices/SimpleIDSpec.java b/src/main/java/org/etsi/osl/osom/partnerservices/SimpleIDSpec.java
index 395c1c708249fe723ddd8f2e37f3e6f1f3392c94..ce2d93e72b4ce95573f2a7b0ff4545899ac41f51 100644
--- a/src/main/java/org/etsi/osl/osom/partnerservices/SimpleIDSpec.java
+++ b/src/main/java/org/etsi/osl/osom/partnerservices/SimpleIDSpec.java
@@ -22,7 +22,6 @@ package org.etsi.osl.osom.partnerservices;
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
 import com.fasterxml.jackson.annotation.JsonProperty;
-
 import org.etsi.osl.tmf.scm633.model.ServiceSpecification;
 
 
diff --git a/src/main/java/org/etsi/osl/osom/partnerservices/SyncPartnerServiceInventory.java b/src/main/java/org/etsi/osl/osom/partnerservices/SyncPartnerServiceInventory.java
index e150fb78863717bfb634ad5bf1a3014f99e0464a..b75adbc233f9b251cab1944babd045a59ac031d9 100644
--- a/src/main/java/org/etsi/osl/osom/partnerservices/SyncPartnerServiceInventory.java
+++ b/src/main/java/org/etsi/osl/osom/partnerservices/SyncPartnerServiceInventory.java
@@ -1,19 +1,18 @@
 package org.etsi.osl.osom.partnerservices;
 
 import java.util.List;
-
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.etsi.osl.osom.management.ServiceOrderManager;
-import org.flowable.engine.delegate.DelegateExecution;
-import org.flowable.engine.delegate.JavaDelegate;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
 import org.etsi.osl.tmf.common.model.service.Characteristic;
 import org.etsi.osl.tmf.pm632.model.Organization;
 import org.etsi.osl.tmf.prm669.model.RelatedParty;
 import org.etsi.osl.tmf.sim638.model.Service;
 import org.etsi.osl.tmf.sim638.model.ServiceUpdate;
+import org.flowable.engine.delegate.DelegateExecution;
+import org.flowable.engine.delegate.JavaDelegate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
 
 @Component(value = "SyncPartnerServiceInventory") // bean name
 public class SyncPartnerServiceInventory implements JavaDelegate {
diff --git a/src/main/java/org/etsi/osl/osom/serviceactions/AutomaticallyHandleAction.java b/src/main/java/org/etsi/osl/osom/serviceactions/AutomaticallyHandleAction.java
index de5215ea46efe2abc094867227930121259ca5f1..6bc7ce47c582184d1a9e7161655637b1df52461c 100644
--- a/src/main/java/org/etsi/osl/osom/serviceactions/AutomaticallyHandleAction.java
+++ b/src/main/java/org/etsi/osl/osom/serviceactions/AutomaticallyHandleAction.java
@@ -2,23 +2,21 @@ package org.etsi.osl.osom.serviceactions;
 
 import java.time.OffsetDateTime;
 import java.time.ZoneOffset;
-
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.JsonMappingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
-
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.etsi.osl.osom.management.ServiceOrderManager;
+import org.etsi.osl.tmf.common.model.service.Note;
+import org.etsi.osl.tmf.sim638.model.Service;
+import org.etsi.osl.tmf.sim638.model.ServiceActionQueueItem;
+import org.etsi.osl.tmf.sim638.model.ServiceUpdate;
 import org.flowable.engine.delegate.DelegateExecution;
 import org.flowable.engine.delegate.JavaDelegate;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
-import org.etsi.osl.tmf.common.model.service.Note;
-import org.etsi.osl.tmf.sim638.model.Service;
-import org.etsi.osl.tmf.sim638.model.ServiceActionQueueItem;
-import org.etsi.osl.tmf.sim638.model.ServiceUpdate;
 
 @Component(value = "AutomaticallyHandleAction") //bean name
 public class AutomaticallyHandleAction  implements JavaDelegate {
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 e0eb2510636e38f2bde524f3310ccfe38aeec792..554ccb6342804816915fd219d5702fe412ae0250 100644
--- a/src/main/java/org/etsi/osl/osom/serviceactions/CRPatchTask.java
+++ b/src/main/java/org/etsi/osl/osom/serviceactions/CRPatchTask.java
@@ -6,29 +6,24 @@ import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-
 import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.core.type.TypeReference;
 import com.fasterxml.jackson.databind.ObjectMapper;
-
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.etsi.osl.osom.management.AlarmsService;
 import org.etsi.osl.osom.management.ServiceOrderManager;
-import org.flowable.engine.delegate.DelegateExecution;
-import org.flowable.engine.delegate.JavaDelegate;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Component;
-
-import org.etsi.osl.model.ScaleDescriptor;
-import org.etsi.osl.tmf.common.model.Any;
-import org.etsi.osl.tmf.common.model.EValueType;
 import org.etsi.osl.tmf.common.model.service.Characteristic;
 import org.etsi.osl.tmf.common.model.service.Note;
+import org.etsi.osl.tmf.common.model.service.ResourceRef;
 import org.etsi.osl.tmf.sim638.model.Service;
 import org.etsi.osl.tmf.sim638.model.ServiceActionQueueItem;
+import org.etsi.osl.tmf.sim638.model.ServiceOrderRef;
 import org.etsi.osl.tmf.sim638.model.ServiceUpdate;
+import org.flowable.engine.delegate.DelegateExecution;
+import org.flowable.engine.delegate.JavaDelegate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
 
 @Component(value = "CRPatchTask") // bean name
 public class CRPatchTask implements JavaDelegate {
@@ -67,17 +62,14 @@ public class CRPatchTask implements JavaDelegate {
 
 
     List<Characteristic> changeCharacteristics = new ArrayList<>();
-    // send to mano client here: only the modified action!
     // identify here the characteristics that changed
     if (aService.getServiceCharacteristic() != null) {
       for (Characteristic srcChar : aService.getServiceCharacteristic()) {
 
         if (originalService.getServiceCharacteristicByName(srcChar.getName()) != null) {
 
-          Characteristic origChar =
-              originalService.getServiceCharacteristicByName(srcChar.getName());
-          if ((origChar != null) && (origChar.getValue() != null)
-              && (origChar.getValue().getValue() != null)) {
+          Characteristic origChar = originalService.getServiceCharacteristicByName(srcChar.getName());
+          if ((origChar != null) && (origChar.getValue() != null) && (srcChar.getValue() != null) && (origChar.getValue().getValue() != null)) {
             if (!origChar.getValue().getValue().equals(srcChar.getValue().getValue())) {
               changeCharacteristics.add(srcChar);
             }
@@ -88,16 +80,72 @@ public class CRPatchTask implements JavaDelegate {
 
 
 
-    Note n = new Note();
-    n.setText("Service Action CRPatchTask does nothing for now. Action: " + item.getAction() + ". ");
-    n.setAuthor(compname);
-    n.setDate(OffsetDateTime.now(ZoneOffset.UTC).toString());
+    
 
 
 
     ServiceUpdate supd = new ServiceUpdate();
 
+    try {
+
+      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);
+        
 
+        return;
+
+    }catch (Exception e) {
+      e.printStackTrace();
+    }
+    
+    
+    
+    
+    Note n = new Note();
+    n.setText("Service Action CRPatchTask FAILED. Action: " + item.getAction() + ". ");
+    n.setAuthor(compname);
+    n.setDate(OffsetDateTime.now(ZoneOffset.UTC).toString());
     supd.addNoteItem(n);
     serviceOrderManager.deleteServiceActionQueueItem(item);
     serviceOrderManager.updateService(aService.getId(), supd, false);
@@ -108,4 +156,52 @@ public class CRPatchTask implements JavaDelegate {
 
   }
 
+  private String createNewDeploymentUpdateRequest(Service aService, String crspec) {
+    try {
+      Map<String, Object> map = new HashMap<>();
+      map.put("currentContextCluster",getServiceCharacteristic(aService, "currentContextCluster")    );
+      map.put("clusterMasterURL",getServiceCharacteristic(aService, "clusterMasterURL")    );
+      map.put("org.etsi.osl.serviceId", aService.getId() );
+      map.put("org.etsi.osl.prefixName",getServiceCharacteristic(aService, "org.etsi.osl.prefixName")    );
+      map.put("org.etsi.osl.resourceId",getServiceCharacteristic(aService, "org.etsi.osl.resourceId")    );
+      map.put("org.etsi.osl.serviceOrderId",getServiceCharacteristic(aService, "org.etsi.osl.serviceOrderId")    );
+      map.put("org.etsi.osl.namespace",getServiceCharacteristic(aService, "org.etsi.osl.namespace")    );
+      map.put("org.etsi.osl.statusCheckFieldName",getServiceCharacteristic(aService, "org.etsi.osl.statusCheckFieldName")    );
+      map.put("org.etsi.osl.statusCheckValueStandby",getServiceCharacteristic(aService, "org.etsi.osl.statusCheckValueStandby")    );
+      map.put("org.etsi.osl.statusCheckValueAlarm",getServiceCharacteristic(aService, "org.etsi.osl.statusCheckValueAlarm")    );
+      map.put("org.etsi.osl.statusCheckValueAvailable",getServiceCharacteristic(aService, "org.etsi.osl.statusCheckValueAvailable")    );
+      map.put("org.etsi.osl.statusCheckValueReserved",getServiceCharacteristic(aService, "org.etsi.osl.statusCheckValueReserved")    );
+      map.put("org.etsi.osl.statusCheckValueUnknown",getServiceCharacteristic(aService, "org.etsi.osl.statusCheckValueUnknown")    );
+      map.put("org.etsi.osl.statusCheckValueSuspended",getServiceCharacteristic(aService, "org.etsi.osl.statusCheckValueSuspended")    );
+      
+      
+
+      
+      String response  = serviceOrderManager.cridgeDeploymentUpdateRequest( map, crspec);
+      int retries = 0;
+      while ( response.equals("SEE OTHER")) {
+        response  = serviceOrderManager.cridgeDeploymentUpdateRequest( map, crspec);
+        Thread.sleep(1000);
+        retries++;
+        if (retries>100) { //will support maximum 100 registered CRIDGE in queue
+          break;
+        }
+      }
+      return response;
+      
+    } catch (Exception e) {
+      logger.error("cridgeDeploymentRequest failed");
+      e.printStackTrace();
+    }
+
+    return null;
+  }
+  
+  private Object getServiceCharacteristic(Service aService, String val) {
+    if (aService.getServiceCharacteristicByName( val ) !=null ) {
+      return aService.getServiceCharacteristicByName( val ).getValue().getValue();
+    }
+    return "";
+  }
+
 }
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 2efd2d9d5ccd913863260eb5e302bc2bf5720e28..cac5b6ac3a8d1a3d933b36756e1164487be43ff0 100644
--- a/src/main/java/org/etsi/osl/osom/serviceactions/CRTerminateTask.java
+++ b/src/main/java/org/etsi/osl/osom/serviceactions/CRTerminateTask.java
@@ -2,29 +2,24 @@ package org.etsi.osl.osom.serviceactions;
 
 import java.time.OffsetDateTime;
 import java.time.ZoneOffset;
-import java.util.Date;
 import java.util.HashMap;
 import java.util.Map;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.JsonMappingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
-
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.etsi.osl.osom.management.ServiceOrderManager;
-import org.flowable.engine.delegate.DelegateExecution;
-import org.flowable.engine.delegate.JavaDelegate;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Component;
-
-import org.etsi.osl.model.DeploymentDescriptor;
 import org.etsi.osl.tmf.common.model.service.Note;
 import org.etsi.osl.tmf.common.model.service.ResourceRef;
-import org.etsi.osl.tmf.rcm634.model.ResourceSpecificationRef;
 import org.etsi.osl.tmf.sim638.model.Service;
 import org.etsi.osl.tmf.sim638.model.ServiceActionQueueItem;
 import org.etsi.osl.tmf.sim638.model.ServiceUpdate;
+import org.flowable.engine.delegate.DelegateExecution;
+import org.flowable.engine.delegate.JavaDelegate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
 
 @Component(value = "CRTerminateTask") //bean name
 public class CRTerminateTask  implements JavaDelegate {
@@ -65,30 +60,42 @@ public class CRTerminateTask  implements JavaDelegate {
             String crspec = aService.getServiceCharacteristicByName( "_CR_SPEC" ).getValue().getValue();
 
             if (crspec != null) {
-              logger.info("Will terminate CR related to service. We need to fetchthe underlying resource"  );
+              logger.info("Will terminate CR related to service"  );
 
               //we need to get the equivalent resource spec. since ServiceSpec is an RFS
+              Map<String, Object> map = new HashMap<>();
+              map.put("currentContextCluster",getServiceCharacteristic(aService, "currentContextCluster")    );
+              map.put("clusterMasterURL",getServiceCharacteristic(aService, "clusterMasterURL")    );
+              map.put("org.etsi.osl.serviceId", aService.getId() );
+              map.put("org.etsi.osl.serviceOrderId", aService.getServiceOrder().stream().findFirst().get().getId() );
+              map.put("org.etsi.osl.prefixName",getServiceCharacteristic(aService, "org.etsi.osl.prefixName")    );
+              map.put("org.etsi.osl.namespace", aService.getServiceOrder().stream().findFirst().get().getId() );
+              map.put("org.etsi.osl.statusCheckFieldName",  getServiceCharacteristic(aService, "_CR_CHECK_FIELD")    );
+              map.put("org.etsi.osl.statusCheckValueStandby", getServiceCharacteristic(aService, "_CR_CHECKVAL_STANDBY")  );
+              map.put("org.etsi.osl.statusCheckValueAlarm", getServiceCharacteristic(aService, "_CR_CHECKVAL_ALARM")  );
+              map.put("org.etsi.osl.statusCheckValueAvailable", getServiceCharacteristic(aService, "_CR_CHECKVAL_AVAILABLE")  );
+              map.put("org.etsi.osl.statusCheckValueReserved", getServiceCharacteristic(aService, "_CR_CHECKVAL_RESERVED")  );
+              map.put("org.etsi.osl.statusCheckValueUnknown", getServiceCharacteristic(aService, "_CR_CHECKVAL_UNKNOWN")  );
+              map.put("org.etsi.osl.statusCheckValueSuspended", getServiceCharacteristic(aService, "_CR_CHECKVAL_SUSPENDED")  );
+              for (ResourceRef resRef : aService.getSupportingResource()) {
+                if (resRef.getName().contains("+_cr_temp")) {
+                  map.put("org.etsi.osl.resourceId", resRef.getId() );                    
+                }
+              }
               
               try {
-                for (ResourceRef resRef : aService.getSupportingResource()) {
-                  Map<String, Object> map = new HashMap<>();
-                  map.put("currentContextCluster",getServiceCharacteristic(aService, "currentContextCluster")    );
-                  map.put("clusterMasterURL",getServiceCharacteristic(aService, "clusterMasterURL")    );
-                  map.put("org.etsi.osl.serviceId", aService.getId() );
-                  map.put("org.etsi.osl.resourceId", resRef.getId() );
-                  map.put("org.etsi.osl.serviceOrderId", aService.getServiceOrder().stream().findFirst().get().getId() );
-                  map.put("org.etsi.osl.namespace", aService.getServiceOrder().stream().findFirst().get().getId() );
-                  map.put("org.etsi.osl.statusCheckFieldName",  getServiceCharacteristic(aService, "_CR_CHECK_FIELD")    );
-                  map.put("org.etsi.osl.statusCheckValueStandby", getServiceCharacteristic(aService, "_CR_CHECKVAL_STANDBY")  );
-                  map.put("org.etsi.osl.statusCheckValueAlarm", getServiceCharacteristic(aService, "_CR_CHECKVAL_ALARM")  );
-                  map.put("org.etsi.osl.statusCheckValueAvailable", getServiceCharacteristic(aService, "_CR_CHECKVAL_AVAILABLE")  );
-                  map.put("org.etsi.osl.statusCheckValueReserved", getServiceCharacteristic(aService, "_CR_CHECKVAL_RESERVED")  );
-                  map.put("org.etsi.osl.statusCheckValueUnknown", getServiceCharacteristic(aService, "_CR_CHECKVAL_UNKNOWN")  );
-                  map.put("org.etsi.osl.statusCheckValueSuspended", getServiceCharacteristic(aService, "_CR_CHECKVAL_SUSPENDED")  );
-                  
-                  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
                 e.printStackTrace();
diff --git a/src/main/java/org/etsi/osl/osom/serviceactions/ExternalProviderServiceAction.java b/src/main/java/org/etsi/osl/osom/serviceactions/ExternalProviderServiceAction.java
index fd0616c5ef2e19265f7dfaef93ca5e0ecf2ac699..a19f1f97f9d8f8bfc74df49feba393de4d9d2be1 100644
--- a/src/main/java/org/etsi/osl/osom/serviceactions/ExternalProviderServiceAction.java
+++ b/src/main/java/org/etsi/osl/osom/serviceactions/ExternalProviderServiceAction.java
@@ -2,20 +2,13 @@ package org.etsi.osl.osom.serviceactions;
 
 import java.time.OffsetDateTime;
 import java.time.ZoneOffset;
-
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.JsonMappingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
-
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.etsi.osl.osom.management.ServiceOrderManager;
 import org.etsi.osl.osom.partnerservices.PartnerOrganizationServicesManager;
-import org.flowable.engine.delegate.DelegateExecution;
-import org.flowable.engine.delegate.JavaDelegate;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Component;
 import org.etsi.osl.tmf.common.model.service.Characteristic;
 import org.etsi.osl.tmf.common.model.service.Note;
 import org.etsi.osl.tmf.common.model.service.ServiceStateType;
@@ -28,6 +21,11 @@ import org.etsi.osl.tmf.so641.model.ServiceOrder;
 import org.etsi.osl.tmf.so641.model.ServiceOrderActionType;
 import org.etsi.osl.tmf.so641.model.ServiceOrderItem;
 import org.etsi.osl.tmf.so641.model.ServiceOrderUpdate;
+import org.flowable.engine.delegate.DelegateExecution;
+import org.flowable.engine.delegate.JavaDelegate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
 
 @Component(value = "ExternalProviderServiceAction") //bean name
 public class ExternalProviderServiceAction  implements JavaDelegate {
diff --git a/src/main/java/org/etsi/osl/osom/serviceactions/FetchServiceQueueItems.java b/src/main/java/org/etsi/osl/osom/serviceactions/FetchServiceQueueItems.java
index 9ce3cb3dbe84331726d36d04ebd1f10ca6b2e1b5..e78a9b1efbc3e07c2a69e42421d68350a77cd6a6 100644
--- a/src/main/java/org/etsi/osl/osom/serviceactions/FetchServiceQueueItems.java
+++ b/src/main/java/org/etsi/osl/osom/serviceactions/FetchServiceQueueItems.java
@@ -2,18 +2,16 @@ package org.etsi.osl.osom.serviceactions;
 
 import java.util.ArrayList;
 import java.util.List;
-
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
-
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.etsi.osl.osom.management.ServiceOrderManager;
+import org.etsi.osl.tmf.sim638.model.ServiceActionQueueItem;
 import org.flowable.engine.delegate.DelegateExecution;
 import org.flowable.engine.delegate.JavaDelegate;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
-import org.etsi.osl.tmf.sim638.model.ServiceActionQueueItem;
 
 @Component(value = "fetchServiceQueueItems") // bean name
 public class FetchServiceQueueItems implements JavaDelegate {
diff --git a/src/main/java/org/etsi/osl/osom/serviceactions/HandleManuallyAction.java b/src/main/java/org/etsi/osl/osom/serviceactions/HandleManuallyAction.java
index 7e8137577e9ab8c577479cf5003291525d47f9ed..54d90bcb00a91268184d14b51eed9088edf3e66d 100644
--- a/src/main/java/org/etsi/osl/osom/serviceactions/HandleManuallyAction.java
+++ b/src/main/java/org/etsi/osl/osom/serviceactions/HandleManuallyAction.java
@@ -2,23 +2,21 @@ package org.etsi.osl.osom.serviceactions;
 
 import java.time.OffsetDateTime;
 import java.time.ZoneOffset;
-
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.JsonMappingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
-
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.etsi.osl.osom.management.ServiceOrderManager;
+import org.etsi.osl.tmf.common.model.service.Note;
+import org.etsi.osl.tmf.sim638.model.Service;
+import org.etsi.osl.tmf.sim638.model.ServiceActionQueueItem;
+import org.etsi.osl.tmf.sim638.model.ServiceUpdate;
 import org.flowable.engine.delegate.DelegateExecution;
 import org.flowable.engine.delegate.JavaDelegate;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
-import org.etsi.osl.tmf.common.model.service.Note;
-import org.etsi.osl.tmf.sim638.model.Service;
-import org.etsi.osl.tmf.sim638.model.ServiceActionQueueItem;
-import org.etsi.osl.tmf.sim638.model.ServiceUpdate;
 
 @Component(value = "HandleManuallyAction") //bean name
 public class HandleManuallyAction  implements JavaDelegate {
diff --git a/src/main/java/org/etsi/osl/osom/serviceactions/NFVODAY2config.java b/src/main/java/org/etsi/osl/osom/serviceactions/NFVODAY2config.java
index feee282977ed95bf745bf34b0ee76b574f9e9d88..6267c9289f3d875f5456e4413deed104bb5858db 100644
--- a/src/main/java/org/etsi/osl/osom/serviceactions/NFVODAY2config.java
+++ b/src/main/java/org/etsi/osl/osom/serviceactions/NFVODAY2config.java
@@ -6,22 +6,14 @@ import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.core.type.TypeReference;
 import com.fasterxml.jackson.databind.ObjectMapper;
-
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.etsi.osl.model.nfv.ScaleDescriptor;
 import org.etsi.osl.osom.management.AlarmsService;
 import org.etsi.osl.osom.management.ServiceOrderManager;
-import org.flowable.engine.delegate.DelegateExecution;
-import org.flowable.engine.delegate.JavaDelegate;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Component;
-
-import org.etsi.osl.model.ScaleDescriptor;
 import org.etsi.osl.tmf.common.model.Any;
 import org.etsi.osl.tmf.common.model.EValueType;
 import org.etsi.osl.tmf.common.model.service.Characteristic;
@@ -29,6 +21,11 @@ import org.etsi.osl.tmf.common.model.service.Note;
 import org.etsi.osl.tmf.sim638.model.Service;
 import org.etsi.osl.tmf.sim638.model.ServiceActionQueueItem;
 import org.etsi.osl.tmf.sim638.model.ServiceUpdate;
+import org.flowable.engine.delegate.DelegateExecution;
+import org.flowable.engine.delegate.JavaDelegate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
 
 @Component(value = "NFVODAY2config") //bean name
 public class NFVODAY2config implements JavaDelegate {
diff --git a/src/main/java/org/etsi/osl/osom/serviceactions/NFVONSTerminateTask.java b/src/main/java/org/etsi/osl/osom/serviceactions/NFVONSTerminateTask.java
index 439101f1f0043c3c1d6145be140f4b7a96fc4f13..6a73fcc754b35e02fd004b50f48b071394b70321 100644
--- a/src/main/java/org/etsi/osl/osom/serviceactions/NFVONSTerminateTask.java
+++ b/src/main/java/org/etsi/osl/osom/serviceactions/NFVONSTerminateTask.java
@@ -3,26 +3,23 @@ package org.etsi.osl.osom.serviceactions;
 import java.time.OffsetDateTime;
 import java.time.ZoneOffset;
 import java.util.Date;
-
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.JsonMappingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
-
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.etsi.osl.model.nfv.DeploymentDescriptor;
 import org.etsi.osl.osom.management.ServiceOrderManager;
+import org.etsi.osl.tmf.common.model.service.Note;
+import org.etsi.osl.tmf.sim638.model.Service;
+import org.etsi.osl.tmf.sim638.model.ServiceActionQueueItem;
+import org.etsi.osl.tmf.sim638.model.ServiceUpdate;
 import org.flowable.engine.delegate.DelegateExecution;
 import org.flowable.engine.delegate.JavaDelegate;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 
-import org.etsi.osl.model.DeploymentDescriptor;
-import org.etsi.osl.tmf.common.model.service.Note;
-import org.etsi.osl.tmf.sim638.model.Service;
-import org.etsi.osl.tmf.sim638.model.ServiceActionQueueItem;
-import org.etsi.osl.tmf.sim638.model.ServiceUpdate;
-
 @Component(value = "NFVONSTerminateTask") //bean name
 public class NFVONSTerminateTask  implements JavaDelegate {
 
diff --git a/src/main/java/org/etsi/osl/osom/serviceactions/NSActionRequestPayload.java b/src/main/java/org/etsi/osl/osom/serviceactions/NSActionRequestPayload.java
index eb58af78aeee9d769f237bcdbb1d693a3ae8577a..0119c9fb52657e0d033d4772d74c55831da71d81 100644
--- a/src/main/java/org/etsi/osl/osom/serviceactions/NSActionRequestPayload.java
+++ b/src/main/java/org/etsi/osl/osom/serviceactions/NSActionRequestPayload.java
@@ -23,7 +23,6 @@ package org.etsi.osl.osom.serviceactions;
 
 import java.util.LinkedHashMap;
 import java.util.Map;
-
 import com.fasterxml.jackson.annotation.JsonAnySetter;
 import com.fasterxml.jackson.annotation.JsonInclude.Include;
 import com.fasterxml.jackson.core.JsonProcessingException;
diff --git a/src/main/java/org/etsi/osl/osom/serviceactions/ServiceActionCheck.java b/src/main/java/org/etsi/osl/osom/serviceactions/ServiceActionCheck.java
index 68e1ab20f74c6784da45eaf985df596ce506b412..00269a8028cf3396f7fa0fcae647d740e4030a2d 100644
--- a/src/main/java/org/etsi/osl/osom/serviceactions/ServiceActionCheck.java
+++ b/src/main/java/org/etsi/osl/osom/serviceactions/ServiceActionCheck.java
@@ -3,15 +3,9 @@ package org.etsi.osl.osom.serviceactions;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.JsonMappingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
-
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.etsi.osl.osom.management.ServiceOrderManager;
-import org.flowable.engine.delegate.DelegateExecution;
-import org.flowable.engine.delegate.JavaDelegate;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Component;
 import org.etsi.osl.tmf.common.model.UserPartRoleType;
 import org.etsi.osl.tmf.common.model.service.ResourceRef;
 import org.etsi.osl.tmf.common.model.service.ServiceRef;
@@ -19,6 +13,11 @@ import org.etsi.osl.tmf.prm669.model.RelatedParty;
 import org.etsi.osl.tmf.sim638.model.Service;
 import org.etsi.osl.tmf.sim638.model.ServiceActionQueueAction;
 import org.etsi.osl.tmf.sim638.model.ServiceActionQueueItem;
+import org.flowable.engine.delegate.DelegateExecution;
+import org.flowable.engine.delegate.JavaDelegate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
 
 @Component(value = "serviceActionCheck") //bean name
 public class ServiceActionCheck implements JavaDelegate {
@@ -80,7 +79,9 @@ public class ServiceActionCheck implements JavaDelegate {
 				execution.setVariable("saction", "HandleActiveStateChanged");
 			} else if ( item.getAction().equals( ServiceActionQueueAction.EVALUATE_STATE_CHANGE_TOINACTIVE  ) ) {
 				execution.setVariable("saction", "HandleInactiveStateChanged");
-			} else if ( item.getAction().equals( ServiceActionQueueAction.EVALUATE_CHARACTERISTIC_CHANGED  ) || item.getAction().equals( ServiceActionQueueAction.EVALUATE_CHARACTERISTIC_CHANGED_MANODAY2  ) ) {
+			} else if ( item.getAction().equals( ServiceActionQueueAction.EVALUATE_CHARACTERISTIC_CHANGED  ) 
+			              || item.getAction().equals( ServiceActionQueueAction.EVALUATE_CHILD_CHARACTERISTIC_CHANGED  ) 
+			              || item.getAction().equals( ServiceActionQueueAction.EVALUATE_CHARACTERISTIC_CHANGED_MANODAY2  ) ) {
 				
 				execution.setVariable("saction", "HandleEvaluateService");// default
 				
diff --git a/src/main/java/org/etsi/osl/osom/serviceactions/ServiceActivationAction.java b/src/main/java/org/etsi/osl/osom/serviceactions/ServiceActivationAction.java
index dc2fa17a7992c036ea9d9cc9450429341b622dce..9bad34bfbeee443f09bc3cadef41b94456c4da9a 100644
--- a/src/main/java/org/etsi/osl/osom/serviceactions/ServiceActivationAction.java
+++ b/src/main/java/org/etsi/osl/osom/serviceactions/ServiceActivationAction.java
@@ -2,21 +2,14 @@ package org.etsi.osl.osom.serviceactions;
 
 import java.time.OffsetDateTime;
 import java.time.ZoneOffset;
-
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.JsonMappingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
-
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.etsi.osl.osom.lcm.LCMRulesController;
 import org.etsi.osl.osom.lcm.LCMRulesExecutorVariables;
 import org.etsi.osl.osom.management.ServiceOrderManager;
-import org.flowable.engine.delegate.DelegateExecution;
-import org.flowable.engine.delegate.JavaDelegate;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Component;
 import org.etsi.osl.tmf.common.model.service.Note;
 import org.etsi.osl.tmf.lcm.model.ELCMRulePhase;
 import org.etsi.osl.tmf.scm633.model.ServiceSpecification;
@@ -25,6 +18,11 @@ import org.etsi.osl.tmf.sim638.model.ServiceActionQueueItem;
 import org.etsi.osl.tmf.sim638.model.ServiceUpdate;
 import org.etsi.osl.tmf.so641.model.ServiceOrder;
 import org.etsi.osl.tmf.so641.model.ServiceOrderItem;
+import org.flowable.engine.delegate.DelegateExecution;
+import org.flowable.engine.delegate.JavaDelegate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
 
 @Component(value = "ServiceActivationAction") //bean name
 public class ServiceActivationAction  implements JavaDelegate {
diff --git a/src/main/java/org/etsi/osl/osom/serviceactions/ServiceEvaluateAction.java b/src/main/java/org/etsi/osl/osom/serviceactions/ServiceEvaluateAction.java
index 8679313e67115ad735eafac05368e351d2f0cf75..c95463c0fa338ab8e924a711475448fd9f0bf6f9 100644
--- a/src/main/java/org/etsi/osl/osom/serviceactions/ServiceEvaluateAction.java
+++ b/src/main/java/org/etsi/osl/osom/serviceactions/ServiceEvaluateAction.java
@@ -2,21 +2,14 @@ package org.etsi.osl.osom.serviceactions;
 
 import java.time.OffsetDateTime;
 import java.time.ZoneOffset;
-
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.JsonMappingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
-
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.etsi.osl.osom.lcm.LCMRulesController;
 import org.etsi.osl.osom.lcm.LCMRulesExecutorVariables;
 import org.etsi.osl.osom.management.ServiceOrderManager;
-import org.flowable.engine.delegate.DelegateExecution;
-import org.flowable.engine.delegate.JavaDelegate;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Component;
 import org.etsi.osl.tmf.common.model.Any;
 import org.etsi.osl.tmf.common.model.service.Characteristic;
 import org.etsi.osl.tmf.common.model.service.Note;
@@ -29,6 +22,11 @@ import org.etsi.osl.tmf.so641.model.ServiceOrder;
 import org.etsi.osl.tmf.so641.model.ServiceOrderItem;
 import org.etsi.osl.tmf.stm653.model.ServiceTest;
 import org.etsi.osl.tmf.stm653.model.ServiceTestUpdate;
+import org.flowable.engine.delegate.DelegateExecution;
+import org.flowable.engine.delegate.JavaDelegate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
 
 @Component(value = "ServiceEvaluateAction") //bean name
 public class ServiceEvaluateAction  implements JavaDelegate {
diff --git a/src/main/java/org/etsi/osl/osom/serviceactions/ServiceInactiveAction.java b/src/main/java/org/etsi/osl/osom/serviceactions/ServiceInactiveAction.java
index 1fad4f5237843156f408b6caf512729503f9091a..8dba93d3fe909a4d8e1f727adcb25e56179387d8 100644
--- a/src/main/java/org/etsi/osl/osom/serviceactions/ServiceInactiveAction.java
+++ b/src/main/java/org/etsi/osl/osom/serviceactions/ServiceInactiveAction.java
@@ -2,21 +2,14 @@ package org.etsi.osl.osom.serviceactions;
 
 import java.time.OffsetDateTime;
 import java.time.ZoneOffset;
-
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.JsonMappingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
-
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.etsi.osl.osom.lcm.LCMRulesController;
 import org.etsi.osl.osom.lcm.LCMRulesExecutorVariables;
 import org.etsi.osl.osom.management.ServiceOrderManager;
-import org.flowable.engine.delegate.DelegateExecution;
-import org.flowable.engine.delegate.JavaDelegate;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Component;
 import org.etsi.osl.tmf.common.model.service.Note;
 import org.etsi.osl.tmf.lcm.model.ELCMRulePhase;
 import org.etsi.osl.tmf.scm633.model.ServiceSpecification;
@@ -25,6 +18,11 @@ import org.etsi.osl.tmf.sim638.model.ServiceActionQueueItem;
 import org.etsi.osl.tmf.sim638.model.ServiceUpdate;
 import org.etsi.osl.tmf.so641.model.ServiceOrder;
 import org.etsi.osl.tmf.so641.model.ServiceOrderItem;
+import org.flowable.engine.delegate.DelegateExecution;
+import org.flowable.engine.delegate.JavaDelegate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
 
 @Component(value = "ServiceInactiveAction") //bean name
 public class ServiceInactiveAction  implements JavaDelegate {
diff --git a/src/main/java/org/etsi/osl/osom/serviceactions/fetchAndTerminateScheduledServices.java b/src/main/java/org/etsi/osl/osom/serviceactions/fetchAndTerminateScheduledServices.java
index b28385ba58e90c28dd2d084d891252beda8bf18d..312276dbb026ce9bb221c656703ac9fd347592e8 100644
--- a/src/main/java/org/etsi/osl/osom/serviceactions/fetchAndTerminateScheduledServices.java
+++ b/src/main/java/org/etsi/osl/osom/serviceactions/fetchAndTerminateScheduledServices.java
@@ -1,16 +1,15 @@
 package org.etsi.osl.osom.serviceactions;
 
 import java.util.List;
-
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.etsi.osl.osom.management.ServiceOrderManager;
+import org.etsi.osl.tmf.common.model.service.ServiceStateType;
+import org.etsi.osl.tmf.sim638.model.ServiceUpdate;
 import org.flowable.engine.delegate.DelegateExecution;
 import org.flowable.engine.delegate.JavaDelegate;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
-import org.etsi.osl.tmf.common.model.service.ServiceStateType;
-import org.etsi.osl.tmf.sim638.model.ServiceUpdate;
 
 @Component(value = "fetchAndTerminateScheduledServices") // bean name
 public class fetchAndTerminateScheduledServices implements JavaDelegate {
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 6f930df9c4a8ad41d40998004d5e6bc7bde5d0c1..fd9ed495e9e7ac6aac458ce40f605294166ee911 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -1,5 +1,5 @@
 server:
-  port: 13100
+  port: 13689
     
 spring:
   application:
diff --git a/src/main/resources/banner.txt b/src/main/resources/banner.txt
new file mode 100644
index 0000000000000000000000000000000000000000..74229cd400fb31f76673214d76c0256f438e4ccc
--- /dev/null
+++ b/src/main/resources/banner.txt
@@ -0,0 +1,11 @@
+   ___                   ____  _ _          
+  / _ \ _ __   ___ _ __ / ___|| (_) ___ ___ 
+ | | | | '_ \ / _ \ '_ \\___ \| | |/ __/ _ \
+ | |_| | |_) |  __/ | | |___) | | | (_|  __/
+  \___/| .__/ \___|_| |_|____/|_|_|\___\___|
+       |_|
+			   __          __________________
+			  / /  __ __  / __/_  __/ __/  _/
+			 / _ \/ // / / _/  / / _\ \_/ /  
+			/_.__/\_, / /___/ /_/ /___/___/  
+			     /___/                
\ No newline at end of file
diff --git a/src/test/java/org/etsi/osl/osom/ProcessOrderIntegrationTest.java b/src/test/java/org/etsi/osl/osom/ProcessOrderIntegrationTest.java
index 3a5c71602704de06a2caa0606bac4893c08a2b7f..7ef1c9d633fb72b3140eb9fbb2c7cc46881a8616 100644
--- a/src/test/java/org/etsi/osl/osom/ProcessOrderIntegrationTest.java
+++ b/src/test/java/org/etsi/osl/osom/ProcessOrderIntegrationTest.java
@@ -181,10 +181,10 @@ public class ProcessOrderIntegrationTest {
 		assertThat(spec).isInstanceOf(ServiceSpecification.class);
 
 		assertThat(spec.getServiceSpecCharacteristic().size()  ).isEqualTo(11);
-		assertThat(specCirros.getServiceSpecCharacteristic().size()  ).isEqualTo(10);
+		assertThat(specCirros.getServiceSpecCharacteristic().size()  ).isEqualTo(12);
 		assertThat(sorder.getOrderItem().stream().findFirst().get().getService().getServiceCharacteristic().size()  ).isEqualTo(2);
-		
-		assertThat(repositoryService.createProcessDefinitionQuery().count()).isEqualTo(14);
+
+		assertThat(repositoryService.createProcessDefinitionQuery().count()).isEqualTo(15);
 		assertThat(taskService.createTaskQuery().count()).isEqualTo(0);
 
 		assertThat( scmocked.getRequeestedDescriptor() ).isNull();
@@ -224,15 +224,17 @@ public class ProcessOrderIntegrationTest {
 		assertThat( aservice  ).isNotNull();
 		assertThat( aservice.getServiceCharacteristic().size()  ).isEqualTo(11);
 		assertThat( aserviceCirros  ).isNotNull();
-		assertThat( aserviceCirros.getServiceCharacteristic().size()  ).isEqualTo(10);
+		assertThat( aserviceCirros.getServiceCharacteristic().size()  ).isEqualTo(12);
 
 		assertThat(  aservice.getServiceCharacteristicByName("Quality Class").getValue().getValue() ).isEqualTo( "1" );
 		assertThat(  aservice.getServiceCharacteristicByName("cirros_2vnf_ns::OSM_CONFIG").getValue().getValue() ).contains( "eeeeeeee-8219-4580-9697-bf4a8f0a08f9" );
 		assertThat(  aservice.getServiceCharacteristicByName("cirros_2vnf_ns::SSHKEY").getValue().getValue() ).isEqualTo( "MCKEYTESTINORDERExampleConcatSSHKEY_EnhancedByRule" );
 		//check that the cirros_2vnf_ns::SSHKEY value from the service order has been passed properly to the related RFS service
 		assertThat(  aserviceCirros.getServiceCharacteristicByName("OSM_CONFIG").getValue().getValue() ).contains( "eeeeeeee-8219-4580-9697-bf4a8f0a08f9" );
-		assertThat(  aserviceCirros.getServiceCharacteristicByName("SSHKEY").getValue().getValue() ).isEqualTo( "MCKEYTESTINORDERExampleConcatSSHKEY_EnhancedByRule" );
-		
+        assertThat(  aserviceCirros.getServiceCharacteristicByName("SSHKEY").getValue().getValue() ).isEqualTo( "MCKEYTESTINORDERExampleConcatSSHKEY_EnhancedByRule" );
+        assertThat(  aserviceCirros.getServiceCharacteristicByName("AProgrammaticChar").getValue().getValue() ).isEqualTo( "AProgrammaticNSDIDValue" );
+        assertThat(  aserviceCirros.getServiceCharacteristicByName("Another ProgrammaticChar").getValue().getValue() ).isEqualTo( "AnotherValue" );
+        
 		
 		//we will further check LCM rules!
 		
diff --git a/src/test/java/org/etsi/osl/osom/SCMocked.java b/src/test/java/org/etsi/osl/osom/SCMocked.java
index f114c8bbb7c14775f06e71a202c713ce91d6e4ac..f4b391d55bef6e916c740f67efdb5c39120cf0b3 100644
--- a/src/test/java/org/etsi/osl/osom/SCMocked.java
+++ b/src/test/java/org/etsi/osl/osom/SCMocked.java
@@ -34,9 +34,9 @@ import org.apache.commons.io.IOUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
-import org.etsi.osl.model.DeploymentDescriptor;
-import org.etsi.osl.model.DeploymentDescriptorStatus;
-import org.etsi.osl.model.NetworkServiceDescriptor;
+import org.etsi.osl.model.nfv.DeploymentDescriptor;
+import org.etsi.osl.model.nfv.DeploymentDescriptorStatus;
+import org.etsi.osl.model.nfv.NetworkServiceDescriptor;
 import org.etsi.osl.tmf.lcm.model.LCMRuleSpecification;
 import org.etsi.osl.tmf.so641.model.ServiceOrder;
 import jakarta.validation.Valid;
@@ -222,7 +222,12 @@ public class SCMocked {
 			InputStream in = new FileInputStream( sspec );
 			sspectext = IOUtils.toString(in, "UTF-8");
 			return sspectext;			
-		}
+		} else if ( id.equals("89e027b5-24a9-4db7-b422-a963c9feeb7a") ) {
+          File sspec = new File( "src/test/resources/LcmCirrosRule1Test_CREATION.json" );
+          InputStream in = new FileInputStream( sspec );
+          sspectext = IOUtils.toString(in, "UTF-8");
+          return sspectext;           
+      }
 		
 		
 		
@@ -241,13 +246,24 @@ public class SCMocked {
 				
 		String sspectext = null;
 
-		if ( specid.equals("f2b74f90-4140-4895-80d1-ef243398117b") ) {
-			File sspec = new File( "src/test/resources/LcmRuleListSpecTest.json" );
-			InputStream in = new FileInputStream( sspec );
-			sspectext = IOUtils.toString(in, "UTF-8");
-			return sspectext;		
-			
-		}
+		if ( phaseName.equals("PRE_PROVISION") ) {
+	        if ( specid.equals("f2b74f90-4140-4895-80d1-ef243398117b") ) {
+	            File sspec = new File( "src/test/resources/LcmRuleListSpecTest.json" );
+	            InputStream in = new FileInputStream( sspec );
+	            sspectext = IOUtils.toString(in, "UTF-8");
+	            return sspectext;       
+	            
+	        }		  
+		} else if ( phaseName.equals("CREATION") ) {
+          if ( specid.equals("f2b74f90-4140-4895-80d1-ef243398117b") ) {
+              File sspec = new File( "src/test/resources/LcmRuleListSpecTest_CREATION.json" );
+              InputStream in = new FileInputStream( sspec );
+              sspectext = IOUtils.toString(in, "UTF-8");
+              return sspectext;     
+
+            
+        }         
+    }
 		
 
 		return "[]";	
diff --git a/src/test/java/org/etsi/osl/osom/SPMocked.java b/src/test/java/org/etsi/osl/osom/SPMocked.java
index 0220ebab835a24e8b5c24e3142eb29d52ee0964f..3b2597974637451c67b9f46e95e0951d8ca26e7e 100644
--- a/src/test/java/org/etsi/osl/osom/SPMocked.java
+++ b/src/test/java/org/etsi/osl/osom/SPMocked.java
@@ -36,8 +36,8 @@ import org.apache.commons.logging.LogFactory;
 import com.fasterxml.jackson.annotation.JsonInclude;
 import com.fasterxml.jackson.databind.ObjectMapper;
 
-import org.etsi.osl.model.DeploymentDescriptor;
-import org.etsi.osl.model.DeploymentDescriptorStatus;
+import org.etsi.osl.model.nfv.DeploymentDescriptor;
+import org.etsi.osl.model.nfv.DeploymentDescriptorStatus;
 import org.etsi.osl.tmf.common.model.Any;
 import org.etsi.osl.tmf.pm632.model.Characteristic;
 import org.etsi.osl.tmf.pm632.model.ContactMedium;
diff --git a/src/test/resources/LcmCirrosRule1Test_CREATION.json b/src/test/resources/LcmCirrosRule1Test_CREATION.json
new file mode 100644
index 0000000000000000000000000000000000000000..591a7fddfe5f58dc6508e047a9427f996cfa52d4
--- /dev/null
+++ b/src/test/resources/LcmCirrosRule1Test_CREATION.json
@@ -0,0 +1,31 @@
+{
+  "uuid": "40f027b5-24a9-4db7-b422-a963c9feeb7a",
+  "lastUpdate": null,
+  "@baseType": "BaseRootEntity",
+  "@schemaLocation": null,
+  "@type": "BaseEntity",
+  "href": null,
+  "name": "OSM config depending on class",
+  "description": "LCM Rule for specification Cirros Test OSM config depending on class",
+  "lifecycleStatus": "In study",
+  "version": null,
+  "validFor": null,
+  "id": "40f027b5-24a9-4db7-b422-a963c9feeb7a",
+  "lcmrulephase": "CREATION",
+  "content": "<xml xmlns=\"https://developers.google.com/blockly/xml\"><block type=\"controls_if\" id=\"ezIW/Lp7?d[u/A8`K!VJ\" x=\"43\" y=\"110\"><mutation elseif=\"1\" else=\"1\"></mutation><value name=\"IF0\"><block type=\"logic_compare\" id=\"*ekZcAZ_,XZz{;WB,g5W\"><field name=\"OP\">EQ</field><value name=\"A\"><block type=\"getcharval_number\" id=\"WExcKv2H!)rCDI[uT?rm\"><field name=\"AVALUE\">Quality Class</field></block></value><value name=\"B\"><block type=\"literal_integer\" id=\"l1f(k)+1cls`GzX_ZE6A\"><field name=\"NUM\">2</field></block></value></block></value><statement name=\"DO0\"><block type=\"setcharval_string\" id=\"?gCX.V1+thXHr$r!X|^G\"><field name=\"NAMELBL\">cirros_2vnf_ns::OSM_CONFIG</field><value name=\"AVALUE\"><block type=\"osm_nsd_config\" id=\"*$NIN2?#,%E{nqD.C,[s\"><value name=\"NSDID\"><block type=\"literal_text\" id=\"%1c/IuALgz7!-]C;U.2+\"><field name=\"TEXT\">0b6853fc-8219-4580-9697-bf4a8f0a08f9</field></block></value><value name=\"VIMID\"><block type=\"literal_text\" id=\"wZ*p#fJKDLhjG|d3a1}m\"><field name=\"TEXT\">c224eb48-419e-4097-8a1d-11ec1bba087f</field></block></value></block></value></block></statement><value name=\"IF1\"><block type=\"logic_compare\" id=\"RCkz91fa[t(de{:W8z*u\"><field name=\"OP\">EQ</field><value name=\"A\"><block type=\"getcharval_number\" id=\"YyY0L]PctE#C%jytEtsY\"><field name=\"AVALUE\">Quality Class</field></block></value><value name=\"B\"><block type=\"literal_integer\" id=\"$3qYjNBhPmr%U,I=*;0o\"><field name=\"NUM\">1</field></block></value></block></value><statement name=\"DO1\"><block type=\"setcharval_string\" id=\"$q~oAJSlb(%rrZBx,Uf!\"><field name=\"NAMELBL\">cirros_2vnf_ns::OSM_CONFIG</field><value name=\"AVALUE\"><block type=\"osm_nsd_config\" id=\"CTljtvin=U?WpZD@@qQ~\"><value name=\"NSDID\"><block type=\"literal_text\" id=\"1V.Jyzj3d0x:gTCq^w+?\"><field name=\"TEXT\">eeeeeeee-8219-4580-9697-bf4a8f0a08f9</field></block></value><value name=\"VIMID\"><block type=\"literal_text\" id=\"qZOf!wzN~MaebefmIvx7\"><field name=\"TEXT\">eeeeeeee-419e-4097-8a1d-11ec1bba087f</field></block></value></block></value></block></statement><statement name=\"ELSE\"><block type=\"setcharval_string\" id=\"JQY#%xIXLvPK*DzyCR{_\"><field name=\"NAMELBL\">cirros_2vnf_ns::OSM_CONFIG</field><value name=\"AVALUE\"><block type=\"osm_nsd_config\" id=\"a-tUtYg:mDk^Qbe@CMGt\"><value name=\"NSDID\"><block type=\"literal_text\" id=\"ZY)+_ENMfz?mjiX.7O4:\"><field name=\"TEXT\">cccccccc-8219-4580-9697-bf4a8f0a08f9</field></block></value><value name=\"VIMID\"><block type=\"literal_text\" id=\"alJ:3%fxZr73K~qQQ`G%\"><field name=\"TEXT\">cccccccc-419e-4097-8a1d-11ec1bba087f</field></block></value></block></value></block></statement></block></xml>",
+  "code": "{\r\n java.util.HashMap<String,String> charvals = new java.util.HashMap<>();\r\n charvals.put(\"AProgrammaticChar\",\"AProgrammaticNSDIDValue\");\r\n charvals.put(\"Another ProgrammaticChar\",\"AnotherValue\");\r\n createServiceRefIf(\"cirros_2vnf_ns\", !(getCharValFromStringType(\"cirros_2vnf_ns::PackagingFormat\").equals(\"\")==true), charvals);\r\n }",
+
+  "serviceSpecs": [
+    {
+      "@baseType": "BaseEntity",
+      "@schemaLocation": null,
+      "@type": null,
+      "href": null,
+      "name": "Cirros Test",
+      "version": null,
+      "targetServiceSchema": null,
+      "@referredType": null,
+      "id": "f2b74f90-4140-4895-80d1-ef243398117b"
+    }
+  ]
+}
\ No newline at end of file
diff --git a/src/test/resources/LcmRuleListSpecTest_CREATION.json b/src/test/resources/LcmRuleListSpecTest_CREATION.json
new file mode 100644
index 0000000000000000000000000000000000000000..70d831ff9745b75eba91b09121d23755d1fcc4a4
--- /dev/null
+++ b/src/test/resources/LcmRuleListSpecTest_CREATION.json
@@ -0,0 +1,9 @@
+[
+  {
+    "uuid": "89e027b5-24a9-4db7-b422-a963c9feeb7a",
+    "id": "89e027b5-24a9-4db7-b422-a963c9feeb7a",
+    "name": "OSM config depending on class",
+    "description": "LCM Rule for specification Cirros Test OSM config depending on class",
+    "lcmrulephase": "CREATION"
+  }
+]
\ No newline at end of file
diff --git a/src/test/resources/cirros_2vnf_ns_RFS.json b/src/test/resources/cirros_2vnf_ns_RFS.json
index 9e6b49f9abc24fb49e8b8c842591331980345e05..1a4aea6710f0a32930970847e752a1d0ca92c1e7 100644
--- a/src/test/resources/cirros_2vnf_ns_RFS.json
+++ b/src/test/resources/cirros_2vnf_ns_RFS.json
@@ -499,6 +499,100 @@
       },
       "@valueSchemaLocation": null,
       "id": "5c50dbe4-42f9-4d12-bed9-987c75b592d6"
+    },
+    {
+      "uuid": "3a50dbe4-42f9-4d12-bed9-987c75b592d6",
+      "@baseType": "BaseRootEntity",
+      "@schemaLocation": null,
+      "@type": "org.etsi.osl.tmf.scm633.model.ServiceSpecCharacteristic",
+      "href": null,
+      "name": "AProgrammaticChar",
+      "configurable": false,
+      "description": "AProgrammaticChar dscription",
+      "extensible": null,
+      "isUnique": null,
+      "maxCardinality": 1,
+      "minCardinality": 1,
+      "regex": null,
+      "valueType": "TEXT",
+      "serviceSpecCharRelationship": [],
+      "serviceSpecCharacteristicValue": [
+        {
+          "uuid": "54e00574-6d22-4f48-8bd4-17884f895c13",
+          "@baseType": "BaseEntity",
+          "@schemaLocation": null,
+          "@type": null,
+          "href": null,
+          "isDefault": true,
+          "rangeInterval": null,
+          "regex": null,
+          "unitOfMeasure": "N/A",
+          "valueFrom": null,
+          "valueTo": null,
+          "valueType": null,
+          "validFor": {
+            "endDateTime": "2040-09-06T23:48:24+03:00",
+            "startDateTime": "2020-09-06T23:48:24+03:00"
+          },
+          "value": {
+            "value": "xzzx",
+            "alias": "AliASAProgrammaticChar"
+          }
+        }
+      ],
+      "validFor": {
+        "endDateTime": "2040-09-06T23:48:24+03:00",
+        "startDateTime": "2020-09-06T23:48:24+03:00"
+      },
+      "@valueSchemaLocation": null,
+      "id": "5c50dbe4-42f9-4d12-bed9-987c75b592d6"
+    },
+    {
+      "uuid": "3a22dbe4-42f9-4d12-bed9-987c75b592d6",
+      "@baseType": "BaseRootEntity",
+      "@schemaLocation": null,
+      "@type": "org.etsi.osl.tmf.scm633.model.ServiceSpecCharacteristic",
+      "href": null,
+      "name": "Another ProgrammaticChar",
+      "configurable": false,
+      "description": "Another AProgrammaticChar dscription",
+      "extensible": null,
+      "isUnique": null,
+      "maxCardinality": 1,
+      "minCardinality": 1,
+      "regex": null,
+      "valueType": "TEXT",
+      "serviceSpecCharRelationship": [],
+      "serviceSpecCharacteristicValue": [
+        {
+          "uuid": "54e00522-6d22-4f48-8bd4-17884f895c13",
+          "@baseType": "BaseEntity",
+          "@schemaLocation": null,
+          "@type": null,
+          "href": null,
+          "isDefault": true,
+          "rangeInterval": null,
+          "regex": null,
+          "unitOfMeasure": "N/A",
+          "valueFrom": null,
+          "valueTo": null,
+          "valueType": null,
+          "validFor": {
+            "endDateTime": "2040-09-06T23:48:24+03:00",
+            "startDateTime": "2020-09-06T23:48:24+03:00"
+          },
+          "value": {
+            "value": "aawwaa",
+            "alias": "AliASAProgrammaticChar"
+          }
+        }
+      ],
+      "validFor": {
+        "endDateTime": "2040-09-06T23:48:24+03:00",
+        "startDateTime": "2020-09-06T23:48:24+03:00"
+      },
+      "@valueSchemaLocation": null,
+      "id": "5c50dbe4-42f9-4d12-bed9-987c75b592d6"
     }
   ],
   "serviceSpecRelationship": [],