diff --git a/src/main/java/org/etsi/osl/osom/management/MetricoOrchestrationService.java b/src/main/java/org/etsi/osl/osom/management/MetricoOrchestrationService.java
index 32661e71f2baff3114f056e43dde480e0fd84194..ca3fcbf87741a081272afeb1d4ed643fb76cb5e5 100644
--- a/src/main/java/org/etsi/osl/osom/management/MetricoOrchestrationService.java
+++ b/src/main/java/org/etsi/osl/osom/management/MetricoOrchestrationService.java
@@ -40,13 +40,10 @@ import java.util.List;
 @Component(value = "metricoOrchestrationService") //bean name
 public class MetricoOrchestrationService implements JavaDelegate {
 
-	private static final transient Log logger = LogFactory.getLog(NFVOrchestrationService.class.getName());
-
-	@Autowired
-	private ProducerTemplate producerTemplate;
-	@Value("{PM_MEASUREMENT_COLLECTION_JOB_ADD}")
-	private String PM_MEASUREMENT_COLLECTION_JOB_ADD = "";
+	private static final transient Log logger = LogFactory.getLog(MetricoOrchestrationService.class.getName());
 
+	
+	
 	@Value("${spring.application.name}")
 	private String compname;
 	
@@ -71,20 +68,23 @@ public class MetricoOrchestrationService implements JavaDelegate {
 
 			Characteristic serviceCharacteristic;
 			MeasurementCollectionJobFVO mcjFVO = new MeasurementCollectionJobFVO();
+            mcjFVO.setCreationTime( OffsetDateTime.now());
+            mcjFVO.setLastModifiedTime( OffsetDateTime.now());
+
 			mcjFVO.setProducingApplicationId(aService.getId());
 
 			serviceCharacteristic = aService.getServiceCharacteristicByName("_MT_CHARACTERISTIC_NAME");
-			String characteristicName = String.valueOf(serviceCharacteristic.getValue());
+			String characteristicName = String.valueOf(serviceCharacteristic.getValue().getValue());
 			mcjFVO.setOutputFormat(characteristicName);
 
 			serviceCharacteristic = aService.getServiceCharacteristicByName("_MT_SERVICEUUID");
-			String cfs_id = String.valueOf(serviceCharacteristic.getValue());
+			String cfs_id = String.valueOf(serviceCharacteristic.getValue().getValue());
 			mcjFVO.setConsumingApplicationId(cfs_id);
 
 			serviceCharacteristic = aService.getServiceCharacteristicByName("_MT_END_TIME");
-			String endTimeString = 	String.valueOf(serviceCharacteristic.getValue());
+			String endTimeString = 	String.valueOf(serviceCharacteristic.getValue().getValue());
 			ScheduleDefinitionFVO scheduleDefinition = new ScheduleDefinitionFVO();
-			if (endTimeString != null) {
+			if (endTimeString != null && !endTimeString.equals("")) {
 				OffsetDateTime endTime = convertStringToOffsetDateTime(endTimeString, DateTimeFormat.ISO.DATE_TIME );
 				scheduleDefinition.setScheduleDefinitionEndTime(endTime);
 			} else{
@@ -93,8 +93,8 @@ public class MetricoOrchestrationService implements JavaDelegate {
 			}
 
 			serviceCharacteristic = aService.getServiceCharacteristicByName("_MT_START_TIME");
-			String startTimeString = String.valueOf(serviceCharacteristic.getValue());
-			if (startTimeString != null) {
+			String startTimeString = String.valueOf(serviceCharacteristic.getValue().getValue());
+			if (startTimeString != null&& !startTimeString.equals("")) {
 				OffsetDateTime startTime = convertStringToOffsetDateTime(startTimeString, DateTimeFormat.ISO.DATE_TIME );
 				scheduleDefinition.setScheduleDefinitionStartTime(startTime);
 			} else{
@@ -106,10 +106,10 @@ public class MetricoOrchestrationService implements JavaDelegate {
 			mcjFVO.setScheduleDefinition(scheduleDefinitions);
 
 			serviceCharacteristic = aService.getServiceCharacteristicByName("_MT_RECURRING_INTERVAL");
-			String recurringIntervalString = String.valueOf(serviceCharacteristic.getValue());
+			String recurringIntervalString = String.valueOf(serviceCharacteristic.getValue().getValue());
 			if (recurringIntervalString != null) {
 				if (Granularity.contains(recurringIntervalString)){
-					Granularity recurringInterval = Granularity.valueOf(recurringIntervalString);
+					Granularity recurringInterval = Granularity.valueOf(recurringIntervalString.toUpperCase());
 					mcjFVO.setGranularity(recurringInterval);
 				} else {
 					logger.error("Invalid _MT_RECURRING_INTERVAL value. Valid values are:" + Granularity.getPossibleValues() + " It will be set to 1 minute.");
@@ -122,14 +122,14 @@ public class MetricoOrchestrationService implements JavaDelegate {
 			}
 
 			serviceCharacteristic = aService.getServiceCharacteristicByName("_MT_TYPE");
-			String monitoringType = String.valueOf(serviceCharacteristic.getValue());
+			String monitoringType = String.valueOf(serviceCharacteristic.getValue().getValue());
 			DataAccessEndpointFVO dataAccessEndpoint = new DataAccessEndpointFVO();
 			dataAccessEndpoint.setApiType(monitoringType);
 
 			serviceCharacteristic = aService.getServiceCharacteristicByName("_MT_QUERY");
-			String monitoringQuery = String.valueOf(serviceCharacteristic.getValue());
+			String monitoringQuery = String.valueOf(serviceCharacteristic.getValue().getValue());
 			serviceCharacteristic = aService.getServiceCharacteristicByName("_MT_URL");
-			String monitoringURL = String.valueOf(serviceCharacteristic.getValue());
+			String monitoringURL = String.valueOf(serviceCharacteristic.getValue().getValue());
             try {
                 URI monitoringURI = createUri(monitoringURL, monitoringQuery);
 				dataAccessEndpoint.setUri(monitoringURI);
@@ -141,7 +141,7 @@ public class MetricoOrchestrationService implements JavaDelegate {
 			dataAccessEndpoints.add(dataAccessEndpoint);
 			mcjFVO.setDataAccessEndpoint(dataAccessEndpoints);
 
-			MeasurementCollectionJob mcj = addMeasurementCollectionJob(mcjFVO);
+			MeasurementCollectionJob mcj = serviceOrderManager.addMeasurementCollectionJob(mcjFVO);
 
 			if  (mcj != null){
 
@@ -159,12 +159,14 @@ public class MetricoOrchestrationService implements JavaDelegate {
 				successNoteItem.setDate(OffsetDateTime.now(ZoneOffset.UTC).toString());
 				successNoteItem.setAuthor(compname);
 				su.addNoteItem(successNoteItem);
-				Service supd = serviceOrderManager.updateService(aService.getId(), su, false);
 
 			} else {
 				logger.error("Measurement Collection Job was not created.");
+                su.setState(ServiceStateType.TERMINATED);
 			}
 
+            Service supd = serviceOrderManager.updateService(aService.getId(), su, false);
+
 
 
 		}
@@ -221,24 +223,6 @@ public class MetricoOrchestrationService implements JavaDelegate {
 		}
 	}
 
-	public MeasurementCollectionJob addMeasurementCollectionJob(MeasurementCollectionJobFVO mcjFVO) {
-
-		logger.debug("Will create a new Measurement Collection Job");
-		try {
-			Object response = producerTemplate.
-					requestBody( PM_MEASUREMENT_COLLECTION_JOB_ADD, mcjFVO);
-			if ( !(response instanceof String)) {
-				logger.error("Measurement Collection Job object is wrong.");
-				return null;
-			}
-			logger.debug("retrieveMeasurementCollectionJobById response is: " + response);
-			MeasurementCollectionJob mcj = toJsonObj( (String)response, MeasurementCollectionJob.class);
-			return mcj;
-		}catch (Exception e) {
-			logger.error("Cannot create a new Measurement Collection Job. " + e.toString());
-		}
-		return null;
-	}
 
 
 	/**
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 4d794094b5595c6a248cb197dd74612c8c5b45ec..54bc509931a98b683ede8b543afa2c023a7af1a4 100644
--- a/src/main/java/org/etsi/osl/osom/management/ServiceOrderManager.java
+++ b/src/main/java/org/etsi/osl/osom/management/ServiceOrderManager.java
@@ -35,6 +35,8 @@ 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.etsi.osl.tmf.pm628.model.MeasurementCollectionJob;
+import org.etsi.osl.tmf.pm628.model.MeasurementCollectionJobFVO;
 import org.etsi.osl.tmf.pm632.model.Organization;
 import org.etsi.osl.tmf.rcm634.model.LogicalResourceSpecification;
 import org.etsi.osl.tmf.rcm634.model.ResourceSpecification;
@@ -194,7 +196,11 @@ public class ServiceOrderManager {
 
     @Value("${CATALOG_GET_RESOURCESPEC_BY_ID}")
     private String CATALOG_GET_RESOURCESPEC_BY_ID = "";
-	
+
+    @Value("${PM_MEASUREMENT_COLLECTION_JOB_ADD}")
+    private String PM_MEASUREMENT_COLLECTION_JOB_ADD = "";
+
+    
 	@Transactional
 	public void processOrder(ServiceOrder serviceOrder) {
 
@@ -1141,6 +1147,27 @@ public class ServiceOrderManager {
       return null;
   }
   
+  
+  public MeasurementCollectionJob addMeasurementCollectionJob(MeasurementCollectionJobFVO mcjFVO) {
+
+    logger.debug("Will create a new Measurement Collection Job");
+    try {
+        Object response = template.
+                requestBody( PM_MEASUREMENT_COLLECTION_JOB_ADD, toJsonString(mcjFVO));
+        if ( !(response instanceof String)) {
+            logger.error("Measurement Collection Job object is wrong.");
+            return null;
+        }
+        logger.debug("retrieveMeasurementCollectionJobById response is: " + response);
+        MeasurementCollectionJob mcj = toJsonObj( (String)response, MeasurementCollectionJob.class);
+        return mcj;
+    }catch (Exception e) {
+        logger.error("Cannot create a new Measurement Collection Job. " + e.toString());
+    }
+    return null;
+}
+
+