Merge "Set controllerType to uppercase for LCM"
diff --git a/adapters/mso-adapter-utils/src/main/java/org/openecomp/mso/adapters/vdu/VduArtifact.java b/adapters/mso-adapter-utils/src/main/java/org/openecomp/mso/adapters/vdu/VduArtifact.java
index 394d13d..7696f3b 100644
--- a/adapters/mso-adapter-utils/src/main/java/org/openecomp/mso/adapters/vdu/VduArtifact.java
+++ b/adapters/mso-adapter-utils/src/main/java/org/openecomp/mso/adapters/vdu/VduArtifact.java
@@ -20,6 +20,9 @@
 

 package org.openecomp.mso.adapters.vdu;

 

+import java.util.Arrays;

+import java.util.Objects;

+

 public class VduArtifact {

 	

 	// Enumerate the types of artifacts permitted.  This may need to be a variable string

@@ -59,6 +62,19 @@
 	}

 	public void setType(ArtifactType type) {

 		this.type = type;

-	}	

-	

+	}

+

+	@Override

+	public boolean equals(Object o) {

+		if (this == o) {

+			return true;

+		}

+		if (o == null || getClass() != o.getClass()) {

+			return false;

+		}

+		VduArtifact that = (VduArtifact) o;

+		return Objects.equals(name, that.name) &&

+				Arrays.equals(content, that.content) &&

+				type == that.type;

+	}

 }
\ No newline at end of file
diff --git a/adapters/mso-vnf-adapter/src/main/java/org/openecomp/mso/adapters/vdu/mapper/VfModuleCustomizationToVduMapper.java b/adapters/mso-vnf-adapter/src/main/java/org/openecomp/mso/adapters/vdu/mapper/VfModuleCustomizationToVduMapper.java
index b04f3c3..d26d3f6 100644
--- a/adapters/mso-vnf-adapter/src/main/java/org/openecomp/mso/adapters/vdu/mapper/VfModuleCustomizationToVduMapper.java
+++ b/adapters/mso-vnf-adapter/src/main/java/org/openecomp/mso/adapters/vdu/mapper/VfModuleCustomizationToVduMapper.java
@@ -20,7 +20,6 @@
 
 package org.openecomp.mso.adapters.vdu.mapper;
 
-import java.sql.SQLException;
 import java.util.List;
 import java.util.Map;
 import org.openecomp.mso.adapters.vdu.VduArtifact;
@@ -39,11 +38,10 @@
 
 	private static MsoLogger LOGGER = MsoLogger.getMsoLogger(MsoLogger.Catalog.RA);
 
-	public VduModelInfo mapVfModuleCustomizationToVdu(VfModuleCustomization vfModuleCustom) throws SQLException {
-		CatalogDatabase db = CatalogDatabase.getInstance();
+	public VduModelInfo mapVfModuleCustomizationToVdu(VfModuleCustomization vfModuleCustom) {
 		VduModelInfo vduModel = new VduModelInfo();
 		vduModel.setModelCustomizationUUID(vfModuleCustom.getModelCustomizationUuid());
-		try {
+		try (CatalogDatabase db = CatalogDatabase.getInstance()) {
 			// Map the cloud templates, attached files, and environment file
 			mapCloudTemplates(
 					db.getHeatTemplateByArtifactUuid(vfModuleCustom.getVfModule().getHeatTemplateArtifactUUId()),
@@ -51,22 +49,14 @@
 			mapCloudFiles(vfModuleCustom, vduModel);
 			mapEnvironment(db.getHeatEnvironmentByArtifactUuid(vfModuleCustom.getHeatEnvironmentArtifactUuid()),
 					vduModel);
-		} catch (SQLException e) {
-			LOGGER.debug("unhandled exception in mapVfModuleCustomizationToVdu", e);
-			throw new SQLException("Exception during mapVfModuleCustomizationToVdu " + e.getMessage());
-		} finally {
-			// Make sure DB session is closed
-			db.close();
 		}
-
 		return vduModel;
 	}
 
-	public VduModelInfo mapVfModuleCustVolumeToVdu(VfModuleCustomization vfModuleCustom) throws SQLException {
-		CatalogDatabase db = CatalogDatabase.getInstance();
+	public VduModelInfo mapVfModuleCustVolumeToVdu(VfModuleCustomization vfModuleCustom) {
 		VduModelInfo vduModel = new VduModelInfo();
 		vduModel.setModelCustomizationUUID(vfModuleCustom.getModelCustomizationUuid());
-		try {
+		try (CatalogDatabase db = CatalogDatabase.getInstance()) {
 			// Map the cloud templates, attached files, and environment file
 			mapCloudTemplates(
 					db.getHeatTemplateByArtifactUuid(vfModuleCustom.getVfModule().getVolHeatTemplateArtifactUUId()),
@@ -74,29 +64,20 @@
 			mapCloudFiles(vfModuleCustom, vduModel);
 			mapEnvironment(db.getHeatEnvironmentByArtifactUuid(vfModuleCustom.getVolEnvironmentArtifactUuid()),
 					vduModel);
-		} catch (SQLException e) {
-			LOGGER.debug("unhandled exception in mapVfModuleCustVolumeToVdu", e);
-			throw new SQLException("Exception during mapVfModuleCustVolumeToVdu " + e.getMessage());
-		} finally {
-			// Make sure DB session is closed
-			db.close();
 		}
-
 		return vduModel;
 	}
 
-	private void mapCloudTemplates(HeatTemplate heatTemplate, VduModelInfo vduModel) throws SQLException {
+	private void mapCloudTemplates(HeatTemplate heatTemplate, VduModelInfo vduModel) {
 		// TODO: These catalog objects will be refactored to be
 		// non-Heat-specific
-		CatalogDatabase db = CatalogDatabase.getInstance();
-		try {
+		try (CatalogDatabase db = CatalogDatabase.getInstance()) {
 			List<VduArtifact> vduArtifacts = vduModel.getArtifacts();
 
 			// Main template. Also set the VDU timeout based on the main
 			// template.
 			vduArtifacts.add(mapHeatTemplateToVduArtifact(heatTemplate, ArtifactType.MAIN_TEMPLATE));
 			vduModel.setTimeoutMinutes(heatTemplate.getTimeoutMinutes());
-			
 			// Nested templates
 			Map<String,Object> nestedTemplates = db.getNestedTemplates(heatTemplate.getArtifactUuid());
 			if (nestedTemplates != null) {
@@ -106,13 +87,9 @@
 					vduArtifacts.add(vduArtifact);
 				}
 			}
-			
 		} catch (IllegalArgumentException e) {
 			LOGGER.debug("unhandled exception in mapCloudTemplates", e);
 			throw new IllegalArgumentException("Exception during mapCloudTemplates " + e.getMessage());
-		} finally {
-			// Make sure DB session is closed
-			db.close();
 		}
 	}
 
@@ -124,26 +101,20 @@
 		return vduArtifact;
 	}
 
-	private void mapCloudFiles(VfModuleCustomization vfModuleCustom, VduModelInfo vduModel) throws SQLException {
+	private void mapCloudFiles(VfModuleCustomization vfModuleCustom, VduModelInfo vduModel) {
 		// TODO: These catalog objects will be refactored to be
 		// non-Heat-specific
-		CatalogDatabase db = CatalogDatabase.getInstance();
-
-		try{
+		try (CatalogDatabase db = CatalogDatabase.getInstance()) {
 			Map <String, HeatFiles> heatFiles = db.getHeatFilesForVfModule(vfModuleCustom.getVfModuleModelUuid());
 			if (heatFiles != null) {
 				for (HeatFiles heatFile: heatFiles.values()) {
-					mapCloudFileToVduArtifact(heatFile, ArtifactType.TEXT_FILE);
+					vduModel.getArtifacts().add(mapCloudFileToVduArtifact(heatFile, ArtifactType.TEXT_FILE));
 				}
 			}
 		} catch (IllegalArgumentException e) {
 			LOGGER.debug("unhandled exception in mapCloudFiles", e);
 			throw new IllegalArgumentException("Exception during mapCloudFiles " + e.getMessage());
-		} finally {
-			// Make sure DB session is closed
-			db.close();
 		}
-		
 	}
 
 	private VduArtifact mapCloudFileToVduArtifact(HeatFiles heatFile, ArtifactType artifactType) {
diff --git a/adapters/mso-vnf-adapter/src/test/java/org/openecomp/mso/adapters/vdu/mapper/VfModuleCustomizationToVduMapperTest.java b/adapters/mso-vnf-adapter/src/test/java/org/openecomp/mso/adapters/vdu/mapper/VfModuleCustomizationToVduMapperTest.java
new file mode 100644
index 0000000..ffa6bcd
--- /dev/null
+++ b/adapters/mso-vnf-adapter/src/test/java/org/openecomp/mso/adapters/vdu/mapper/VfModuleCustomizationToVduMapperTest.java
@@ -0,0 +1,158 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.openecomp.mso.adapters.vdu.mapper;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.util.HashMap;
+import java.util.Map;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.openecomp.mso.adapters.vdu.VduArtifact;
+import org.openecomp.mso.adapters.vdu.VduArtifact.ArtifactType;
+import org.openecomp.mso.adapters.vdu.VduModelInfo;
+import org.openecomp.mso.db.catalog.CatalogDatabase;
+import org.openecomp.mso.db.catalog.beans.HeatEnvironment;
+import org.openecomp.mso.db.catalog.beans.HeatFiles;
+import org.openecomp.mso.db.catalog.beans.HeatTemplate;
+import org.openecomp.mso.db.catalog.beans.VfModule;
+import org.openecomp.mso.db.catalog.beans.VfModuleCustomization;
+import org.powermock.api.mockito.PowerMockito;
+import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.powermock.modules.junit4.PowerMockRunner;
+
+@RunWith(PowerMockRunner.class)
+@PrepareForTest({CatalogDatabase.class})
+public class VfModuleCustomizationToVduMapperTest {
+
+    private static final String HEAT_TEMPLATE_ARTIFACT_UUID = "testHeatTemplate";
+    private static final String VF_MODULE_MODEL_UUID = "vfModuleUuid";
+    private static final String HEAT_ENV_ARTIFACT_UUID = "heatEnvArtifactUuid";
+    private static final String MAIN_TEMPLATE_NAME = "testTempName";
+    private static final String MAIN_TEMPLATE_BODY = "testTempBody";
+    private static final String NESTED_TEMPLATE_KEY = "testKey";
+    private static final String NESTED_TEMPLATE_VALUE = "nestedTemplateTest";
+    private static final String HEAT_FILE_NAME = "heatFileName";
+    private static final String HEAT_FILE_BODY = "heatFileBodyTest";
+    private static final String HEAT_ENV_NAME = "heatEnvName";
+    private static final String HEAT_ENV = "heatEnv";
+    private static final String VOL_HEAT_TEMPLATE_ARTIFACT = "volEnvArtifact";
+    private static final String VOL_ENV_ARTIFACT_UUID = "volEnvArtifactUuid";
+
+    private VfModuleCustomizationToVduMapper testedObject;
+    private CatalogDatabase catalogDatabaseMock;
+
+    @Before
+    public void init() {
+        PowerMockito.mockStatic(CatalogDatabase.class);
+        catalogDatabaseMock = mock(CatalogDatabase.class);
+        testedObject = new VfModuleCustomizationToVduMapper();
+        PowerMockito.when(CatalogDatabase.getInstance()).thenReturn(catalogDatabaseMock);
+        when(catalogDatabaseMock.getNestedTemplates(HEAT_TEMPLATE_ARTIFACT_UUID)).thenReturn(createNestedTemplates());
+        when(catalogDatabaseMock.getHeatFilesForVfModule(VF_MODULE_MODEL_UUID)).thenReturn(createHeatFileMap());
+    }
+
+    @Test
+    public void mapVfModuleCustomizationToVdu_successful() {
+        when(catalogDatabaseMock.getHeatTemplateByArtifactUuid(HEAT_TEMPLATE_ARTIFACT_UUID))
+                .thenReturn(createHeatTemplate());
+        when(catalogDatabaseMock.getHeatEnvironmentByArtifactUuid(HEAT_ENV_ARTIFACT_UUID))
+                .thenReturn(createHeatEnvironment());
+        VduModelInfo result = testedObject.mapVfModuleCustomizationToVdu(createVfModuleCustomization());
+        assertThat(result.getArtifacts()).containsExactly(createExpectedResultArray());
+    }
+
+    @Test
+    public void mapVfModuleCustVolumeToVdu_successful() {
+        when(catalogDatabaseMock.getHeatTemplateByArtifactUuid(VOL_HEAT_TEMPLATE_ARTIFACT))
+                .thenReturn(createHeatTemplate());
+        when(catalogDatabaseMock.getHeatEnvironmentByArtifactUuid(VOL_ENV_ARTIFACT_UUID))
+                .thenReturn(createHeatEnvironment());
+        VduModelInfo result = testedObject.mapVfModuleCustVolumeToVdu(createVfModuleCustomization());
+        assertThat(result.getArtifacts()).containsExactly(createExpectedResultArray());
+    }
+
+    private VfModuleCustomization createVfModuleCustomization() {
+        VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
+        VfModule vfModule = new VfModule();
+        vfModule.setHeatTemplateArtifactUUId(HEAT_TEMPLATE_ARTIFACT_UUID);
+        vfModule.setVolHeatTemplateArtifactUUId(VOL_HEAT_TEMPLATE_ARTIFACT);
+        vfModuleCustomization.setVfModule(vfModule);
+        vfModuleCustomization.setVfModuleModelUuid(VF_MODULE_MODEL_UUID);
+        vfModuleCustomization.setHeatEnvironmentArtifactUuid(HEAT_ENV_ARTIFACT_UUID);
+        vfModuleCustomization.setVolEnvironmentArtifactUuid(VOL_ENV_ARTIFACT_UUID);
+        return vfModuleCustomization;
+    }
+
+    private HeatTemplate createHeatTemplate() {
+        HeatTemplate heatTemplate = new HeatTemplate();
+        heatTemplate.setTemplateName(MAIN_TEMPLATE_NAME);
+        heatTemplate.setTemplateBody(MAIN_TEMPLATE_BODY);
+        heatTemplate.setArtifactUuid(HEAT_TEMPLATE_ARTIFACT_UUID);
+        return heatTemplate;
+    }
+
+    private Map<String, Object> createNestedTemplates() {
+        Map<String, Object> map = new HashMap<>();
+        map.put(NESTED_TEMPLATE_KEY, NESTED_TEMPLATE_VALUE);
+        return map;
+    }
+
+    private Map<String, HeatFiles> createHeatFileMap() {
+        HeatFiles heatFiles = new HeatFiles();
+        heatFiles.setFileName(HEAT_FILE_NAME);
+        heatFiles.setFileBody(HEAT_FILE_BODY);
+        Map<String, HeatFiles> map = new HashMap<>();
+        map.put("heatFileKey", heatFiles);
+        return map;
+    }
+
+    private HeatEnvironment createHeatEnvironment() {
+        HeatEnvironment heatEnvironment = new HeatEnvironment();
+        heatEnvironment.setName(HEAT_ENV_NAME);
+        heatEnvironment.setEnvironment(HEAT_ENV);
+        return heatEnvironment;
+    }
+
+
+    private VduArtifact[] createExpectedResultArray() {
+        VduArtifact[] vduArtifactsArray = new VduArtifact[4];
+        vduArtifactsArray[0] = new VduArtifact(MAIN_TEMPLATE_NAME, MAIN_TEMPLATE_BODY.getBytes(),
+                ArtifactType.MAIN_TEMPLATE);
+        vduArtifactsArray[1] = new VduArtifact(NESTED_TEMPLATE_KEY, NESTED_TEMPLATE_VALUE.getBytes(),
+                ArtifactType.NESTED_TEMPLATE);
+        vduArtifactsArray[2] = createVduArtifact(HEAT_FILE_NAME, HEAT_FILE_BODY, ArtifactType.TEXT_FILE);
+        vduArtifactsArray[3] = createVduArtifact(HEAT_ENV_NAME, HEAT_ENV, ArtifactType.ENVIRONMENT);
+        return vduArtifactsArray;
+    }
+
+    private VduArtifact createVduArtifact(String name, String content, ArtifactType artifactType) {
+        VduArtifact vduArtifact = new VduArtifact();
+        vduArtifact.setName(name);
+        vduArtifact.setContent(content.getBytes());
+        vduArtifact.setType(artifactType);
+        return vduArtifact;
+    }
+
+}
diff --git a/asdc-controller/src/main/java/org/openecomp/mso/asdc/client/ASDCController.java b/asdc-controller/src/main/java/org/openecomp/mso/asdc/client/ASDCController.java
index c452089..867efd5 100644
--- a/asdc-controller/src/main/java/org/openecomp/mso/asdc/client/ASDCController.java
+++ b/asdc-controller/src/main/java/org/openecomp/mso/asdc/client/ASDCController.java
@@ -492,17 +492,17 @@
     	try {

     		LOGGER.info(MessageEnum.ASDC_RECEIVE_SERVICE_NOTIF, "***WRITE FILE ARTIFACT NAME", "ASDC", artifact.getArtifactName());

 

-    		FileOutputStream outFile = new FileOutputStream(System.getProperty("mso.config.path") + "/ASDC" + "/" + artifact.getArtifactName());

-    		outFile.write(payloadBytes, 0, payloadBytes.length);

-    		outFile.close();

-    		} catch (Exception e) { 

-    			LOGGER.debug("Exception :",e);

-                LOGGER.error(MessageEnum.ASDC_ARTIFACT_DOWNLOAD_FAIL,

-        				artifact.getArtifactName (),

-        				artifact.getArtifactURL (),

-        				artifact.getArtifactUUID (),

-        				resultArtifact.getDistributionMessageResult (), "", "", MsoLogger.ErrorCode.DataError, "ASDC write to file failed"); 

-            } 

+    		try (FileOutputStream outFile = new FileOutputStream(System.getProperty("mso.config.path") + "/ASDC" + "/" + artifact.getArtifactName())) {

+                outFile.write(payloadBytes, 0, payloadBytes.length);

+    		}

+        } catch (Exception e) {

+            LOGGER.debug("Exception :",e);

+            LOGGER.error(MessageEnum.ASDC_ARTIFACT_DOWNLOAD_FAIL,

+                    artifact.getArtifactName (),

+                    artifact.getArtifactURL (),

+                    artifact.getArtifactUUID (),

+                    resultArtifact.getDistributionMessageResult (), "", "", MsoLogger.ErrorCode.DataError, "ASDC write to file failed");

+        }

     	

     }

 

diff --git a/bpmn/MSOCommonBPMN/pom.xml b/bpmn/MSOCommonBPMN/pom.xml
index 3174135..1d255c4 100644
--- a/bpmn/MSOCommonBPMN/pom.xml
+++ b/bpmn/MSOCommonBPMN/pom.xml
@@ -416,12 +416,12 @@
 		<dependency>
 			<groupId>org.onap.appc.client</groupId>
 			<artifactId>client-lib</artifactId>
-			<version>1.3.0-SNAPSHOT</version>
+			<version>1.3.0</version>
 		</dependency>
 		<dependency>
   			<groupId>org.onap.appc.client</groupId>
   			<artifactId>client-kit</artifactId>
-  			<version>1.3.0-SNAPSHOT</version>
+  			<version>1.3.0</version>
 		</dependency>
 		<dependency>
 			<groupId>org.aspectj</groupId>
diff --git a/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/OofHoming.groovy b/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/OofHoming.groovy
index df6b27f..1b5a2ec 100644
--- a/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/OofHoming.groovy
+++ b/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/OofHoming.groovy
@@ -266,6 +266,8 @@
                             if (flavorsArrayList != null && flavorsArrayList.size != 0) {
                                 resource.getHomingSolution().setFlavors(flavorsArrayList)
                                 execution.setVariable(cloudRegionId + "_flavorList", flavorsArrayList)
+                                utils.log("DEBUG", "***** _flavorList is: " + flavorsArrayList.toString() +
+                                        " *****", "true")
                             }
 
                             if (inventoryType.equalsIgnoreCase("service")) {
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateVFCNSResource.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateVFCNSResource.groovy
index 1ec1df1..fd819fd 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateVFCNSResource.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateVFCNSResource.groovy
@@ -241,7 +241,7 @@
         String serviceId = execution.getVariable("serviceInstanceId")

         String addRelationPayload = """<relationship xmlns="http://org.openecomp.aai.inventory/v11">

                                             <related-to>service-instance</related-to>

-                                            <related-link>/aai/v11/business/customers/customer/${globalSubscriberId}/service-subscriptions/service-subscription/${serviceType}/service-instances/service-instance/${nsInstanceId}</related-link>

+                                            <related-link>/aai/v11/business/customers/customer/${globalSubscriberId}/service-subscriptions/service-subscription/${serviceType}/service-instances/service-instance/${serviceId}</related-link>

                                             <relationship-data>

                                                 <relationship-key>customer.global-customer-id</relationship-key>

                                                 <relationship-value>${globalSubscriberId}</relationship-value>

@@ -252,12 +252,12 @@
                                             </relationship-data>

                                            <relationship-data>

                                                 <relationship-key>service-instance.service-instance-id</relationship-key>

-                                                <relationship-value>${nsInstanceId}</relationship-value>

+                                                <relationship-value>${serviceId}</relationship-value>

                                             </relationship-data>           

                                         </relationship>"""

         String endpoint = execution.getVariable("URN_aai_endpoint")  

         utils.log("INFO","Add Relationship req:\n" + addRelationPayload,  isDebugEnabled)

-        String url = endpoint + "/aai/v11/business/customers/customer/" + globalSubscriberId + "/service-subscriptions/service-subscription/" + serviceType + "/service-instances/service-instance/" + serviceId + "/relationship-list/relationship"

+        String url = endpoint + "/aai/v11/business/customers/customer/" + globalSubscriberId + "/service-subscriptions/service-subscription/" + serviceType + "/service-instances/service-instance/" + nsInstanceId + "/relationship-list/relationship"

         APIResponse aaiRsp = executeAAIPutCall(execution, url, addRelationPayload)

         utils.log("INFO","aai response status code:" + aaiRsp.getStatusCode(),  isDebugEnabled)

         utils.log("INFO","aai response content:" + aaiRsp.getResponseBodyAsString(),  isDebugEnabled)

diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateVfModuleInfra.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateVfModuleInfra.groovy
index 2fe11bf..0a53526 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateVfModuleInfra.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateVfModuleInfra.groovy
@@ -232,6 +232,7 @@
 			execution.setVariable(prefix + 'vfModuleId', newVfModuleId)

 			execution.setVariable('actionHealthCheck', Action.HealthCheck)

 			execution.setVariable('actionConfigScaleOut', Action.ConfigScaleOut)

+			execution.setVariable('controllerType', "APPC")

 			def controllerType = execution.getVariable('controllerType')

 			execution.setVariable(prefix + 'controllerType', controllerType)

 			execution.setVariable('healthCheckIndex0', 0)

diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateResources.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateResources.groovy
index 9cdbdfd..ab84168 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateResources.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateResources.groovy
@@ -105,7 +105,10 @@
         List<NetworkResource> networkResourceList = new ArrayList<NetworkResource>()
 
         List<Resource> sequencedResourceList = new ArrayList<Resource>()
-        def resourceSequence = BPMNProperties.getResourceSequenceProp()
+        
+        String serviceDecompose = execution.getVariable("serviceDecomposition")
+        String serviceModelName = jsonUtil.getJsonValue(serviceDecompose, "serviceResources.modelInfo.modelName")
+        def resourceSequence = BPMNProperties.getResourceSequenceProp(serviceModelName)
 
         if(resourceSequence != null) {
             // sequence is defined in config file
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteVFCNetworkServiceInstance.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteVFCNetworkServiceInstance.groovy
index f0ecbab..d3e89df 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteVFCNetworkServiceInstance.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteVFCNetworkServiceInstance.groovy
@@ -107,7 +107,7 @@
      */

     public void deleteNSRelationship(DelegateExecution execution) {

         def isDebugEnabled=execution.getVariable("isDebugLogEnabled")

-        utils.log("INFO"," ***** addNSRelationship *****",  isDebugEnabled)

+        utils.log("INFO"," ***** deleteNSRelationship *****",  isDebugEnabled)

         String nsInstanceId = execution.getVariable("resourceInstanceId")

         if(nsInstanceId == null || nsInstanceId == ""){

             utils.log("INFO"," Delete NS failed",  isDebugEnabled)

@@ -133,13 +133,13 @@
                                             </relationship-data>           

                                         </relationship>"""

         String endpoint = execution.getVariable("URN_aai_endpoint")

-        utils.log("INFO","Add Relationship req:\n" + deleteRelationPayload,  isDebugEnabled)

+        utils.log("INFO","Delete Relationship req:\n" + deleteRelationPayload,  isDebugEnabled)

         String url = endpoint + "/aai/v11/business/customers/customer/" + globalSubscriberId + "/service-subscriptions/service-subscription/" + serviceType + "/service-instances/service-instance/" + serviceId + "/relationship-list/relationship"

 

         APIResponse aaiRsp = executeAAIDeleteCall(execution, url, deleteRelationPayload)

         utils.log("INFO","aai response status code:" + aaiRsp.getStatusCode(),  isDebugEnabled)

         utils.log("INFO","aai response content:" + aaiRsp.getResponseBodyAsString(),  isDebugEnabled)

-        utils.log("INFO"," *****Exit addNSRelationship *****",  isDebugEnabled)

+        utils.log("INFO"," *****Exit deleteNSRelationship *****",  isDebugEnabled)

     }

 

     public APIResponse executeAAIDeleteCall(DelegateExecution execution, String url, String payload){

diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoScaleVFCNetworkServiceInstance.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoScaleVFCNetworkServiceInstance.groovy
index 321741b..c1ffc5a 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoScaleVFCNetworkServiceInstance.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoScaleVFCNetworkServiceInstance.groovy
@@ -103,6 +103,7 @@
         for (int i = 0; i < nsReqStr.length; i++) {
             JSONObject reqBodyJsonObj = new JSONObject(nsReqStr[i])
             String nsInstanceId = reqBodyJsonObj.getJSONObject("nsScaleParameters").getString("nsInstanceId")
+            String nodeTemplateUUID = reqBodyJsonObj.getJSONObject("nsOperationKey").getString("nodeTemplateUUID")
             reqBodyJsonObj.getJSONObject("nsScaleParameters").remove("nsInstanceId")
             String reqBody = reqBodyJsonObj.toString()
 
@@ -112,15 +113,19 @@
 
             String returnCode = apiResponse.getStatusCode()
             String aaiResponseAsString = apiResponse.getResponseBodyAsString()
-            String jobId = "";
+            String jobId = ""
             if (returnCode == "200" || returnCode == "202") {
                 jobId = jsonUtil.getJsonValue(aaiResponseAsString, "jobId")
             }
             utils.log("INFO", "scaleNetworkService get a ns scale job Id:" + jobId, isDebugEnabled)
             execution.setVariable("jobId", jobId)
+            execution.setVariable("nodeTemplateUUID", nodeTemplateUUID)
 
             String isScaleFinished = ""
 
+            if(jobId =="" || jobId == null){
+                continue
+            }
             // query the requested network service scale status, if finished, then start the next one, otherwise, wait
             while (isScaleFinished != "finished" && isScaleFinished != "error"){
                 timeDelay()
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoUpdateE2EServiceInstance.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoUpdateE2EServiceInstance.groovy
index dff1ecf..74c991e 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoUpdateE2EServiceInstance.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoUpdateE2EServiceInstance.groovy
@@ -126,11 +126,16 @@
 			

 			// user params

 			String uuiRequest = execution.getVariable("uuiRequest")

+            

+			// target model Invariant uuid

+			String modelInvariantUuid = jsonUtil.getJsonValue(uuiRequest, "service.serviceInvariantUuid")

+			execution.setVariable("modelInvariantUuid", modelInvariantUuid)            

+			utils.log("INFO", "modelInvariantUuid: " + modelInvariantUuid, isDebugEnabled)            

+            

 			// target model uuid

 			String modelUuid = jsonUtil.getJsonValue(uuiRequest, "service.serviceUuid")

-			execution.setVariable("modelUuid", modelUuid)

-			

-			utils.log("INFO","modelUuid: " + modelUuid, isDebugEnabled)

+			execution.setVariable("modelUuid", modelUuid)			

+			utils.log("INFO", "modelUuid: " + modelUuid, isDebugEnabled)

 				

 		} catch (BpmnError e) {

 			throw e;

@@ -327,9 +332,20 @@
 		String msg = ""

 		utils.log("INFO"," ***** preProcessAAIPUT *****",  isDebugEnabled)

 

-		String modelUuid = execution.getVariable("modelUuid")

+

 		String serviceInstanceVersion = execution.getVariable("serviceInstanceVersion")

-		execution.setVariable("GENPS_serviceResourceVersion", serviceInstanceVersion)

+		//execution.setVariable("GENPS_serviceResourceVersion", serviceInstanceVersion)

+        

+		//requestDetails.modelInfo.for AAI PUT servieInstanceData

+		//requestDetails.requestInfo. for AAI GET/PUT serviceInstanceData

+		String serviceInstanceName = execution.getVariable("serviceInstanceName")

+		String serviceInstanceId = execution.getVariable("serviceInstanceId")

+		//aai serviceType and Role can be setted as fixed value now.

+		String aaiServiceType = "E2E Service"

+		String aaiServiceRole = "E2E Service"

+		String modelInvariantUuid = execution.getVariable("modelInvariantUuid")

+		String modelUuid = execution.getVariable("modelUuid")

+

 

 		AaiUtil aaiUriUtil = new AaiUtil(this)

 		utils.log("INFO","start create aai uri: " + aaiUriUtil, isDebugEnabled)	

@@ -341,7 +357,13 @@
 		//update target model to aai

 		String serviceInstanceData =

 				"""<service-instance xmlns=\"${namespace}\">

-			       <model-version-id">${modelUuid}</model-version-id>

+                    <service-instance-id>${serviceInstanceId}</service-instance-id>

+                    <service-instance-name>${serviceInstanceName}</service-instance-name>

+                    <service-type>${aaiServiceType}</service-type>

+                    <service-role>${aaiServiceRole}</service-role>

+                    <resource-version>${serviceInstanceVersion}</resource-version>

+                    <model-invariant-id>${modelInvariantUuid}</model-invariant-id>

+                    <model-version-id>${modelUuid}</model-version-id>                    

 				 </service-instance>""".trim()

 

 		execution.setVariable("serviceInstanceData", serviceInstanceData)

diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoUpdateE2EServiceInstanceRollback.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoUpdateE2EServiceInstanceRollback.groovy
index 1e70f95..a55ca02 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoUpdateE2EServiceInstanceRollback.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoUpdateE2EServiceInstanceRollback.groovy
@@ -25,7 +25,9 @@
 import groovy.json.*
 
 import org.openecomp.mso.bpmn.core.json.JsonUtils
+import org.openecomp.mso.bpmn.common.scripts.AaiUtil
 import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil
 import org.openecomp.mso.bpmn.common.scripts.SDNCAdapterUtils
 import org.openecomp.mso.bpmn.core.RollbackData
 import org.openecomp.mso.bpmn.core.WorkflowException
@@ -64,6 +66,7 @@
 public class DoUpdateE2EServiceInstanceRollback extends AbstractServiceTaskProcessor{
 
 	String Prefix="DUPDSIRB_"
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
 
 	public void preProcessRequest(DelegateExecution execution) {
 		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
@@ -259,13 +262,36 @@
 		String msg = ""
 		utils.log("INFO"," ***** preProcessAAIPUT *****",  isDebugEnabled)
 
-		String modelUuid = execution.getVariable("model-version-id-original")
 		String serviceInstanceVersion = execution.getVariable("serviceInstanceVersion_n")
-		execution.setVariable("GENPS_serviceResourceVersion", serviceInstanceVersion)
+//		execution.setVariable("GENPS_serviceResourceVersion", serviceInstanceVersion)
+        
+		//requestDetails.modelInfo.for AAI PUT servieInstanceData
+		//requestDetails.requestInfo. for AAI GET/PUT serviceInstanceData
+		String serviceInstanceName = execution.getVariable("serviceInstanceName")
+		String serviceInstanceId = execution.getVariable("serviceInstanceId")
+		//aai serviceType and Role can be setted as fixed value now.
+		String aaiServiceType = "E2E Service"
+		String aaiServiceRole = "E2E Service"
+		String modelInvariantUuid = execution.getVariable("modelInvariantUuid")
+		String modelUuid = execution.getVariable("model-version-id-original")
+
+		//AAI PUT      
+		AaiUtil aaiUriUtil = new AaiUtil(this)
+		utils.log("INFO","start create aai uri: " + aaiUriUtil, isDebugEnabled)
+		String aai_uri = aaiUriUtil.getBusinessCustomerUri(execution)
+		utils.log("INFO","aai_uri: " + aai_uri, isDebugEnabled)
+		String namespace = aaiUriUtil.getNamespaceFromUri(aai_uri)
+		utils.log("INFO","namespace: " + namespace, isDebugEnabled)
 
 		String serviceInstanceData =
 				"""<service-instance xmlns=\"${namespace}\">
-			       <resource-version">${modelUuid}</resource-version>
+                    <service-instance-id>${serviceInstanceId}</service-instance-id>
+                    <service-instance-name>${serviceInstanceName}</service-instance-name>
+                    <service-type>${aaiServiceType}</service-type>
+                    <service-role>${aaiServiceRole}</service-role>
+                    <resource-version>${serviceInstanceVersion}</resource-version>
+                    <model-invariant-id>${modelInvariantUuid}</model-invariant-id>
+                    <model-version-id>${modelUuid}</model-version-id>   
 				 </service-instance>""".trim()
 
 		execution.setVariable("serviceInstanceData", serviceInstanceData)
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/ScaleCustomE2EServiceInstance.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/ScaleCustomE2EServiceInstance.groovy
index 58f644d..4eca37b 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/ScaleCustomE2EServiceInstance.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/ScaleCustomE2EServiceInstance.groovy
@@ -125,9 +125,7 @@
             String operationId = execution.getVariable("operationId")
             String serviceInstanceId = execution.getVariable("serviceInstanceId")
             // RESTResponse for API Handler (APIH) Reply Task
-            String scaleServiceRestRequest = """{"service":{"serviceId":"${serviceInstanceId}","operationId":"${
-                operationId
-            }"}}""".trim()
+            String scaleServiceRestRequest = """{"operationId":"${operationId}"}""".trim()
             utils.log("DEBUG", " sendSyncResponse to APIH:" + "\n" + scaleServiceRestRequest, isDebugEnabled)
             sendWorkflowResponse(execution, 202, scaleServiceRestRequest)
             execution.setVariable("sentSyncResponse", true)
@@ -256,7 +254,7 @@
         utils.log("INFO", " ======== STARTED prepareInitServiceOperationStatus Process ======== ", isDebugEnabled)
         try{
             String serviceId = execution.getVariable("serviceInstanceId")
-            String serviceName = execution.getVariable("serviceInstanceName")
+            //String serviceName = execution.getVariable("serviceInstanceName")
             String operationId = execution.getVariable("operationId")
             String operationType = "SCALE"
             String userId = ""
@@ -280,7 +278,6 @@
                             <ns:updateServiceOperationStatus xmlns:ns="http://org.openecomp.mso/requestsdb">
                             <serviceId>${serviceId}</serviceId>
                             <operationId>${operationId}</operationId>
-                            <serviceName>${serviceName}</serviceName>
                             <operationType>${operationType}</operationType>
                             <userId>${userId}</userId>
                             <result>${result}</result>
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/UpdateCustomE2EServiceInstance.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/UpdateCustomE2EServiceInstance.groovy
index a964a7e..f3f1a96 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/UpdateCustomE2EServiceInstance.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/UpdateCustomE2EServiceInstance.groovy
@@ -413,7 +413,6 @@
                             <ns:updateServiceOperationStatus xmlns:ns="http://org.openecomp.mso/requestsdb">
                             <serviceId>${serviceId}</serviceId>
                             <operationId>${operationId}</operationId>
-                            <serviceName>${serviceName}</serviceName>
                             <operationType>${operationType}</operationType>
                             <userId>${userId}</userId>
                             <result>${result}</result>
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/properties/BPMNProperties.java b/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/properties/BPMNProperties.java
index dbb552c..64d8530 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/properties/BPMNProperties.java
+++ b/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/properties/BPMNProperties.java
@@ -47,8 +47,8 @@
         return value;
     }
 
-    public static List<String> getResourceSequenceProp() {
-        String resourceSequence = getProperty("mso.workflow.custom.VolTE.resource.sequence", null);
+    public static List<String> getResourceSequenceProp(String input) {
+        String resourceSequence = getProperty("mso.workflow.custom." + input + ".resource.sequence", null);
         if (resourceSequence != null) {
             return Arrays.asList(resourceSequence.split(","));
         }
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateCustom3rdONAPServiceInstance.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateCustom3rdONAPServiceInstance.bpmn
new file mode 100644
index 0000000..71f4a28
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateCustom3rdONAPServiceInstance.bpmn
@@ -0,0 +1,391 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.11.3">
+  <bpmn:process id="CreateCustomE2EServiceInstance" name="CreateCustomE2EServiceInstance" isExecutable="true">
+    <bpmn:startEvent id="StartEvent_00qj6ro" name="Create SI Start Flow">
+      <bpmn:outgoing>SequenceFlow_0s2spoq</bpmn:outgoing>
+    </bpmn:startEvent>
+    <bpmn:subProcess id="SubProcess_0ka59nc" name="Sub-process for UnexpectedErrors" triggeredByEvent="true">
+      <bpmn:scriptTask id="ScriptTask_0u3lw39" name="Handle Unexpected Error" scriptFormat="groovy">
+        <bpmn:incoming>SequenceFlow_1dsbjjb</bpmn:incoming>
+        <bpmn:outgoing>SequenceFlow_1yay321</bpmn:outgoing>
+        <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.common.scripts.*
+ExceptionUtil ex = new ExceptionUtil()
+ex.processJavaException(execution)]]></bpmn:script>
+      </bpmn:scriptTask>
+      <bpmn:startEvent id="StartEvent_0v1ffn4">
+        <bpmn:outgoing>SequenceFlow_1dsbjjb</bpmn:outgoing>
+        <bpmn:errorEventDefinition />
+      </bpmn:startEvent>
+      <bpmn:endEvent id="EndEvent_0eznq6x">
+        <bpmn:incoming>SequenceFlow_1yay321</bpmn:incoming>
+      </bpmn:endEvent>
+      <bpmn:sequenceFlow id="SequenceFlow_1dsbjjb" name="" sourceRef="StartEvent_0v1ffn4" targetRef="ScriptTask_0u3lw39" />
+      <bpmn:sequenceFlow id="SequenceFlow_1yay321" name="" sourceRef="ScriptTask_0u3lw39" targetRef="EndEvent_0eznq6x" />
+    </bpmn:subProcess>
+    <bpmn:callActivity id="DoCreateE2EServiceInstance" name="Call DoCreateE2EServiceInstance&#10;" calledElement="DoCreateE2EServiceInstanceV3">
+      <bpmn:extensionElements>
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:out source="rollbackData" target="rollbackData" />
+        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+        <camunda:in source="serviceInstanceName" target="serviceInstanceName" />
+        <camunda:in source="serviceModelInfo" target="serviceModelInfo" />
+        <camunda:in source="productFamilyId" target="productFamilyId" />
+        <camunda:in source="disableRollback" target="disableRollback" />
+        <camunda:in source="serviceInputParams" target="serviceInputParams" />
+        <camunda:out source="rolledBack" target="rolledBack" />
+        <camunda:out source="serviceInstanceName" target="serviceInstanceName" />
+        <camunda:in source="failIfExists" target="failIfExists" />
+        <camunda:in source="globalSubscriberId" target="globalSubscriberId" />
+        <camunda:in source="subscriptionServiceType" target="subscriptionServiceType" />
+        <camunda:in sourceExpression="1610" target="sdncVersion" />
+        <camunda:in source="initialStatus" target="initialStatus" />
+        <camunda:in source="serviceType" target="serviceType" />
+        <camunda:in source="uuiRequest" target="uuiRequest" />
+        <camunda:in source="requestAction" target="operationType" />
+        <camunda:in source="operationId" target="operationId" />
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_19eilro</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0klbpxx</bpmn:outgoing>
+    </bpmn:callActivity>
+    <bpmn:endEvent id="EndEvent_0bpd6c0" name="End">
+      <bpmn:incoming>SequenceFlow_0yayvrf</bpmn:incoming>
+    </bpmn:endEvent>
+    <bpmn:scriptTask id="ScriptTask_1s09c7d" name="Pre Process Incoming Request" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0s2spoq</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0z4faf9</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def csi= new CreateCustomE2EServiceInstance()
+csi.preProcessRequest(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:scriptTask id="ScriptTask_0ttvn8r" name="Prepare Completion Request" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_14zu6wr</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0je30si</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def csi = new CreateCustomE2EServiceInstance()
+csi.prepareCompletionRequest(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:callActivity id="CallActivity_02fyxz0" name="Call CompleteMsoProcess" calledElement="CompleteMsoProcess">
+      <bpmn:extensionElements>
+        <camunda:in source="completionRequest" target="CompleteMsoProcessRequest" />
+        <camunda:in source="mso-request-id" target="mso-request-id" />
+        <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
+        <camunda:out source="CMSO_ResponseCode" target="CMSO_ResponseCode" />
+        <camunda:out source="CompleteMsoProcessResponse" target="CompleteMsoProcessResponse" />
+        <camunda:out source="CMSO_ErrorResponse" target="CMSO_ErrorResponse" />
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_0je30si</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0yayvrf</bpmn:outgoing>
+    </bpmn:callActivity>
+    <bpmn:subProcess id="SubProcess_0vaws86" name="Sub-process for FalloutHandler and Rollback" triggeredByEvent="true">
+      <bpmn:startEvent id="StartEvent_0dug28e">
+        <bpmn:outgoing>SequenceFlow_0e1r62n</bpmn:outgoing>
+        <bpmn:errorEventDefinition />
+      </bpmn:startEvent>
+      <bpmn:endEvent id="EndEvent_03wysuk">
+        <bpmn:incoming>SequenceFlow_1ysapam</bpmn:incoming>
+      </bpmn:endEvent>
+      <bpmn:scriptTask id="ScriptTask_0u8o9p2" name="Prepare Fallout Request" scriptFormat="groovy">
+        <bpmn:incoming>SequenceFlow_0n9pexp</bpmn:incoming>
+        <bpmn:outgoing>SequenceFlow_01umodj</bpmn:outgoing>
+        <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def csi = new CreateCustomE2EServiceInstance()
+csi.prepareFalloutRequest(execution)]]></bpmn:script>
+      </bpmn:scriptTask>
+      <bpmn:callActivity id="CallActivity_1ang7q8" name="Call FalloutHandler" calledElement="FalloutHandler">
+        <bpmn:extensionElements>
+          <camunda:in source="falloutRequest" target="FalloutHandlerRequest" />
+          <camunda:in source="mso-request-id" target="mso-request-id" />
+          <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
+          <camunda:out source="FH_ResponseCode" target="FH_ResponseCode" />
+          <camunda:out source="FalloutHandlerResponse" target="FalloutHandlerResponse" />
+          <camunda:out source="FH_ErrorResponse" target="FH_ErrorResponse" />
+        </bpmn:extensionElements>
+        <bpmn:incoming>SequenceFlow_01umodj</bpmn:incoming>
+        <bpmn:outgoing>SequenceFlow_1ysapam</bpmn:outgoing>
+      </bpmn:callActivity>
+      <bpmn:scriptTask id="ScriptTask_1rn6nqi" name="Send Error Response">
+        <bpmn:incoming>SequenceFlow_0e1r62n</bpmn:incoming>
+        <bpmn:outgoing>SequenceFlow_0n9pexp</bpmn:outgoing>
+        <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def csi = new  CreateCustomE2EServiceInstance()
+csi.sendSyncError(execution)]]></bpmn:script>
+      </bpmn:scriptTask>
+      <bpmn:sequenceFlow id="SequenceFlow_0e1r62n" sourceRef="StartEvent_0dug28e" targetRef="ScriptTask_1rn6nqi" />
+      <bpmn:sequenceFlow id="SequenceFlow_1ysapam" sourceRef="CallActivity_1ang7q8" targetRef="EndEvent_03wysuk" />
+      <bpmn:sequenceFlow id="SequenceFlow_0n9pexp" sourceRef="ScriptTask_1rn6nqi" targetRef="ScriptTask_0u8o9p2" />
+      <bpmn:sequenceFlow id="SequenceFlow_01umodj" sourceRef="ScriptTask_0u8o9p2" targetRef="CallActivity_1ang7q8" />
+    </bpmn:subProcess>
+    <bpmn:scriptTask id="ScriptTask_0xupxj9" name="Send Sync Ack Response" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_081z8l2</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_19eilro</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def csi = new  CreateCustomE2EServiceInstance()
+csi.sendSyncResponse(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_0aqn64l" name="Success?">
+      <bpmn:incoming>SequenceFlow_0klbpxx</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_14zu6wr</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_1fueo69</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:endEvent id="EndEvent_07uk5iy">
+      <bpmn:incoming>SequenceFlow_1fueo69</bpmn:incoming>
+      <bpmn:errorEventDefinition errorRef="Error_0nbdy47" />
+    </bpmn:endEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_0s2spoq" sourceRef="StartEvent_00qj6ro" targetRef="ScriptTask_1s09c7d" />
+    <bpmn:sequenceFlow id="SequenceFlow_19eilro" sourceRef="ScriptTask_0xupxj9" targetRef="DoCreateE2EServiceInstance" />
+    <bpmn:sequenceFlow id="SequenceFlow_0klbpxx" sourceRef="DoCreateE2EServiceInstance" targetRef="ExclusiveGateway_0aqn64l" />
+    <bpmn:sequenceFlow id="SequenceFlow_0yayvrf" sourceRef="CallActivity_02fyxz0" targetRef="EndEvent_0bpd6c0" />
+    <bpmn:sequenceFlow id="SequenceFlow_0z4faf9" sourceRef="ScriptTask_1s09c7d" targetRef="Task_1tqjch6" />
+    <bpmn:sequenceFlow id="SequenceFlow_14zu6wr" name="yes" sourceRef="ExclusiveGateway_0aqn64l" targetRef="ScriptTask_0ttvn8r">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("WorkflowException") == null}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="SequenceFlow_0je30si" sourceRef="ScriptTask_0ttvn8r" targetRef="CallActivity_02fyxz0" />
+    <bpmn:sequenceFlow id="SequenceFlow_1fueo69" name="no" sourceRef="ExclusiveGateway_0aqn64l" targetRef="EndEvent_07uk5iy">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("WorkflowException") != null}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="SequenceFlow_1euqjsp" sourceRef="Task_1tqjch6" targetRef="Task_19mxcw3" />
+    <bpmn:scriptTask id="Task_1tqjch6" name="Init Service Operation Status" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0z4faf9</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1euqjsp</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def csi= new CreateCustomE2EServiceInstance()
+csi.prepareInitServiceOperationStatus(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:serviceTask id="Task_19mxcw3" name="Update Service Operation Status">
+      <bpmn:extensionElements>
+        <camunda:connector>
+          <camunda:inputOutput>
+            <camunda:inputParameter name="url">${CVFMI_dbAdapterEndpoint}</camunda:inputParameter>
+            <camunda:inputParameter name="headers">
+              <camunda:map>
+                <camunda:entry key="content-type">application/soap+xml</camunda:entry>
+                <camunda:entry key="Authorization">Basic QlBFTENsaWVudDpwYXNzd29yZDEk</camunda:entry>
+              </camunda:map>
+            </camunda:inputParameter>
+            <camunda:inputParameter name="payload">${CVFMI_updateServiceOperStatusRequest}</camunda:inputParameter>
+            <camunda:inputParameter name="method">POST</camunda:inputParameter>
+            <camunda:outputParameter name="CVFMI_dbResponseCode">${statusCode}</camunda:outputParameter>
+            <camunda:outputParameter name="CVFMI_dbResponse">${response}</camunda:outputParameter>
+          </camunda:inputOutput>
+          <camunda:connectorId>http-connector</camunda:connectorId>
+        </camunda:connector>
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_1euqjsp</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_081z8l2</bpmn:outgoing>
+    </bpmn:serviceTask>
+    <bpmn:sequenceFlow id="SequenceFlow_081z8l2" sourceRef="Task_19mxcw3" targetRef="ScriptTask_0xupxj9" />
+  </bpmn:process>
+  <bpmn:error id="Error_0nbdy47" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="CreateCustomE2EServiceInstance">
+      <bpmndi:BPMNShape id="StartEvent_00qj6ro_di" bpmnElement="StartEvent_00qj6ro">
+        <dc:Bounds x="-6" y="180" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-24" y="221" width="73" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="SubProcess_0ka59nc_di" bpmnElement="SubProcess_0ka59nc" isExpanded="true">
+        <dc:Bounds x="463" y="632" width="394" height="188" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0rhljy8_di" bpmnElement="DoCreateE2EServiceInstance">
+        <dc:Bounds x="751" y="158" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0bpd6c0_di" bpmnElement="EndEvent_0bpd6c0">
+        <dc:Bounds x="1258" y="286" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1268" y="322" width="22" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1s09c7d_di" bpmnElement="ScriptTask_1s09c7d">
+        <dc:Bounds x="115" y="158" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0ttvn8r_di" bpmnElement="ScriptTask_0ttvn8r">
+        <dc:Bounds x="1038" y="158" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_02fyxz0_di" bpmnElement="CallActivity_02fyxz0">
+        <dc:Bounds x="1226" y="158" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="SubProcess_0vaws86_di" bpmnElement="SubProcess_0vaws86" isExpanded="true">
+        <dc:Bounds x="348" y="370" width="679" height="194" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0xupxj9_di" bpmnElement="ScriptTask_0xupxj9">
+        <dc:Bounds x="610" y="158" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0aqn64l_di" bpmnElement="ExclusiveGateway_0aqn64l" isMarkerVisible="true">
+        <dc:Bounds x="903" y="173" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="903" y="145" width="50" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_07uk5iy_di" bpmnElement="EndEvent_07uk5iy">
+        <dc:Bounds x="910" y="286" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="883" y="322" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0s2spoq_di" bpmnElement="SequenceFlow_0s2spoq">
+        <di:waypoint xsi:type="dc:Point" x="30" y="198" />
+        <di:waypoint xsi:type="dc:Point" x="115" y="198" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="27.5" y="177" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_19eilro_di" bpmnElement="SequenceFlow_19eilro">
+        <di:waypoint xsi:type="dc:Point" x="710" y="198" />
+        <di:waypoint xsi:type="dc:Point" x="751" y="198" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="685.5" y="177" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0klbpxx_di" bpmnElement="SequenceFlow_0klbpxx">
+        <di:waypoint xsi:type="dc:Point" x="851" y="198" />
+        <di:waypoint xsi:type="dc:Point" x="903" y="198" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="832" y="177" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0yayvrf_di" bpmnElement="SequenceFlow_0yayvrf">
+        <di:waypoint xsi:type="dc:Point" x="1276" y="238" />
+        <di:waypoint xsi:type="dc:Point" x="1276" y="286" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1246" y="262" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0z4faf9_di" bpmnElement="SequenceFlow_0z4faf9">
+        <di:waypoint xsi:type="dc:Point" x="215" y="198" />
+        <di:waypoint xsi:type="dc:Point" x="273" y="198" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="199" y="177" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_14zu6wr_di" bpmnElement="SequenceFlow_14zu6wr">
+        <di:waypoint xsi:type="dc:Point" x="953" y="198" />
+        <di:waypoint xsi:type="dc:Point" x="990" y="198" />
+        <di:waypoint xsi:type="dc:Point" x="990" y="198" />
+        <di:waypoint xsi:type="dc:Point" x="1038" y="198" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="987" y="195" width="20" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0je30si_di" bpmnElement="SequenceFlow_0je30si">
+        <di:waypoint xsi:type="dc:Point" x="1138" y="198" />
+        <di:waypoint xsi:type="dc:Point" x="1226" y="198" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1137" y="183" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1fueo69_di" bpmnElement="SequenceFlow_1fueo69">
+        <di:waypoint xsi:type="dc:Point" x="928" y="223" />
+        <di:waypoint xsi:type="dc:Point" x="928" y="250" />
+        <di:waypoint xsi:type="dc:Point" x="928" y="250" />
+        <di:waypoint xsi:type="dc:Point" x="928" y="286" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="901" y="228" width="15" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0u3lw39_di" bpmnElement="ScriptTask_0u3lw39">
+        <dc:Bounds x="611" y="687" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_0v1ffn4_di" bpmnElement="StartEvent_0v1ffn4">
+        <dc:Bounds x="496" y="709" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="469" y="750" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0eznq6x_di" bpmnElement="EndEvent_0eznq6x">
+        <dc:Bounds x="772" y="709" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="745" y="750" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_0dug28e_di" bpmnElement="StartEvent_0dug28e">
+        <dc:Bounds x="363" y="456" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="336" y="497" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_03wysuk_di" bpmnElement="EndEvent_03wysuk">
+        <dc:Bounds x="942" y="456" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="915" y="497" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0u8o9p2_di" bpmnElement="ScriptTask_0u8o9p2">
+        <dc:Bounds x="621" y="434" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1ang7q8_di" bpmnElement="CallActivity_1ang7q8">
+        <dc:Bounds x="798" y="434" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1rn6nqi_di" bpmnElement="ScriptTask_1rn6nqi">
+        <dc:Bounds x="443" y="434" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1dsbjjb_di" bpmnElement="SequenceFlow_1dsbjjb">
+        <di:waypoint xsi:type="dc:Point" x="532" y="727" />
+        <di:waypoint xsi:type="dc:Point" x="611" y="727" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="529.5" y="727" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1yay321_di" bpmnElement="SequenceFlow_1yay321">
+        <di:waypoint xsi:type="dc:Point" x="711" y="727" />
+        <di:waypoint xsi:type="dc:Point" x="772" y="727" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="701.5" y="727" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0e1r62n_di" bpmnElement="SequenceFlow_0e1r62n">
+        <di:waypoint xsi:type="dc:Point" x="399" y="474" />
+        <di:waypoint xsi:type="dc:Point" x="421" y="474" />
+        <di:waypoint xsi:type="dc:Point" x="421" y="474" />
+        <di:waypoint xsi:type="dc:Point" x="442" y="474" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="391" y="474" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ysapam_di" bpmnElement="SequenceFlow_1ysapam">
+        <di:waypoint xsi:type="dc:Point" x="898" y="474" />
+        <di:waypoint xsi:type="dc:Point" x="942" y="474" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="875" y="459" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0n9pexp_di" bpmnElement="SequenceFlow_0n9pexp">
+        <di:waypoint xsi:type="dc:Point" x="543" y="474" />
+        <di:waypoint xsi:type="dc:Point" x="570" y="474" />
+        <di:waypoint xsi:type="dc:Point" x="570" y="474" />
+        <di:waypoint xsi:type="dc:Point" x="621" y="474" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="540" y="474" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_01umodj_di" bpmnElement="SequenceFlow_01umodj">
+        <di:waypoint xsi:type="dc:Point" x="721" y="474" />
+        <di:waypoint xsi:type="dc:Point" x="798" y="474" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="715.5" y="459" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1euqjsp_di" bpmnElement="SequenceFlow_1euqjsp">
+        <di:waypoint xsi:type="dc:Point" x="373" y="198" />
+        <di:waypoint xsi:type="dc:Point" x="446" y="198" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="364.5" y="177" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1a3vwas_di" bpmnElement="Task_1tqjch6">
+        <dc:Bounds x="273" y="158" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ServiceTask_1afiuuq_di" bpmnElement="Task_19mxcw3">
+        <dc:Bounds x="446" y="158" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_081z8l2_di" bpmnElement="SequenceFlow_081z8l2">
+        <di:waypoint xsi:type="dc:Point" x="546" y="198" />
+        <di:waypoint xsi:type="dc:Point" x="610" y="198" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="533" y="177" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn:definitions>
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateVcpeResCustService.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateVcpeResCustService.bpmn
index 0a0c95a..876f91f 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateVcpeResCustService.bpmn
+++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateVcpeResCustService.bpmn
@@ -516,6 +516,7 @@
         <camunda:in source="serviceModelInfo" target="serviceModelInfo" />
         <camunda:in source="globalSubscriberId" target="globalSubscriberId" />
         <camunda:in source="serviceDecomposition" target="serviceDecomposition" />
+        <camunda:in source="RegionOne_flavorList" target="RegionOne_flavorList" />
       </bpmn2:extensionElements>
       <bpmn2:incoming>SequenceFlow_0ws7fjn</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_1mkdhw9</bpmn2:outgoing>
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateVcpeResCustServiceV2.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateVcpeResCustServiceV2.bpmn
index 94b88f7..99b1ff5 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateVcpeResCustServiceV2.bpmn
+++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateVcpeResCustServiceV2.bpmn
@@ -585,6 +585,7 @@
       <bpmn2:extensionElements>
         <camunda:in source="timeoutForPnfEntryNotification" target="timeoutForPnfEntryNotification" />
         <camunda:in source="correlationId" target="correlationId" />
+        <camunda:in businessKey="#{execution.processBusinessKey}" />
       </bpmn2:extensionElements>
       <bpmn2:incoming>SequenceFlow_0gj4vud</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_0clhseq</bpmn2:outgoing>
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/DeleteCustom3rdONAPServiceInstance.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/DeleteCustom3rdONAPServiceInstance.bpmn
new file mode 100644
index 0000000..e0747eb
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/DeleteCustom3rdONAPServiceInstance.bpmn
@@ -0,0 +1,381 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.11.3">
+  <bpmn:process id="DeleteCustomE2EServiceInstance" isExecutable="true">
+    <bpmn:startEvent id="StartEvent_00m8zen" name="Delete SI Start Flow">
+      <bpmn:outgoing>SequenceFlow_1wxumid</bpmn:outgoing>
+    </bpmn:startEvent>
+    <bpmn:subProcess id="SubProcess_0amn8vu" name="Sub-process for UnexpectedErrors" triggeredByEvent="true">
+      <bpmn:scriptTask id="ScriptTask_1c6ogpt" name="Handle Unexpected Error" scriptFormat="groovy">
+        <bpmn:incoming>SequenceFlow_0guajy5</bpmn:incoming>
+        <bpmn:outgoing>SequenceFlow_0dbt753</bpmn:outgoing>
+        <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.common.scripts.*
+ExceptionUtil ex = new ExceptionUtil()
+ex.processJavaException(execution)]]></bpmn:script>
+      </bpmn:scriptTask>
+      <bpmn:startEvent id="StartEvent_121296y">
+        <bpmn:outgoing>SequenceFlow_0guajy5</bpmn:outgoing>
+        <bpmn:errorEventDefinition />
+      </bpmn:startEvent>
+      <bpmn:endEvent id="EndEvent_1dw3dwx">
+        <bpmn:incoming>SequenceFlow_0dbt753</bpmn:incoming>
+      </bpmn:endEvent>
+      <bpmn:sequenceFlow id="SequenceFlow_0guajy5" name="" sourceRef="StartEvent_121296y" targetRef="ScriptTask_1c6ogpt" />
+      <bpmn:sequenceFlow id="SequenceFlow_0dbt753" name="" sourceRef="ScriptTask_1c6ogpt" targetRef="EndEvent_1dw3dwx" />
+    </bpmn:subProcess>
+    <bpmn:callActivity id="CallActivity_1vyx9hu" name="Call DoCustomDeleteE2EServiceInstance&#10;" calledElement="DoDeleteE2EServiceInstance">
+      <bpmn:extensionElements>
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+        <camunda:in source="serviceInstanceName" target="serviceInstanceName" />
+        <camunda:in source="serviceModelInfo" target="serviceModelInfo" />
+        <camunda:in source="productFamilyId" target="productFamilyId" />
+        <camunda:in source="disableRollback" target="disableRollback" />
+        <camunda:in source="serviceInputParams" target="serviceInputParams" />
+        <camunda:in source="failIfExists" target="failIfExists" />
+        <camunda:in source="globalSubscriberId" target="globalSubscriberId" />
+        <camunda:in source="serviceType" target="serviceType" />
+        <camunda:in sourceExpression="1610" target="sdncVersion" />
+        <camunda:in source="operationId" target="operationId" />
+        <camunda:in source="operationType" target="operationType" />
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_0zf2qyk</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_07hrbs0</bpmn:outgoing>
+    </bpmn:callActivity>
+    <bpmn:endEvent id="EndEvent_0db8bs6" name="End">
+      <bpmn:incoming>SequenceFlow_1ab5l2q</bpmn:incoming>
+    </bpmn:endEvent>
+    <bpmn:scriptTask id="ScriptTask_0a63hms" name="Pre Process Incoming Request" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1wxumid</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0yowshs</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def csi= new DeleteCustomE2EServiceInstance()
+csi.preProcessRequest(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:scriptTask id="ScriptTask_1fzpbop" name="Prepare Completion Request" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_04urx2e</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1ii935p</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def csi = new DeleteCustomE2EServiceInstance()
+csi.prepareCompletionRequest(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:callActivity id="CallActivity_1wx4ihe" name="Call CompleteMsoProcess" calledElement="CompleteMsoProcess">
+      <bpmn:extensionElements>
+        <camunda:in source="completionRequest" target="CompleteMsoProcessRequest" />
+        <camunda:in source="mso-request-id" target="mso-request-id" />
+        <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
+        <camunda:out source="CMSO_ResponseCode" target="CMSO_ResponseCode" />
+        <camunda:out source="CompleteMsoProcessResponse" target="CompleteMsoProcessResponse" />
+        <camunda:out source="CMSO_ErrorResponse" target="CMSO_ErrorResponse" />
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_1ii935p</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1ab5l2q</bpmn:outgoing>
+    </bpmn:callActivity>
+    <bpmn:subProcess id="SubProcess_1vbcima" name="Sub-process for FalloutHandler " triggeredByEvent="true">
+      <bpmn:startEvent id="StartEvent_0jybicw">
+        <bpmn:outgoing>SequenceFlow_0for83z</bpmn:outgoing>
+        <bpmn:errorEventDefinition />
+      </bpmn:startEvent>
+      <bpmn:endEvent id="EndEvent_1jegbhy">
+        <bpmn:incoming>SequenceFlow_0hrazlh</bpmn:incoming>
+      </bpmn:endEvent>
+      <bpmn:scriptTask id="ScriptTask_0so3xj0" name="Prepare Fallout Request" scriptFormat="groovy">
+        <bpmn:incoming>SequenceFlow_1s1cbgf</bpmn:incoming>
+        <bpmn:outgoing>SequenceFlow_1py6yqz</bpmn:outgoing>
+        <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def csi = new DeleteCustomE2EServiceInstance()
+csi.prepareFalloutRequest(execution)]]></bpmn:script>
+      </bpmn:scriptTask>
+      <bpmn:callActivity id="CallActivity_1qhekgt" name="Call FalloutHandler" calledElement="FalloutHandler">
+        <bpmn:extensionElements>
+          <camunda:in source="falloutRequest" target="FalloutHandlerRequest" />
+          <camunda:in source="mso-request-id" target="mso-request-id" />
+          <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
+          <camunda:out source="FH_ResponseCode" target="FH_ResponseCode" />
+          <camunda:out source="FalloutHandlerResponse" target="FalloutHandlerResponse" />
+          <camunda:out source="FH_ErrorResponse" target="FH_ErrorResponse" />
+        </bpmn:extensionElements>
+        <bpmn:incoming>SequenceFlow_1py6yqz</bpmn:incoming>
+        <bpmn:outgoing>SequenceFlow_0hrazlh</bpmn:outgoing>
+      </bpmn:callActivity>
+      <bpmn:scriptTask id="ScriptTask_006nty7" name="Send Error Response">
+        <bpmn:incoming>SequenceFlow_0for83z</bpmn:incoming>
+        <bpmn:outgoing>SequenceFlow_1s1cbgf</bpmn:outgoing>
+        <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def csi = new  DeleteCustomE2EServiceInstance()
+csi.sendSyncError(execution)]]></bpmn:script>
+      </bpmn:scriptTask>
+      <bpmn:sequenceFlow id="SequenceFlow_0for83z" sourceRef="StartEvent_0jybicw" targetRef="ScriptTask_006nty7" />
+      <bpmn:sequenceFlow id="SequenceFlow_0hrazlh" sourceRef="CallActivity_1qhekgt" targetRef="EndEvent_1jegbhy" />
+      <bpmn:sequenceFlow id="SequenceFlow_1s1cbgf" sourceRef="ScriptTask_006nty7" targetRef="ScriptTask_0so3xj0" />
+      <bpmn:sequenceFlow id="SequenceFlow_1py6yqz" sourceRef="ScriptTask_0so3xj0" targetRef="CallActivity_1qhekgt" />
+    </bpmn:subProcess>
+    <bpmn:scriptTask id="ScriptTask_1mao77y" name="Send Sync Ack Response" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1dkcu9o</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0zf2qyk</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def csi = new  DeleteCustomE2EServiceInstance()
+csi.sendSyncResponse(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_0vu8gx6" name="Success?" default="SequenceFlow_1t6ekab">
+      <bpmn:incoming>SequenceFlow_07hrbs0</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_04urx2e</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_1t6ekab</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:endEvent id="EndEvent_1i1g9s6">
+      <bpmn:incoming>SequenceFlow_1t6ekab</bpmn:incoming>
+      <bpmn:errorEventDefinition errorRef="Error_1erlsmy" />
+    </bpmn:endEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_1wxumid" sourceRef="StartEvent_00m8zen" targetRef="ScriptTask_0a63hms" />
+    <bpmn:sequenceFlow id="SequenceFlow_0zf2qyk" sourceRef="ScriptTask_1mao77y" targetRef="CallActivity_1vyx9hu" />
+    <bpmn:sequenceFlow id="SequenceFlow_07hrbs0" sourceRef="CallActivity_1vyx9hu" targetRef="ExclusiveGateway_0vu8gx6" />
+    <bpmn:sequenceFlow id="SequenceFlow_1ab5l2q" sourceRef="CallActivity_1wx4ihe" targetRef="EndEvent_0db8bs6" />
+    <bpmn:sequenceFlow id="SequenceFlow_0yowshs" sourceRef="ScriptTask_0a63hms" targetRef="Task_1jksf62" />
+    <bpmn:sequenceFlow id="SequenceFlow_04urx2e" name="yes" sourceRef="ExclusiveGateway_0vu8gx6" targetRef="ScriptTask_1fzpbop">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("WorkflowException") == null}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="SequenceFlow_1ii935p" sourceRef="ScriptTask_1fzpbop" targetRef="CallActivity_1wx4ihe" />
+    <bpmn:sequenceFlow id="SequenceFlow_1t6ekab" name="no" sourceRef="ExclusiveGateway_0vu8gx6" targetRef="EndEvent_1i1g9s6" />
+    <bpmn:sequenceFlow id="SequenceFlow_0c4t26p" sourceRef="Task_1jksf62" targetRef="ServiceTask_0j9q5xe" />
+    <bpmn:scriptTask id="Task_1jksf62" name="prepare init operation status" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0yowshs</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0c4t26p</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def csi= new DeleteCustomE2EServiceInstance()
+csi.prepareInitServiceOperationStatus(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:serviceTask id="ServiceTask_0j9q5xe" name="Update Service Operation Status">
+      <bpmn:extensionElements>
+        <camunda:connector>
+          <camunda:inputOutput>
+            <camunda:inputParameter name="url">${CVFMI_dbAdapterEndpoint}</camunda:inputParameter>
+            <camunda:inputParameter name="headers">
+              <camunda:map>
+                <camunda:entry key="content-type">application/soap+xml</camunda:entry>
+                <camunda:entry key="Authorization">Basic QlBFTENsaWVudDpwYXNzd29yZDEk</camunda:entry>
+              </camunda:map>
+            </camunda:inputParameter>
+            <camunda:inputParameter name="payload">${CVFMI_updateServiceOperStatusRequest}</camunda:inputParameter>
+            <camunda:inputParameter name="method">POST</camunda:inputParameter>
+            <camunda:outputParameter name="CVFMI_dbResponseCode">${statusCode}</camunda:outputParameter>
+            <camunda:outputParameter name="CVFMI_dbResponse">${response}</camunda:outputParameter>
+          </camunda:inputOutput>
+          <camunda:connectorId>http-connector</camunda:connectorId>
+        </camunda:connector>
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_0c4t26p</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1dkcu9o</bpmn:outgoing>
+    </bpmn:serviceTask>
+    <bpmn:sequenceFlow id="SequenceFlow_1dkcu9o" sourceRef="ServiceTask_0j9q5xe" targetRef="ScriptTask_1mao77y" />
+  </bpmn:process>
+  <bpmn:error id="Error_1erlsmy" name="MSO Workflow Exception" errorCode="MSOWorkflowException" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DeleteCustomE2EServiceInstance">
+      <bpmndi:BPMNShape id="StartEvent_00m8zen_di" bpmnElement="StartEvent_00m8zen">
+        <dc:Bounds x="490" y="209" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="471" y="250" width="74" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="SubProcess_0amn8vu_di" bpmnElement="SubProcess_0amn8vu" isExpanded="true">
+        <dc:Bounds x="834" y="660" width="394" height="188" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1vyx9hu_di" bpmnElement="CallActivity_1vyx9hu">
+        <dc:Bounds x="1121" y="187" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0db8bs6_di" bpmnElement="EndEvent_0db8bs6">
+        <dc:Bounds x="1646" y="304" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1657" y="340" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0a63hms_di" bpmnElement="ScriptTask_0a63hms">
+        <dc:Bounds x="562" y="187" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1fzpbop_di" bpmnElement="ScriptTask_1fzpbop">
+        <dc:Bounds x="1453" y="187" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1wx4ihe_di" bpmnElement="CallActivity_1wx4ihe">
+        <dc:Bounds x="1614" y="187" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="SubProcess_1vbcima_di" bpmnElement="SubProcess_1vbcima" isExpanded="true">
+        <dc:Bounds x="736" y="374" width="679" height="194" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1mao77y_di" bpmnElement="ScriptTask_1mao77y">
+        <dc:Bounds x="970" y="187" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0vu8gx6_di" bpmnElement="ExclusiveGateway_0vu8gx6" isMarkerVisible="true">
+        <dc:Bounds x="1318" y="202" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1318" y="174" width="49" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_1i1g9s6_di" bpmnElement="EndEvent_1i1g9s6">
+        <dc:Bounds x="1325" y="304" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1298" y="340" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1wxumid_di" bpmnElement="SequenceFlow_1wxumid">
+        <di:waypoint xsi:type="dc:Point" x="526" y="227" />
+        <di:waypoint xsi:type="dc:Point" x="562" y="227" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="499" y="206" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0zf2qyk_di" bpmnElement="SequenceFlow_0zf2qyk">
+        <di:waypoint xsi:type="dc:Point" x="1070" y="227" />
+        <di:waypoint xsi:type="dc:Point" x="1121" y="227" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1050.5" y="206" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_07hrbs0_di" bpmnElement="SequenceFlow_07hrbs0">
+        <di:waypoint xsi:type="dc:Point" x="1221" y="227" />
+        <di:waypoint xsi:type="dc:Point" x="1318" y="227" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1225.5" y="212" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ab5l2q_di" bpmnElement="SequenceFlow_1ab5l2q">
+        <di:waypoint xsi:type="dc:Point" x="1664" y="267" />
+        <di:waypoint xsi:type="dc:Point" x="1664" y="304" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1634" y="279.5" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0yowshs_di" bpmnElement="SequenceFlow_0yowshs">
+        <di:waypoint xsi:type="dc:Point" x="662" y="227" />
+        <di:waypoint xsi:type="dc:Point" x="707" y="227" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="639.5" y="206" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_04urx2e_di" bpmnElement="SequenceFlow_04urx2e">
+        <di:waypoint xsi:type="dc:Point" x="1368" y="227" />
+        <di:waypoint xsi:type="dc:Point" x="1453" y="227" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1370.25" y="203" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ii935p_di" bpmnElement="SequenceFlow_1ii935p">
+        <di:waypoint xsi:type="dc:Point" x="1553" y="227" />
+        <di:waypoint xsi:type="dc:Point" x="1614" y="227" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1495" y="212" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1t6ekab_di" bpmnElement="SequenceFlow_1t6ekab">
+        <di:waypoint xsi:type="dc:Point" x="1343" y="252" />
+        <di:waypoint xsi:type="dc:Point" x="1343" y="277" />
+        <di:waypoint xsi:type="dc:Point" x="1343" y="277" />
+        <di:waypoint xsi:type="dc:Point" x="1343" y="304" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1352" y="277" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1c6ogpt_di" bpmnElement="ScriptTask_1c6ogpt">
+        <dc:Bounds x="982" y="715" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_121296y_di" bpmnElement="StartEvent_121296y">
+        <dc:Bounds x="867" y="737" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="795" y="778" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_1dw3dwx_di" bpmnElement="EndEvent_1dw3dwx">
+        <dc:Bounds x="1143" y="737" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1071" y="778" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_0jybicw_di" bpmnElement="StartEvent_0jybicw">
+        <dc:Bounds x="752" y="460" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="680" y="501" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_1jegbhy_di" bpmnElement="EndEvent_1jegbhy">
+        <dc:Bounds x="1331" y="460" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1259" y="501" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0so3xj0_di" bpmnElement="ScriptTask_0so3xj0">
+        <dc:Bounds x="1010" y="438" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1qhekgt_di" bpmnElement="CallActivity_1qhekgt">
+        <dc:Bounds x="1187" y="438" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_006nty7_di" bpmnElement="ScriptTask_006nty7">
+        <dc:Bounds x="832" y="438" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0guajy5_di" bpmnElement="SequenceFlow_0guajy5">
+        <di:waypoint xsi:type="dc:Point" x="903" y="755" />
+        <di:waypoint xsi:type="dc:Point" x="982" y="755" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="856" y="755" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0dbt753_di" bpmnElement="SequenceFlow_0dbt753">
+        <di:waypoint xsi:type="dc:Point" x="1082" y="755" />
+        <di:waypoint xsi:type="dc:Point" x="1143" y="755" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1028" y="755" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0for83z_di" bpmnElement="SequenceFlow_0for83z">
+        <di:waypoint xsi:type="dc:Point" x="788" y="478" />
+        <di:waypoint xsi:type="dc:Point" x="810" y="478" />
+        <di:waypoint xsi:type="dc:Point" x="810" y="478" />
+        <di:waypoint xsi:type="dc:Point" x="831" y="478" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="735" y="478" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0hrazlh_di" bpmnElement="SequenceFlow_0hrazlh">
+        <di:waypoint xsi:type="dc:Point" x="1287" y="478" />
+        <di:waypoint xsi:type="dc:Point" x="1331" y="478" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1219" y="463" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1s1cbgf_di" bpmnElement="SequenceFlow_1s1cbgf">
+        <di:waypoint xsi:type="dc:Point" x="932" y="478" />
+        <di:waypoint xsi:type="dc:Point" x="959" y="478" />
+        <di:waypoint xsi:type="dc:Point" x="959" y="478" />
+        <di:waypoint xsi:type="dc:Point" x="1010" y="478" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="884" y="478" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1py6yqz_di" bpmnElement="SequenceFlow_1py6yqz">
+        <di:waypoint xsi:type="dc:Point" x="1110" y="478" />
+        <di:waypoint xsi:type="dc:Point" x="1187" y="478" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1060" y="463" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0c4t26p_di" bpmnElement="SequenceFlow_0c4t26p">
+        <di:waypoint xsi:type="dc:Point" x="807" y="227" />
+        <di:waypoint xsi:type="dc:Point" x="833" y="227" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="820" y="206" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1joo7s7_di" bpmnElement="Task_1jksf62">
+        <dc:Bounds x="707" y="187" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ServiceTask_0j9q5xe_di" bpmnElement="ServiceTask_0j9q5xe">
+        <dc:Bounds x="833" y="187" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1dkcu9o_di" bpmnElement="SequenceFlow_1dkcu9o">
+        <di:waypoint xsi:type="dc:Point" x="933" y="227" />
+        <di:waypoint xsi:type="dc:Point" x="970" y="227" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="951.5" y="206" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn:definitions>
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateVnfAndModules.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateVnfAndModules.bpmn
index 675b8fa..8cbc7e9 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateVnfAndModules.bpmn
+++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateVnfAndModules.bpmn
@@ -40,6 +40,7 @@
         <camunda:in source="tenantId" target="tenantId" />
         <camunda:in source="false" target="usePreload" />
         <camunda:in source="aLaCarte" target="aLaCarte" />
+        <camunda:in source="RegionOne_flavorList" target="RegionOne_flavorList" />
       </bpmn:extensionElements>
       <bpmn:incoming>SequenceFlow_1hf7k7q</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_1ixcnb6</bpmn:outgoing>
@@ -127,6 +128,7 @@
         <camunda:in source="tenantId" target="tenantId" />
         <camunda:in source="rollbackData" target="rollbackData" />
         <camunda:in source="vnfResourceDecomposition" target="vnfResourceDecomposition" />
+        <camunda:in source="RegionOne_flavorList" target="RegionOne_flavorList" />
       </bpmn:extensionElements>
       <bpmn:incoming>SequenceFlow_19ohb1a</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_07u8e3l</bpmn:outgoing>
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoUpdateE2EServiceInstance.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoUpdateE2EServiceInstance.bpmn
index 35cd039..41c9a67 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoUpdateE2EServiceInstance.bpmn
+++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoUpdateE2EServiceInstance.bpmn
@@ -156,17 +156,17 @@
       <bpmn2:scriptTask id="ScriptTask_1awrp72" name="Pre Process Exception" scriptFormat="groovy">
         <bpmn2:incoming>SequenceFlow_05j3sat</bpmn2:incoming>
         <bpmn2:outgoing>SequenceFlow_19ly8h7</bpmn2:outgoing>
-        <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*

-def dcsi = new DoCreateResources()

-dcsi.preProcessRollback(execution)

+        <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def dcsi = new DoUpdateE2EServiceInstance()
+dcsi.preProcessRollback(execution)
 ]]></bpmn2:script>
       </bpmn2:scriptTask>
       <bpmn2:scriptTask id="ScriptTask_0vc9jgo" name="Post Process Exception" scriptFormat="groovy">
         <bpmn2:incoming>SequenceFlow_19ly8h7</bpmn2:incoming>
         <bpmn2:outgoing>SequenceFlow_02znk15</bpmn2:outgoing>
-        <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*

-def dcsi = new DoCreateResources()

-dcsi.postProcessRollback(execution)

+        <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def dcsi = new DoUpdateE2EServiceInstance()
+dcsi.postProcessRollback(execution)
 ]]></bpmn2:script>
       </bpmn2:scriptTask>
       <bpmn2:sequenceFlow id="SequenceFlow_05j3sat" sourceRef="StartEvent_06768u3" targetRef="ScriptTask_1awrp72" />
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCustomDeleteE2EServiceInstanceTest.groovy b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCustomDeleteE2EServiceInstanceTest.groovy
index 5b5a700..c301b65 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCustomDeleteE2EServiceInstanceTest.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCustomDeleteE2EServiceInstanceTest.groovy
@@ -1,6 +1,7 @@
 package org.openecomp.mso.bpmn.infrastructure.scripts
 
 import com.github.tomakehurst.wiremock.junit.WireMockRule
+import org.camunda.bpm.engine.delegate.BpmnError
 import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity
 import org.junit.Before
 import org.junit.BeforeClass
@@ -8,18 +9,14 @@
 import org.junit.Rule
 import org.junit.Test
 import org.mockito.MockitoAnnotations
-import org.openecomp.mso.bpmn.infrastructure.scripts.DoCustomDeleteE2EServiceInstance
 import org.openecomp.mso.bpmn.mock.FileUtil
 import org.openecomp.mso.bpmn.vcpe.scripts.GroovyTestBase
 
+import static org.assertj.core.api.Assertions.assertThatThrownBy
+import static org.mockito.Matchers.anyString
 import static org.mockito.Mockito.verify
 import static org.mockito.Mockito.when
-import static org.mockito.Mockito.when
-import static org.mockito.Mockito.when
-import static org.mockito.Mockito.when
-import static org.mockito.Mockito.when
-import static org.mockito.Mockito.when
-import static org.mockito.Mockito.when
+import static org.mockito.Mockito.eq
 
 class DoCustomDeleteE2EServiceInstanceTest extends GroovyTestBase {
 
@@ -58,9 +55,8 @@
         verify(mex).setVariable("siParamsXml", "")
     }
 
-    @Ignore
     @Test
-    public void postProcessAAIGETTest(){
+    public void postProcessAAIGETSuccessTest(){
         ExecutionEntity mex = setupMock()
         def map = setupMap(mex)
         initPreProcess(mex)
@@ -70,11 +66,22 @@
         when(mex.getVariable("GENGS_service")).thenReturn(aaiGetResponse)
         DoCustomDeleteE2EServiceInstance instance = new DoCustomDeleteE2EServiceInstance()
         instance.postProcessAAIGET(mex)
-		// TODO: what to test here?
-//        verify(mex).setVariable("subscriptionServiceType", "e2eserviceInstance/delete")
+
+        verify(mex).setVariable(eq("serviceRelationShip"), anyString())
     }
 
-    @Ignore
+    @Test
+    public void postProcessAAIGETFailureTest(){
+        ExecutionEntity mex = setupMock()
+        def map = setupMap(mex)
+        initPreProcess(mex)
+        when(mex.getVariable("GENGS_FoundIndicator")).thenReturn(false)
+        when(mex.getVariable("GENGS_SuccessIndicator")).thenReturn(false)
+
+        DoCustomDeleteE2EServiceInstance instance = new DoCustomDeleteE2EServiceInstance()
+        assertThatThrownBy { instance.postProcessAAIGET(mex) } isInstanceOf BpmnError.class
+    }
+
     @Test
     public void preInitResourcesOperStatusTest(){
         ExecutionEntity mex = setupMock()
@@ -83,8 +90,8 @@
         when(mex.getVariable("serviceRelationShip")).thenReturn("[{\"resourceInstanceId\":\"3333\",\"resourceType\":\"overlay\"},{\"resourceInstanceId\":\"4444\",\"resourceType\":\"underlay\"},{\"resourceInstanceId\":\"1111\",\"resourceType\":\"vIMS\"},{\"resourceInstanceId\":\"222\",\"resourceType\":\"vEPC\"}]")
         DoCustomDeleteE2EServiceInstance instance = new DoCustomDeleteE2EServiceInstance()
         instance.preInitResourcesOperStatus(mex)
-		// TODO: what to test here?
-//        verify(mex).setVariable("CVFMI_dbAdapterEndpoint", "http://localhost:8080/mso")
+
+        verify(mex).setVariable(eq("CVFMI_initResOperStatusRequest"), anyString())
     }
 
     @Test
@@ -98,7 +105,6 @@
         verify(mex).setVariable("resourceType", "overlay")
     }
 
-    @Ignore
     @Test
     public void postProcessSDNCDeleteTest(){
         ExecutionEntity mex = setupMock()
@@ -111,8 +117,7 @@
         String response = FileUtil.readResourceFile("__files/GenericFlows/SDNCDeleteResponse.xml")
         String method = "deleteE2E";
         instance.postProcessSDNCDelete(mex, response, method)
-		// TODO: what to test here?
-//        verify(mex).setVariable("DDELSI_sdncRequestDataResponseCode", "0")
+		// following method doesn't do anything currently -> nothing to check
     }
 
     @Test
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/ScaleCustomE2EServiceInstanceTest.groovy b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/ScaleCustomE2EServiceInstanceTest.groovy
index e7ffe05..063f4b5 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/ScaleCustomE2EServiceInstanceTest.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/ScaleCustomE2EServiceInstanceTest.groovy
@@ -89,7 +89,6 @@
                             <ns:updateServiceOperationStatus xmlns:ns="http://org.openecomp.mso/requestsdb">
                             <serviceId>56c881ad-6c9d-4b79-aacc-401e5640b47f</serviceId>
                             <operationId>0a5b1651-c56e-4263-8c26-c8f8a6ef72d8</operationId>
-                            <serviceName>XXXX</serviceName>
                             <operationType>SCALE</operationType>
                             <userId></userId>
                             <result>processing</result>
@@ -163,7 +162,7 @@
         ExecutionEntity mockExecution = mock(ExecutionEntity.class)
 
         when(mockExecution.getVariable("serviceInstanceId")).thenReturn("56c881ad-6c9d-4b79-aacc-401e5640b47f")
-        when(mockExecution.getVariable("serviceInstanceName")).thenReturn("XXXX")
+        //when(mockExecution.getVariable("serviceInstanceName")).thenReturn("XXXX")
         when(mockExecution.getVariable("operationId")).thenReturn("0a5b1651-c56e-4263-8c26-c8f8a6ef72d8")
 
         ScaleCustomE2EServiceInstance scaleCustomE2EServiceInstance = new ScaleCustomE2EServiceInstance()
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/mso.bpmn.urn.properties b/bpmn/MSOInfrastructureBPMN/src/test/resources/mso.bpmn.urn.properties
index fc84d9e..6dac08d 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/resources/mso.bpmn.urn.properties
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/mso.bpmn.urn.properties
@@ -114,10 +114,10 @@
 policy.endpoint=http://localhost:28090/pdp/api/

 policy.default.disposition=Skip

 

-appc.client.topic.read=APPC-CL-FUSION-LCM-RESPONSE

-appc.client.topic.write=APPC-CL-FUSION-LCM

-appc.client.topic.sdnc.read=SDNC-LCM-READ

-appc.client.topic.sdnc.write=SDNC-LCM-WRITE

+appc.client.topic.read=APPC-LCM-WRITE 

+appc.client.topic.write=APPC-LCM-READ 

+appc.client.topic.sdnc.read=SDNC-LCM-WRITE 

+appc.client.topic.sdnc.write=SDNC-LCM-READ

 appc.client.topic.read.timeout=100

 appc.client.response.timeout=300

 appc.client.poolMembers=localhost:28090

diff --git a/common/pom.xml b/common/pom.xml
index aa3b095..86b9f36 100644
--- a/common/pom.xml
+++ b/common/pom.xml
@@ -123,12 +123,12 @@
                 <dependency>
                     <groupId>org.onap.appc.client</groupId>
                     <artifactId>client-kit</artifactId>
-                    <version>1.3.0-SNAPSHOT</version>
+                    <version>1.3.0</version>
                 </dependency>
                 <dependency>
                     <groupId>org.onap.appc.client</groupId>
                     <artifactId>client-lib</artifactId>
-                    <version>1.3.0-SNAPSHOT</version>
+                    <version>1.3.0</version>
                 </dependency>
 		<dependency>
 			<groupId>org.springframework</groupId>
diff --git a/docs/Install_Docker.rst b/docs/Install_Docker.rst
index 5712691..22a76a4 100644
--- a/docs/Install_Docker.rst
+++ b/docs/Install_Docker.rst
@@ -1,6 +1,6 @@
 .. This work is licensed under a Creative Commons Attribution 4.0 International License.

 .. http://creativecommons.org/licenses/by/4.0

-.. Copyright 2017 Huawei Technologies Co., Ltd.

+.. Copyright 2018 Huawei Technologies Co., Ltd.

 

 Install Docker

 ===============

diff --git a/docs/SO_R1_Interface.rst b/docs/SO_Interface.rst
similarity index 94%
rename from docs/SO_R1_Interface.rst
rename to docs/SO_Interface.rst
index bd65408..15e75fa 100644
--- a/docs/SO_R1_Interface.rst
+++ b/docs/SO_Interface.rst
@@ -1,11 +1,11 @@
 .. This work is licensed under a Creative Commons Attribution 4.0 International License.
 .. http://creativecommons.org/licenses/by/4.0
-.. Copyright 2017 Huawei Technologies Co., Ltd.
+.. Copyright 2018 Huawei Technologies Co., Ltd.
 
 SO Interfaces
 ================================
 
-.. image:: images/SO_R1_1.png
+.. image:: images/SO_1.png
 
 SO APIs
 =================================
@@ -1771,33 +1771,65 @@
 +------------------------------+-----------------+------------------------------------+
 |Attribute                     |Content          |Description                         |
 +==============================+=================+====================================+
-|modelName                     |String           |Service instance name.              |
+|name                          |String           |Service instance name.              |
 +------------------------------+-----------------+------------------------------------+
 |description                   |String           |Service instance description        |
 +------------------------------+-----------------+------------------------------------+
-|modelUUID                     |String           |Model UUID                          |
+|serviceUuid                   |String           |Model UUID                          |
 +------------------------------+-----------------+------------------------------------+
-|modelInvariantUUID            |String           |Model Invariant UUID                |
+|serviceInvariantUuid          |String           |Model Invariant UUID                |
 +------------------------------+-----------------+------------------------------------+
-|created                       |Timestamp        |Cretaed Timestamp                   |
-+------------------------------+-----------------+------------------------------------+
-|toscaCsarArtifactUUID         |String           |tosca Csar Artifact UUID            |
-+------------------------------+-----------------+------------------------------------+
-|modelVersion                  |String           |Model Version                       |
-+------------------------------+-----------------+------------------------------------+
-|category                      |String           |category                            |
+|gloabalSubscriberId           |String           |Customer Id                         |
 +------------------------------+-----------------+------------------------------------+
 |serviceType                   |String           |service Type                        |
 +------------------------------+-----------------+------------------------------------+
-|serviceRole                   |String           |service Role                        |
+|parameters                    |Object           |Parameter Object                    |
 +------------------------------+-----------------+------------------------------------+
-|environmentContext            |String           |environment Context                 |
+
+Parameter Object
+
 +------------------------------+-----------------+------------------------------------+
-|workloadContext               |String           |workload Context                    |
+|Attribute                     |Content          |Description                         |
++==============================+=================+====================================+
+|locationConstraints           |List of object   |location infor for each vnf         |
 +------------------------------+-----------------+------------------------------------+
-|recipes                       |Object           |recipes                             |
+|resource                      |List of Resource |resource of service/resource        |
 +------------------------------+-----------------+------------------------------------+
-|serviceResourceCustomizations |Object           |serviceResourceCustomizations       |
+|requestInputs                 |key-value map    |input of service/resource
++------------------------------+-----------------+------------------------------------+
+
+LocationConstraint Object
+
++------------------------------+-----------------+------------------------------------+
+|Attribute                     |Content          |Description                         |
++==============================+=================+====================================+
+|vnfProfileId                  |String           |Customization id for VNF            |
++------------------------------+-----------------+------------------------------------+
+|locationConstraints           |Object           |DC location info of VNF             |
++------------------------------+-----------------+------------------------------------+
+
+VnfLocationConstraint Object
+
++------------------------------+-----------------+------------------------------------+
+|Attribute                     |Content          |Description                         |
++==============================+=================+====================================+
+|vimId                         |String           |VIM id from ESR definition          |
++------------------------------+-----------------+------------------------------------+
+
+Resource Object
+
++------------------------------+-----------------+------------------------------------+
+|Attribute                     |Content          |Description                         |
++==============================+=================+====================================+
+|resourceName                  |String           |The resource name                   |
++------------------------------+-----------------+------------------------------------+
+|resourceInvariantUuid         |String           |The resource invariant UUID.        |
++------------------------------+-----------------+------------------------------------+
+|resourceUuid                  |String           |The resource UUID.                  |
++------------------------------+-----------------+------------------------------------+
+|resourceCustomizationUuid     |String           |The resource customization UUID.    |
++------------------------------+-----------------+------------------------------------+
+|parameters                    |Object           |Parameter of resource               |
 +------------------------------+-----------------+------------------------------------+
 
 Response:
@@ -4257,4 +4289,191 @@
 |401               |Unauthorized         |
 +------------------+---------------------+
 |500               |Error                |
-+------------------+---------------------+
\ No newline at end of file
++------------------+---------------------+
+
+
+OOF/HAS create update API
++++++++++++++++++++++++++
+
++--------------------+--------------------------+
+|Interface Definition|Description               |
++====================+==========================+
+|URI                 |/api/oof/v1/placement     |
++--------------------+--------------------------+
+|Operation Type      |POST                      |
++--------------------+--------------------------+
+
+
+Request Parameters:
+
++-------------------+---------+-----------+-------+-------------------------------------------------------------+
+|Attribute          |Required |Cardinality|Content|Description                                                  |
++===================+=========+===========+=======+=============================================================+
+|requestInfo        |Y        |1          |Object |The content of the RequestInfo object.                       |
++-------------------+---------+-----------+-------+-------------------------------------------------------------+
+|placementInfo      |Y        |1          |Object |The Content of the PlacementInfo object.                     |
++-------------------+---------+-----------+-------+-------------------------------------------------------------+
+|licenseInfo        |N        |1          |Object |The Content of the LicenseInfo object.                       |
++-------------------+---------+-----------+-------+-------------------------------------------------------------+
+|serviceInfo        |Y        |1          |Object |The Content of the ServiceInfo object.                       |
++-------------------+---------+-----------+-------+-------------------------------------------------------------+
+
+
++-------------------+---------+-----------+-------+-----------------------------------------------------------------------+
+|Attribute          |Required |Cardinality|Content|Description                                                            |
++===================+=========+===========+=======+=======================================================================+
+|transactionId      |Y        |1          |String |A unique ID to track an ONAP transaction.                              |
++-------------------+---------+-----------+-------+-----------------------------------------------------------------------+
+|requestId          |Y        |1          |String |A unique ID to track multiple requests.                                |
++-------------------+---------+-----------+-------+-----------------------------------------------------------------------+
+|callbackUrl        |Y        |1          |String |The end point of a callback service where recommendations are posted.  |
++-------------------+---------+-----------+-------+-----------------------------------------------------------------------+
+|callbackHeader	    |N	      |1	      |String |The header information a client expecting in a async callback.         |
++-------------------+---------+-----------+-------+-----------------------------------------------------------------------+
+|sourceId           |Y        |1          |String |The unique ID of a client making an optimization call.                 |
++-------------------+---------+-----------+-------+-----------------------------------------------------------------------+
+|requestType        |Y        |1          |String |The type of a request                                                  |
++-------------------+---------+-----------+-------+-----------------------------------------------------------------------+
+|numSolutions       |N        |1          |Integer|Expected number of solutions.                                          |
++-------------------+---------+-----------+-------+-----------------------------------------------------------------------+
+|optimizers         |Y        |1..N       |List of Strings|A list of optimization services.                               |
++-------------------+---------+-----------+-------+-----------------------------------------------------------------------+
+|timeout            |N        |1          |Integer|A tolerance window (in secs) for expecting solutions. Default is 600 secs.|
++-------------------+---------+-----------+-------+-----------------------------------------------------------------------+
+
+
+PlacementInfo Object
+
++-------------------+---------+-----------+-------+-------------------------------------------------------------+
+|Attribute          |Required |Cardinality|Content|Description                                                  |
++===================+=========+===========+=======+=============================================================+
+|requestParameters  |C        |1          |String |A JSON object conaining service and customer-specific data. A client or service designer is required to specify the parameters of interest for a given service and their location in the JSON blob through optimization query policies. This attribute is only required if a request contains service or customer-specific information.|
++-------------------+---------+-----------+-------+-----------------------------------------------------------------------+
+|placementDemands   |Y        |1..N       |List of PlacementDemand Object|The resource information for a placement service.|
++-------------------+---------+-----------+-------+-----------------------------------------------------------------------+
+|subscriberInfo	    |N	      |1	      |Object |The information of a service subscriber.                               |
++-------------------+---------+-----------+-------+-----------------------------------------------------------------------+
+
+PlacementDemand Object
+
++-------------------+---------+-----------+-------+-----------------------------------------------------------------------+
+|Attribute          |Required |Cardinality|Content|Description                                                            |
++===================+=========+===========+=======+=======================================================================+
+|resourceModuleName |Y        |1          |String |A resource name as defined in a service model.                         |
++-------------------+---------+-----------+-------+-----------------------------------------------------------------------+
+|serviceResourceId  |Y        |1          |String |A unique resource Id with a local scope between client and OOF.        |
++-------------------+---------+-----------+-------+-----------------------------------------------------------------------+
+|tenantId           |N        |1          |String |A tenant Id as defined in the ordering system.                         |
++-------------------+---------+-----------+-------+-----------------------------------------------------------------------+
+|resourceModelInfo  |Y        |1          |Object |Resource model information as defined in SDC.                          |
++-------------------+---------+-----------+-------+-----------------------------------------------------------------------+
+|existingCandidates |N        |1..N       |List of Candidates Objects | The existing placement information of a resource. |
++-------------------+---------+-----------+-------+-----------------------------------------------------------------------+
+|excludedCandidates |N        |1..N       |List of Candidates Objects |Candidates that need to be excluded from solutions.|
++-------------------+---------+-----------+-------+-----------------------------------------------------------------------+
+|requiredCandidates |N        |1..N       |List of Candidates Objects |Candidates that must be included in solutions.     |
++-------------------+---------+-----------+-------+-----------------------------------------------------------------------+
+
+
+SubscriberInfo Object
+
++-------------------+---------+-----------+-------+-----------------------------------------------------------------------+
+|Attribute          |Required |Cardinality|Content|Description                                                            |
++===================+=========+===========+=======+=======================================================================+
+|globalSubscriberId |Y        |1          |String |An ID of a subscriber.                                                 |
++-------------------+---------+-----------+-------+-----------------------------------------------------------------------+
+|subscriberName     |Y        |1.N        |String |The name of a subscriber. If the name is not known, the value must be 'unknown'.|
++-------------------+---------+-----------+-------+-----------------------------------------------------------------------+
+|subscriberCommonSiteId	|N	  |1	      |String |Id representing a subscriber location.                                 |
++-------------------+---------+-----------+-------+-----------------------------------------------------------------------+
+
+ModelMetaData Object
+
++-------------------+---------+-----------+-------+-----------------------------------------------------------------------+
+|Attribute          |Required |Cardinality|Content|Description                                                            |
++===================+=========+===========+=======+=======================================================================+
+|modelInvariantId   |Y        |1          |String |A model invariant Id as defined in a service model.                    |
++-------------------+---------+-----------+-------+-----------------------------------------------------------------------+
+|modelVersionId     |Y        |1          |String |A unique model Id as defined in a service model.                       |
++-------------------+---------+-----------+-------+-----------------------------------------------------------------------+
+|modelName          |N        |1          |String |A model name as defined in a service model.                            |
++-------------------+---------+-----------+-------+-----------------------------------------------------------------------+
+|modelType          |N        |1          |String |A model type as defined in a service model.                            |
++-------------------+---------+-----------+-------+-----------------------------------------------------------------------+
+|modelVersion       |N        |1          |String |A model version as defined in a service model.                         |
++-------------------+---------+-----------+-------+-----------------------------------------------------------------------+
+|modelCustomizationName |N    |1          |String |A model customization name as defined in a service model.              |
++-------------------+---------+-----------+-------+-----------------------------------------------------------------------+
+
+
+Candidates Object
+
++-------------------+---------+-----------+-------+-----------------------------------------------------------------------+
+|Attribute          |Required |Cardinality|Content|Description                                                            |
++===================+=========+===========+=======+=======================================================================+
+|identifierType     |Y        |1          |String |The type of a candidate.                                               |
++-------------------+---------+-----------+-------+-----------------------------------------------------------------------+
+|identifiers        |Y        |1..N       |List   |A list of identifiers.                                                 |
++-------------------+---------+-----------+-------+-----------------------------------------------------------------------+
+|cloudOwner	        |C	      |1	      |String |The name of a cloud owner. Only required if identifierType is cloud_region_id.|
++-------------------+---------+-----------+-------+-----------------------------------------------------------------------+
+
+
+ServiceInfo Object
+
++-------------------+---------+-----------+-------+-----------------------------------------------------------------------+
+|Attribute          |Required |Cardinality|Content|Description                                                            |
++===================+=========+===========+=======+=======================================================================+
+|serviceInstanceId  |Y        |1          |String |A service instance id associated with a request.                       |
++-------------------+---------+-----------+-------+-----------------------------------------------------------------------+
+|modelInfo          |Y        |1          |ModelMetaData Object |A list of identifiers.                                   |
++-------------------+---------+-----------+-------+-----------------------------------------------------------------------+
+|serviceName	    |Y	      |1	      |String |The name of a service                                                  |
++-------------------+---------+-----------+-------+-----------------------------------------------------------------------+
+
+LicenseInfo Object
+
++-------------------+---------+-----------+-------+-----------------------------------------------------------------------+
+|Attribute          |Required |Cardinality|Content|Description                                                            |
++===================+=========+===========+=======+=======================================================================+
+|licenseDemands     |Y        |1..N       |List of LicenseDemands Object |A list of resources for license selection.      |
++-------------------+---------+-----------+-------+-----------------------------------------------------------------------+
+
+LicenseDemand Object
+
++-------------------+---------+-----------+-------+-----------------------------------------------------------------------+
+|Attribute          |Required |Cardinality|Content|Description                                                            |
++===================+=========+===========+=======+=======================================================================+
+|resourceModuleName |Y        |1          |String |A resource name as defined in a service model.                         |
++-------------------+---------+-----------+-------+-----------------------------------------------------------------------+
+|serviceResourceId  |Y        |1          |String |A unique resource Id with a local scope between client and OOF.        |
++-------------------+---------+-----------+-------+-----------------------------------------------------------------------+
+|resourceModelInfo  |Y        |1          |ModelMetaData Object |Resource model information as defined in a service model.|
++-------------------+---------+-----------+-------+-----------------------------------------------------------------------+
+|existingLicenses   |N        |1          |LicenseModel Object  |Existing license information assigned to a resource.     |
++-------------------+---------+-----------+-------+-----------------------------------------------------------------------+
+
+LicenseModel Object
+
++-------------------+---------+-----------+-------+-----------------------------------------------------------------------+
+|Attribute          |Required |Cardinality|Content|Description                                                            |
++===================+=========+===========+=======+=======================================================================+
+|entitlementPoolUUID|Y        |1..N       |List   |Entitlement pool UUIDs associated with a resource.                     |
++-------------------+---------+-----------+-------+-----------------------------------------------------------------------+
+|licenseKeyGroupUUID|Y        |1..N       |List   |License key groups associated with a resource.                         |
++-------------------+---------+-----------+-------+-----------------------------------------------------------------------+
+
+
+Response Body
+
++-------------------+---------+-----------+-------+-----------------------------------------------------------------------+
+|Attribute          |Required |Cardinality|Content|Description                                                            |
++===================+=========+===========+=======+=======================================================================+
+|requestId          |Y        |1          |String |A unique Id for an ONAP transaction.                                   |
++-------------------+---------+-----------+-------+-----------------------------------------------------------------------+
+|transactionId      |Y        |1          |String |A unique ID to track multiple requests associated with a transaction.  |
++-------------------+---------+-----------+-------+-----------------------------------------------------------------------+
+|statusMessage      |N        |1          |String |Reasoning if a requestStatus is failed.                                |
++-------------------+---------+-----------+-------+-----------------------------------------------------------------------+
+|requestStatus      |Y        |1          |String |The status of a request.                                               |
++-------------------+---------+-----------+-------+-----------------------------------------------------------------------+
\ No newline at end of file
diff --git a/docs/images/SO_1.png b/docs/images/SO_1.png
new file mode 100644
index 0000000..8e477ac
--- /dev/null
+++ b/docs/images/SO_1.png
Binary files differ
diff --git a/docs/images/SO_Architecture_1.png b/docs/images/SO_Architecture_1.png
index a50c01b..53836ff 100644
--- a/docs/images/SO_Architecture_1.png
+++ b/docs/images/SO_Architecture_1.png
Binary files differ
diff --git a/docs/images/SO_R1_1.png b/docs/images/SO_R1_1.png
deleted file mode 100644
index 06d9eb3..0000000
--- a/docs/images/SO_R1_1.png
+++ /dev/null
Binary files differ
diff --git a/docs/index.rst b/docs/index.rst
index 9fd4cc3..86b6447 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -1,6 +1,6 @@
 .. This work is licensed under a Creative Commons Attribution 4.0 International License.

 .. http://creativecommons.org/licenses/by/4.0

-.. Copyright 2017 Huawei Technologies Co., Ltd.

+.. Copyright 2018 Huawei Technologies Co., Ltd.

 

 ONAP SO

 ========================================

diff --git a/docs/installation.rst b/docs/installation.rst
index 07f534e..cde26e0 100644
--- a/docs/installation.rst
+++ b/docs/installation.rst
@@ -1,7 +1,7 @@
-.. _open_cli_schema_version_1_0:
+.. _onap_so_schema_version_2_0:
 .. This work is licensed under a Creative Commons Attribution 4.0 International License.
 .. http://creativecommons.org/licenses/by/4.0
-.. Copyright 2017 Huawei Technologies Co., Ltd.
+.. Copyright 2018 Huawei Technologies Co., Ltd.
 
 Install and Configure Service Orchestrator
 ==========================================
diff --git a/docs/offered_consumed_apis.rst b/docs/offered_consumed_apis.rst
index 8888c64..f18b5bd 100644
--- a/docs/offered_consumed_apis.rst
+++ b/docs/offered_consumed_apis.rst
@@ -1,6 +1,6 @@
 .. This work is licensed under a Creative Commons Attribution 4.0 International License.

 .. http://creativecommons.org/licenses/by/4.0

-.. Copyright 2017 Huawei Technologies Co., Ltd.

+.. Copyright 2018 Huawei Technologies Co., Ltd.

 

 SO Offered and Consumed APIs

 =====================================

@@ -12,4 +12,4 @@
 .. toctree::

    :maxdepth: 1

    

-   SO_R1_Interface.rst

+   SO_Interface.rst

diff --git a/docs/release-notes.rst b/docs/release-notes.rst
index f05f9ce..b27b2a3 100644
--- a/docs/release-notes.rst
+++ b/docs/release-notes.rst
@@ -1,6 +1,6 @@
 .. This work is licensed under a Creative Commons Attribution 4.0 International License.
 .. http://creativecommons.org/licenses/by/4.0
-.. Copyright 2017 Huawei Intellectual Property.  All rights reserved.
+.. Copyright 2018 Huawei Intellectual Property.  All rights reserved.
 
 
 Service Orchestrator Release Notes
@@ -11,11 +11,12 @@
 Version: 1.2.2
 --------------
 
-:Release Date: 2018-05-24
+:Release Date: 2018-06-07
 
 The Beijing release is the second release of the Service Orchestrator (SO) project.
 
 **New Features**
+
 * Enhance Platform maturity by improving CLAMP maturity matrix see `Wiki <https://wiki.onap.org/display/DW/Beijing+Release+Platform+Maturity>`_.
 * Manual scaling of network services and VNFs.
 * Homing and placement capabiliities through OOF interaction. 
@@ -24,20 +25,30 @@
 * Integrated to OOF 
 * Integrated to OOM
  
-Bug Fixes
----------
-The defects fixed in this release could be found `here<https://jira.onap.org/issues/?jql=project%20%3D%20SO%20AND%20affectedVersion%20%3D%20%22Beijing%20Release%22%20AND%20status%20%3D%20Closed%20>`_.
+**Bug Fixes**
+
+	The defects fixed in this release could be found `here <https://jira.onap.org/issues/?jql=project%20%3D%20SO%20AND%20affectedVersion%20%3D%20%22Beijing%20Release%22%20AND%20status%20%3D%20Closed%20>`_.
 
 **Known Issues**
- 
-**Security Issues**
-SO CII Badging details can be found `here<https://bestpractices.coreinfrastructure.org/en/projects/1702>`_. 
-The remaining security issues and their workarounds are captured `here <https://wiki.onap.org/pages/viewpage.action?pageId=28377799>`_.
+
+	SO docker image is still on ecmop and not onap in the repository. 
+	This will be addressed in the next release.
+
+**Security Notes**
+
+	SO code has been formally scanned during build time using NexusIQ and all Critical vulnerabilities have been addressed, items that remain open have been assessed for risk and determined to be false positive. The SO open Critical security vulnerabilities and their risk assessment have been documented as part of the `project <https://wiki.onap.org/pages/viewpage.action?pageId=28377799>`_.
+
+Quick Links:
+
+- `SO project page <https://wiki.onap.org/display/DW/Service+Orchestrator+Project>`_
+- `Passing Badge information for SO <https://bestpractices.coreinfrastructure.org/en/projects/1702>`_
+- `Project Vulnerability Review Table for SO <https://wiki.onap.org/pages/viewpage.action?pageId=28377799>`_
 
 **Upgrade Notes**
+	NA
 
 **Deprecation Notes**
-
+	NA
 
 Version: 1.1.2
 --------------
@@ -93,6 +104,7 @@
 - mso/mso-config
 	
 **Other**
+	NA
 
 ===========
 
diff --git a/mso-api-handlers/mso-api-handler-common/pom.xml b/mso-api-handlers/mso-api-handler-common/pom.xml
index 5b15c5f..6ca1f3d 100644
--- a/mso-api-handlers/mso-api-handler-common/pom.xml
+++ b/mso-api-handlers/mso-api-handler-common/pom.xml
@@ -50,6 +50,12 @@
 			<artifactId>mso-requests-db</artifactId>
 			<version>${project.version}</version>
 		</dependency>
+		<dependency>
+			<groupId>org.assertj</groupId>
+			<artifactId>assertj-core</artifactId>
+			<version>3.10.0</version>
+			<scope>test</scope>
+		</dependency>
 
 	</dependencies>
 	<build>
diff --git a/mso-api-handlers/mso-api-handler-common/src/main/java/org/openecomp/mso/apihandler/common/CamundaTaskClient.java b/mso-api-handlers/mso-api-handler-common/src/main/java/org/openecomp/mso/apihandler/common/CamundaTaskClient.java
index 845b140..cbbbff3 100644
--- a/mso-api-handlers/mso-api-handler-common/src/main/java/org/openecomp/mso/apihandler/common/CamundaTaskClient.java
+++ b/mso-api-handlers/mso-api-handler-common/src/main/java/org/openecomp/mso/apihandler/common/CamundaTaskClient.java
@@ -64,19 +64,18 @@
 	@Override

 	public HttpResponse post(String camundaReqXML, String requestId,

 			String requestTimeout, String schemaVersion, String serviceInstanceId, String action) {

-		msoLogger.debug("Method not supported");

-		return null;

+		throw new UnsupportedOperationException("Method not supported.");

 	}

 

 	@Override

 	public HttpResponse post(RequestClientParamater params) {

-		return null;

+		throw new UnsupportedOperationException("Method not supported.");

 	}

 

 	@Override

-	public HttpResponse get() throws IOException{

+	public HttpResponse get() throws IOException {

 		HttpGet get = new HttpGet(url);

-		msoLogger.debug("Camunda Task url is: "+ url);	

+		msoLogger.debug("Camunda Task url is: "+ url);

 		String encryptedCredentials;

 		if(props!=null){

 			encryptedCredentials = props.getProperty(CommonConstants.CAMUNDA_AUTH,null);

diff --git a/mso-api-handlers/mso-api-handler-common/src/main/java/org/openecomp/mso/apihandler/common/RequestClient.java b/mso-api-handlers/mso-api-handler-common/src/main/java/org/openecomp/mso/apihandler/common/RequestClient.java
index ed5d076..66369a8 100644
--- a/mso-api-handlers/mso-api-handler-common/src/main/java/org/openecomp/mso/apihandler/common/RequestClient.java
+++ b/mso-api-handlers/mso-api-handler-common/src/main/java/org/openecomp/mso/apihandler/common/RequestClient.java
@@ -24,7 +24,6 @@
 import java.security.GeneralSecurityException;
 
 import org.apache.http.HttpResponse;
-import org.apache.http.client.ClientProtocolException;
 import org.apache.http.client.HttpClient;
 import org.openecomp.mso.logger.MsoLogger;
 import org.openecomp.mso.properties.MsoJavaProperties;
@@ -65,7 +64,7 @@
 		this.client = client;
 	}
 
-	public abstract HttpResponse post(String request, String requestId, String requestTimeout, String schemaVersion, String serviceInstanceId, String action) throws ClientProtocolException, IOException;
+	public abstract HttpResponse post(String request, String requestId, String requestTimeout, String schemaVersion, String serviceInstanceId, String action) throws IOException;
 
 	public abstract HttpResponse post(String request) throws IOException;
 
diff --git a/mso-api-handlers/mso-api-handler-common/src/test/java/org/openecomp/mso/apihandler/common/CamundaTaskClientTest.java b/mso-api-handlers/mso-api-handler-common/src/test/java/org/openecomp/mso/apihandler/common/CamundaTaskClientTest.java
new file mode 100644
index 0000000..f892d13
--- /dev/null
+++ b/mso-api-handlers/mso-api-handler-common/src/test/java/org/openecomp/mso/apihandler/common/CamundaTaskClientTest.java
@@ -0,0 +1,132 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.openecomp.mso.apihandler.common;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import org.apache.http.HttpEntity;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.client.methods.HttpRequestBase;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.ArgumentCaptor;
+import org.openecomp.mso.properties.MsoJavaProperties;
+
+public class CamundaTaskClientTest {
+
+    private CamundaTaskClient testedObject = new CamundaTaskClient();
+    private HttpClient httpClientMock;
+    private static final String JSON_REQUEST = "{\"value1\": \"aaa\",\"value2\": \"bbb\"}";
+    private static final String URL_SCHEMA = "http";
+    private static final String HOST = "testhost";
+    private static final int PORT = 1234;
+    private static final String URL_PATH = "/requestMethodSuccessful";
+    private static final String URL = URL_SCHEMA + "://" + HOST + ":" + PORT + URL_PATH;
+    private static final String AUTHORIZATION_HEADER_NAME = "Authorization";
+
+    @Before
+    public void init() {
+        testedObject = new CamundaTaskClient();
+        httpClientMock = mock(HttpClient.class);
+        testedObject.setClient(httpClientMock);
+        testedObject.setUrl(URL);
+    }
+
+    @Test
+    public void postMethodSuccessful() throws IOException {
+        ArgumentCaptor<HttpPost> httpPostCaptor = ArgumentCaptor.forClass(HttpPost.class);
+        testedObject.post(JSON_REQUEST);
+        verify(httpClientMock).execute(httpPostCaptor.capture());
+        checkUri(httpPostCaptor.getValue());
+        assertThat(httpPostCaptor.getValue().getEntity().getContentType().getValue()).
+                isEqualTo(CommonConstants.CONTENT_TYPE_JSON);
+        assertThat(getJsonFromEntity(httpPostCaptor.getValue().getEntity())).isEqualTo(JSON_REQUEST);
+    }
+
+    @Test
+    public void postMethodSuccessfulWithCredentials() throws IOException {
+        ArgumentCaptor<HttpPost> httpPostCaptor = ArgumentCaptor.forClass(HttpPost.class);
+        testedObject.setProps(createMsoJavaProperties());
+        testedObject.post(JSON_REQUEST);
+        verify(httpClientMock).execute(httpPostCaptor.capture());
+        assertThat(httpPostCaptor.getValue().getHeaders(AUTHORIZATION_HEADER_NAME)).isNotEmpty();
+    }
+
+    @Test
+    public void getMethodSuccessful() throws IOException {
+        ArgumentCaptor<HttpGet> httpGetCaptor = ArgumentCaptor.forClass(HttpGet.class);
+        testedObject.get();
+        verify(httpClientMock).execute(httpGetCaptor.capture());
+        checkUri(httpGetCaptor.getValue());
+    }
+
+    @Test
+    public void getMethodSuccessfulWithCredentials() throws IOException {
+        ArgumentCaptor<HttpGet> httpGetCaptor = ArgumentCaptor.forClass(HttpGet.class);
+        testedObject.setUrl(URL);
+        testedObject.setProps(createMsoJavaProperties());
+        testedObject.get();
+        verify(httpClientMock).execute(httpGetCaptor.capture());
+        assertThat(httpGetCaptor.getValue().getHeaders(AUTHORIZATION_HEADER_NAME)).isNotEmpty();
+    }
+
+    @Test(expected = UnsupportedOperationException.class)
+    public void postMethodUnsupported() {
+        testedObject.post("", "", "", "", "", "");
+    }
+
+    @Test(expected = UnsupportedOperationException.class)
+    public void postMethodUnsupported2() {
+        testedObject.post(new RequestClientParamater.Builder().build());
+    }
+
+    private void checkUri(HttpRequestBase httpRequestBase) {
+        assertThat(httpRequestBase.getURI().getScheme()).isEqualTo(URL_SCHEMA);
+        assertThat(httpRequestBase.getURI().getHost()).isEqualTo(HOST);
+        assertThat(httpRequestBase.getURI().getPort()).isEqualTo(PORT);
+        assertThat(httpRequestBase.getURI().getPath()).isEqualTo(URL_PATH);
+    }
+
+    private MsoJavaProperties createMsoJavaProperties() {
+        MsoJavaProperties msoJavaProperties = new MsoJavaProperties();
+        msoJavaProperties.setProperty(CommonConstants.CAMUNDA_AUTH, "");
+        return msoJavaProperties;
+    }
+
+    private String getJsonFromEntity(HttpEntity httpEntity) throws IOException {
+        BufferedReader rd = new BufferedReader(
+                new InputStreamReader(httpEntity.getContent()));
+        StringBuilder result = new StringBuilder();
+        String line;
+        while ((line = rd.readLine()) != null) {
+            result.append(line);
+        }
+        return result.toString();
+    }
+
+}
\ No newline at end of file
diff --git a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/E2EServiceInstances.java b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/E2EServiceInstances.java
index 5a612db..275351d 100644
--- a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/E2EServiceInstances.java
+++ b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/E2EServiceInstances.java
@@ -215,10 +215,7 @@
 			return response;
 		}
 
-		Response returnResp = runCompareModelBPMWorkflow(e2eCompareModelReq, msoRequest, requestJSON, requestId,
-				startTime, action);
-
-		return returnResp;
+		return runCompareModelBPMWorkflow(e2eCompareModelReq, msoRequest, requestJSON, requestId, startTime, action);
 
 	}
 
@@ -279,8 +276,6 @@
 
 		ResponseHandler respHandler = new ResponseHandler(response, requestClient.getType());
 		int bpelStatus = respHandler.getStatus();
-		// String responseBody = respHandler.getResponseBody();
-		// CompareModelsResult modelDiffResponse = new CompareModelsResult();
 
 		return beplStatusUpdate(requestId, startTime, msoRequest, requestClient, respHandler, bpelStatus, action,
 				instanceIdMap);
diff --git a/mso-catalog-db/src/main/java/org/openecomp/mso/db/catalog/CatalogDatabase.java b/mso-catalog-db/src/main/java/org/openecomp/mso/db/catalog/CatalogDatabase.java
index 91c19dd..af0ea10 100644
--- a/mso-catalog-db/src/main/java/org/openecomp/mso/db/catalog/CatalogDatabase.java
+++ b/mso-catalog-db/src/main/java/org/openecomp/mso/db/catalog/CatalogDatabase.java
@@ -95,7 +95,9 @@
     private static final String MODEL_CUSTOMIZATION_UUID = "modelCustomizationUuid";
     private static final String VF_MODULE_MODEL_UUID = "vfModuleModelUUId";
     private static final String NETWORK_SERVICE = "network service";
-
+    private static final String TEMPLATE_NAME = "template_name";
+    private static final String GET_VNF_RECIPE = "getVnfRecipe";
+    
     protected static final MsoLogger LOGGER = MsoLogger.getMsoLogger (MsoLogger.Catalog.GENERAL);
 
     protected Session session = null;
@@ -123,6 +125,7 @@
         return session;
     }
 
+    
     /**
      * Close an open Catalog Database session.
      * This method should always be called when a client is finished using a
@@ -198,7 +201,7 @@
 
         String hql = "FROM HeatTemplate WHERE templateName = :template_name";
         Query query = getSession().createQuery (hql);
-        query.setParameter("template_name", templateName);
+        query.setParameter(TEMPLATE_NAME, templateName);
 
         @SuppressWarnings("unchecked")
         List <HeatTemplate> resultList = query.list();
@@ -231,8 +234,8 @@
 
         String hql = "FROM HeatTemplate WHERE templateName = :template_name AND version = :version";
         Query query = getSession().createQuery(hql);
-        query.setParameter("template_name", templateName);
-        query.setParameter("version", version);
+        query.setParameter(TEMPLATE_NAME, templateName);
+        query.setParameter(MODEL_VERSION, version);
 
         @SuppressWarnings("unchecked")
         List <HeatTemplate> resultList = query.list();
@@ -1121,14 +1124,14 @@
         List <VnfRecipe> resultList = query.list();
 
         if (resultList.isEmpty()) {
-            LOGGER.recordMetricEvent(startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc, "Successfully. VNF recipe not found", "CatalogDB", "getVnfRecipe", null);
+            LOGGER.recordMetricEvent(startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc, "Successfully. VNF recipe not found", "CatalogDB", GET_VNF_RECIPE, null);
             return null;
         }
 
         resultList.sort(new MavenLikeVersioningComparator());
         Collections.reverse(resultList);
 
-        LOGGER.recordMetricEvent(startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc, "Successfully", "CatalogDB", "getVnfRecipe", null);
+        LOGGER.recordMetricEvent(startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc, "Successfully", "CatalogDB", GET_VNF_RECIPE, null);
         return resultList.get(0);
     }
 
@@ -1156,14 +1159,14 @@
         List <VnfRecipe> resultList = query.list();
 
         if (resultList.isEmpty()) {
-            LOGGER.recordMetricEvent(startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc, "Successfully. VNF recipe not found", "CatalogDB", "getVnfRecipe", null);
+            LOGGER.recordMetricEvent(startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc, "Successfully. VNF recipe not found", "CatalogDB", GET_VNF_RECIPE, null);
             return null;
         }
 
         resultList.sort(new MavenLikeVersioningComparator());
         Collections.reverse(resultList);
 
-        LOGGER.recordMetricEvent(startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc, "Successfully", "CatalogDB", "getVnfRecipe", null);
+        LOGGER.recordMetricEvent(startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc, "Successfully", "CatalogDB", GET_VNF_RECIPE, null);
         return resultList.get(0);
     }
     
@@ -1189,14 +1192,14 @@
         List <VnfRecipe> resultList = query.list();
 
         if (resultList.isEmpty()) {
-            LOGGER.recordMetricEvent(startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc, "Successfully. VNF recipe not found", "CatalogDB", "getVnfRecipe", null);
+            LOGGER.recordMetricEvent(startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc, "Successfully. VNF recipe not found", "CatalogDB", GET_VNF_RECIPE, null);
             return null;
         }
 
         resultList.sort(new MavenLikeVersioningComparator());
         Collections.reverse(resultList);
 
-        LOGGER.recordMetricEvent(startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc, "Successfully", "CatalogDB", "getVnfRecipe", null);
+        LOGGER.recordMetricEvent(startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc, "Successfully", "CatalogDB", GET_VNF_RECIPE, null);
         return resultList.get(0);
     }
     
@@ -1237,11 +1240,11 @@
         List <VnfRecipe> resultList = query.list();
 
         if (resultList.isEmpty()) {
-            LOGGER.recordMetricEvent(startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc, "Successfully. VNF recipe not found", "CatalogDB", "getVnfRecipe", null);
+            LOGGER.recordMetricEvent(startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc, "Successfully. VNF recipe not found", "CatalogDB", GET_VNF_RECIPE, null);
             return null;
         }
 
-        LOGGER.recordMetricEvent(startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc, "Successfully", "CatalogDB", "getVnfRecipe", null);
+        LOGGER.recordMetricEvent(startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc, "Successfully", "CatalogDB", GET_VNF_RECIPE, null);
         return resultList.get(0);
     }
 
@@ -1342,7 +1345,7 @@
         String hql = "FROM VfModule WHERE type = :type and version = :version";
         Query query = getSession().createQuery(hql);
         query.setParameter ("type", type);
-        query.setParameter ("version", version);
+        query.setParameter (MODEL_VERSION, version);
         VfModule module = null;
         try {
         	module = (VfModule) query.uniqueResult ();
@@ -2867,7 +2870,7 @@
 
             query = getSession ().createQuery (hql.toString ());
             query.setParameter ("modelCustomizationUuid", modelCustomizationUuid);
-            query.setParameter ("version", asdcServiceModelVersion);
+            query.setParameter (MODEL_VERSION, asdcServiceModelVersion);
         }else{
             hql = new StringBuilder ("FROM VfModule WHERE type = :type AND version = :version AND modelVersion = :modelVersion");
 
@@ -2875,7 +2878,7 @@
 
             query = getSession ().createQuery (hql.toString ());
             query.setParameter (TYPE, vfModuleType);
-            query.setParameter ("version", asdcServiceModelVersion);
+            query.setParameter (MODEL_VERSION, asdcServiceModelVersion);
             query.setParameter ("modelVersion", modelVersion);
         }
 
@@ -3490,8 +3493,8 @@
 
         String hql = "FROM HeatTemplate WHERE templateName = :template_name AND version = :version AND asdcResourceName = :asdcResourceName";
         Query query = getSession ().createQuery (hql);
-        query.setParameter ("template_name", templateName);
-        query.setParameter ("version", version);
+        query.setParameter (TEMPLATE_NAME, templateName);
+        query.setParameter (MODEL_VERSION, version);
         query.setParameter ("asdcResourceName", asdcResourceName);
 
         @SuppressWarnings("unchecked")
@@ -3603,7 +3606,7 @@
         String hql = "FROM HeatEnvironment WHERE name=:name AND version=:version AND asdcResourceName=:asdcResourceName";
         Query query = getSession ().createQuery (hql);
         query.setParameter ("name", name);
-        query.setParameter ("version", version);
+        query.setParameter (MODEL_VERSION, version);
         query.setParameter ("asdcResourceName", asdcResourceName);
         HeatEnvironment env = null;
         try {
@@ -3645,7 +3648,7 @@
         String hql = "FROM HeatEnvironment WHERE artifactUuid=:artifactUuid AND version=:version";
         Query query = getSession ().createQuery (hql);
         query.setParameter ("artifactUuid", artifactUuid);
-        query.setParameter ("version", version);
+        query.setParameter (MODEL_VERSION, version);
         HeatEnvironment env = null;
         try {
         	env = (HeatEnvironment) query.uniqueResult ();
@@ -4283,7 +4286,7 @@
           query.setParameter ("fileName", fileName);
           query.setParameter ("vnfResourceId", vnfResourceId);
           query.setParameter ("asdcResourceName", asdcResourceName);
-          query.setParameter ("version", version);
+          query.setParameter (MODEL_VERSION, version);
 
           @SuppressWarnings("unchecked")
 
diff --git a/mso-catalog-db/src/main/java/org/openecomp/mso/db/catalog/beans/HeatEnvironment.java b/mso-catalog-db/src/main/java/org/openecomp/mso/db/catalog/beans/HeatEnvironment.java
index 899127c..8baf620 100644
--- a/mso-catalog-db/src/main/java/org/openecomp/mso/db/catalog/beans/HeatEnvironment.java
+++ b/mso-catalog-db/src/main/java/org/openecomp/mso/db/catalog/beans/HeatEnvironment.java
@@ -38,8 +38,6 @@
 
 	private Timestamp created = null;
 
-	public HeatEnvironment() {}
-
 	public String getArtifactUuid() {
 		return this.artifactUuid;
 	}
diff --git a/mso-catalog-db/src/main/java/org/openecomp/mso/db/catalog/beans/HeatFiles.java b/mso-catalog-db/src/main/java/org/openecomp/mso/db/catalog/beans/HeatFiles.java
index 8d7da22..542cd45 100644
--- a/mso-catalog-db/src/main/java/org/openecomp/mso/db/catalog/beans/HeatFiles.java
+++ b/mso-catalog-db/src/main/java/org/openecomp/mso/db/catalog/beans/HeatFiles.java
@@ -38,7 +38,6 @@
 	private String version = null;
 	private String artifactChecksum = null;
 
-	public HeatFiles() {}
 
 	public String getArtifactUuid() {
 		return this.artifactUuid;
diff --git a/pom.xml b/pom.xml
index c4c29e2..e51ad70 100644
--- a/pom.xml
+++ b/pom.xml
@@ -30,7 +30,7 @@
     <module>status-control</module>
     <module>bpmn</module>
     <module>packages</module>
-    <module>aria</module>
+    <!-- module>aria</module -->
   </modules>
   <properties>
     <project.mso.base.folder>.</project.mso.base.folder>
diff --git a/version.properties b/version.properties
index d3e09bb..e1e6b0b 100644
--- a/version.properties
+++ b/version.properties
@@ -4,7 +4,7 @@
 
 major=1
 minor=2
-patch=1
+patch=2
 
 base_version=${major}.${minor}.${patch}