Merge "Remove file not used in workflow."
diff --git a/adapters/mso-adapter-utils/pom.xml b/adapters/mso-adapter-utils/pom.xml
index 2efb336..e264a20 100644
--- a/adapters/mso-adapter-utils/pom.xml
+++ b/adapters/mso-adapter-utils/pom.xml
@@ -54,34 +54,22 @@
 			<version>${project.version}</version>
 		</dependency>
 		<dependency>
-<!--
 			<groupId>org.onap.so.libs.openstack-java-sdk</groupId>
--->
-			<groupId>org.openecomp.so.libs.openstack-java-sdk</groupId>
 			<artifactId>keystone-client</artifactId>
 			<version>${openstack.version}</version>
 		</dependency>
 		<dependency>
-<!--
 			<groupId>org.onap.so.libs.openstack-java-sdk</groupId>
--->
-			<groupId>org.openecomp.so.libs.openstack-java-sdk</groupId>
 			<artifactId>heat-client</artifactId>
 			<version>${openstack.version}</version>
 		</dependency>
 		<dependency>
-<!--
 			<groupId>org.onap.so.libs.openstack-java-sdk</groupId>
--->
-			<groupId>org.openecomp.so.libs.openstack-java-sdk</groupId>
 			<artifactId>quantum-client</artifactId>
 			<version>${openstack.version}</version>
 		</dependency>
 		<dependency>
-<!--
 			<groupId>org.onap.so.libs.openstack-java-sdk.client-connectors</groupId>
--->
-			<groupId>org.openecomp.so.libs.openstack-java-sdk.client-connectors</groupId>
 			<artifactId>http-connector</artifactId>
 			<version>${openstack.version}</version>
 		</dependency>
diff --git a/adapters/mso-catalog-db-adapter/src/test/java/org/openecomp/mso/adapters/catalogdb/CatalogDbAdapterRestTest.java b/adapters/mso-catalog-db-adapter/src/test/java/org/openecomp/mso/adapters/catalogdb/CatalogDbAdapterRestTest.java
new file mode 100644
index 0000000..2e22e97
--- /dev/null
+++ b/adapters/mso-catalog-db-adapter/src/test/java/org/openecomp/mso/adapters/catalogdb/CatalogDbAdapterRestTest.java
@@ -0,0 +1,103 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2018 Huawei 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.catalogdb;
+
+import org.junit.Test;
+
+public class CatalogDbAdapterRestTest {
+
+    CatalogDbAdapterRest catalogDbAdapterRest = new CatalogDbAdapterRest();
+
+    @Test(expected = NullPointerException.class)
+    public void respond() throws Exception {
+        catalogDbAdapterRest.respond(null, 0, true, null);
+    }
+
+    @Test
+    public void healthcheck() throws Exception {
+    	catalogDbAdapterRest.healthcheck("test");
+    }
+
+    @Test
+    public void serviceVnfs() throws Exception {
+    	catalogDbAdapterRest.serviceVnfs("test", "test");
+    }
+
+    @Test
+    public void serviceVnfs1() throws Exception {
+    	catalogDbAdapterRest.serviceVnfs("test", "test", "test", "test", "test", "test");
+    }
+
+    @Test
+    public void serviceVnfsImpl() throws Exception {
+    	catalogDbAdapterRest.serviceVnfsImpl("test", false, "test", "test", "test", "test", "test");
+    }
+
+    @Test
+    public void serviceNetworks() throws Exception {
+    	catalogDbAdapterRest.serviceNetworks("test", "test");
+    }
+
+    @Test
+    public void serviceNetworks1() throws Exception {
+    	catalogDbAdapterRest.serviceNetworks("test", "test", "test", "test", "test", "test", "test", "test");
+    }
+
+    @Test
+    public void serviceNetworksImpl() throws Exception {
+    	catalogDbAdapterRest.serviceNetworksImpl("test", false, "test", "test", "test", "test", "test");
+    }
+
+    @Test
+    public void serviceResources() throws Exception {
+    	catalogDbAdapterRest.serviceResources("test", "test", "test", "test");
+    }
+
+    @Test
+    public void serviceAllottedResources() throws Exception {
+    	catalogDbAdapterRest.serviceAllottedResources("test", "test");
+    }
+
+    @Test
+    public void serviceAllottedResources1() throws Exception {
+    	catalogDbAdapterRest.serviceAllottedResources("test", "test", "test", "test", "test");
+    }
+
+    @Test
+    public void serviceAllottedResourcesImpl() throws Exception {
+    	catalogDbAdapterRest.serviceAllottedResourcesImpl("test", false, "test", "test", "test", "test");
+    }
+
+    @Test
+    public void vfModules() throws Exception {
+    	catalogDbAdapterRest.vfModules("test");
+    }
+
+    @Test
+    public void serviceToscaCsar() throws Exception {
+    	catalogDbAdapterRest.serviceToscaCsar("test");
+    }
+
+    @Test
+    public void resourceRecipe() throws Exception {
+    	catalogDbAdapterRest.resourceRecipe("test", "test");
+    }
+
+}
\ No newline at end of file
diff --git a/adapters/mso-network-adapter/src/test/java/org/openecomp/mso/adapters/network/BpelRestClientTest.java b/adapters/mso-network-adapter/src/test/java/org/openecomp/mso/adapters/network/BpelRestClientTest.java
new file mode 100644
index 0000000..9ab6ce6
--- /dev/null
+++ b/adapters/mso-network-adapter/src/test/java/org/openecomp/mso/adapters/network/BpelRestClientTest.java
@@ -0,0 +1,97 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2018 Huawei 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.network;
+
+import org.junit.Test;
+
+public class BpelRestClientTest {
+
+    BpelRestClient bpelRestClient = new BpelRestClient();
+
+    @Test
+    public void getSocketTimeoutTest() throws Exception {
+        bpelRestClient.getSocketTimeout();
+    }
+
+    @Test
+    public void setSocketTimeoutTest() throws Exception {
+        bpelRestClient.setSocketTimeout(300);
+    }
+
+    @Test
+    public void getConnectTimeoutTest() throws Exception {
+        bpelRestClient.getConnectTimeout();
+    }
+
+    @Test
+    public void setConnectTimeoutTest() throws Exception {
+        bpelRestClient.setConnectTimeout(200);
+    }
+
+    @Test
+    public void getRetryCountTest() throws Exception {
+        bpelRestClient.getRetryCount();
+    }
+
+    @Test
+    public void setRetryCountTest() throws Exception {
+        bpelRestClient.setRetryCount(3);
+    }
+
+    @Test
+    public void getRetryIntervalTest() throws Exception {
+        bpelRestClient.getRetryInterval();
+    }
+
+    @Test
+    public void setRetryIntervalTest() throws Exception {
+        bpelRestClient.setRetryInterval(3);
+    }
+
+    @Test
+    public void getCredentialsTest() throws Exception {
+        bpelRestClient.getCredentials();
+    }
+
+    @Test
+    public void setCredentialsTest() throws Exception {
+        bpelRestClient.setCredentials("test");
+    }
+
+    @Test
+    public void getRetryListTest() throws Exception {
+        bpelRestClient.getRetryList();
+    }
+
+    @Test
+    public void setRetryListTest() throws Exception {
+        bpelRestClient.setRetryList("retry list");
+    }
+
+    @Test
+    public void getLastResponseCodeTest() throws Exception {
+        bpelRestClient.getLastResponseCode();
+    }
+
+    @Test
+    public void getLastResponseTest() throws Exception {
+        bpelRestClient.getLastResponse();
+    }
+}
\ No newline at end of file
diff --git a/adapters/mso-requests-db-adapter/pom.xml b/adapters/mso-requests-db-adapter/pom.xml
index 582d1ea..51d9092 100644
--- a/adapters/mso-requests-db-adapter/pom.xml
+++ b/adapters/mso-requests-db-adapter/pom.xml
@@ -22,7 +22,7 @@
 		<dependency>
 			<groupId>org.jboss.resteasy</groupId>
 			<artifactId>resteasy-jaxrs</artifactId>
-			<version>3.0.19.Final</version>
+			<version>3.5.0.Final</version>
 			<scope>provided</scope>
 			<exclusions>
 				<exclusion>
diff --git a/adapters/mso-requests-db-adapter/src/main/java/org/openecomp/mso/adapters/requestsdb/MsoRequestsDbAdapterImpl.java b/adapters/mso-requests-db-adapter/src/main/java/org/openecomp/mso/adapters/requestsdb/MsoRequestsDbAdapterImpl.java
index 358fe53..925086a 100644
--- a/adapters/mso-requests-db-adapter/src/main/java/org/openecomp/mso/adapters/requestsdb/MsoRequestsDbAdapterImpl.java
+++ b/adapters/mso-requests-db-adapter/src/main/java/org/openecomp/mso/adapters/requestsdb/MsoRequestsDbAdapterImpl.java
@@ -70,59 +70,59 @@
         long startTime = System.currentTimeMillis ();
         try {
            	session.beginTransaction ();
-            String queryString = "update InfraActiveRequests set ";
+            StringBuilder queryString = new StringBuilder("update InfraActiveRequests set ");
             if (statusMessage != null) {
-                queryString += "statusMessage = :statusMessage, ";
+                queryString.append("statusMessage = :statusMessage, ");
             }
             if (responseBody != null) {
-                queryString += "responseBody = :responseBody, ";
+                queryString.append("responseBody = :responseBody, ");
             }
             if (requestStatus != null) {
-                queryString += "requestStatus = :requestStatus, ";
+                queryString.append("requestStatus = :requestStatus, ");
             }
             if (progress != null) {
-                queryString += "progress = :progress, ";
+                queryString.append("progress = :progress, ");
             }
             if (vnfOutputs != null) {
-                queryString += "vnfOutputs = :vnfOutputs, ";
+                queryString.append("vnfOutputs = :vnfOutputs, ");
             }
             if (serviceInstanceId != null) {
-                queryString += "serviceInstanceId = :serviceInstanceId, ";
+                queryString.append("serviceInstanceId = :serviceInstanceId, ");
             }
             if (networkId != null) {
-                queryString += "networkId = :networkId, ";
+                queryString.append("networkId = :networkId, ");
             }
             if (vnfId != null) {
-                queryString += "vnfId = :vnfId, ";
+                queryString.append("vnfId = :vnfId, ");
             }
             if (vfModuleId != null) {
-                queryString += "vfModuleId = :vfModuleId, ";
+                queryString.append("vfModuleId = :vfModuleId, ");
             }
             if (volumeGroupId != null) {
-                queryString += "volumeGroupId = :volumeGroupId, ";
+                queryString.append("volumeGroupId = :volumeGroupId, ");
             }
             if (serviceInstanceName != null) {
-                queryString += "serviceInstanceName = :serviceInstanceName, ";
+                queryString.append("serviceInstanceName = :serviceInstanceName, ");
             }
             if (vfModuleName != null) {
-                queryString += "vfModuleName = :vfModuleName, ";
+                queryString.append("vfModuleName = :vfModuleName, ");
             }
             if (configurationId != null) {
-                queryString += "configurationId = :configurationId, ";
+                queryString.append("configurationId = :configurationId, ");
             }
             if (configurationName != null) {
-                queryString += "configurationName = :configurationName, ";
+                queryString.append("configurationName = :configurationName, ");
             }
             if (requestStatus == RequestStatusType.COMPLETE || requestStatus == RequestStatusType.FAILED) {
-                queryString += "endTime = :endTime, ";
+                queryString.append("endTime = :endTime, ");
             } else {
-                queryString += "modifyTime = :modifyTime, ";
+                queryString.append("modifyTime = :modifyTime, ");
             }
-            queryString += "lastModifiedBy = :lastModifiedBy where requestId = :requestId OR clientRequestId = :requestId";
+            queryString.append("lastModifiedBy = :lastModifiedBy where requestId = :requestId OR clientRequestId = :requestId");
 
-            logger.debug("Executing update: " + queryString);
+            logger.debug("Executing update: " + queryString.toString());
 
-            Query query = session.createQuery (queryString);
+            Query query = session.createQuery (queryString.toString());
             query.setParameter ("requestId", requestId);
             if (statusMessage != null) {
                 query.setParameter ("statusMessage", statusMessage);
diff --git a/adapters/mso-vnf-adapter/src/test/java/org/openecomp/mso/adapters/vnf/HealthCheckHandlerTest.java b/adapters/mso-vnf-adapter/src/test/java/org/openecomp/mso/adapters/vnf/HealthCheckHandlerTest.java
new file mode 100644
index 0000000..12e2fa0
--- /dev/null
+++ b/adapters/mso-vnf-adapter/src/test/java/org/openecomp/mso/adapters/vnf/HealthCheckHandlerTest.java
@@ -0,0 +1,33 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2018 Huawei Technologies Co., Ltd. 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.vnf;
+
+import org.junit.Test;
+
+public class HealthCheckHandlerTest {
+
+    HealthCheckHandler healthCheckHandler = new HealthCheckHandler();
+
+    @Test(expected = ClassFormatError.class)
+    public void healthcheckTest() throws Exception {
+        healthCheckHandler.healthcheck("req-123");
+    }
+
+}
\ No newline at end of file
diff --git a/adapters/mso-vnf-adapter/src/test/java/org/openecomp/mso/adapters/vnf/test/MsoVnfAdapterAsyncImplTest.java b/adapters/mso-vnf-adapter/src/test/java/org/openecomp/mso/adapters/vnf/MsoVnfAdapterAsyncImplTest.java
similarity index 97%
rename from adapters/mso-vnf-adapter/src/test/java/org/openecomp/mso/adapters/vnf/test/MsoVnfAdapterAsyncImplTest.java
rename to adapters/mso-vnf-adapter/src/test/java/org/openecomp/mso/adapters/vnf/MsoVnfAdapterAsyncImplTest.java
index acde315..b00b7a0 100644
--- a/adapters/mso-vnf-adapter/src/test/java/org/openecomp/mso/adapters/vnf/test/MsoVnfAdapterAsyncImplTest.java
+++ b/adapters/mso-vnf-adapter/src/test/java/org/openecomp/mso/adapters/vnf/MsoVnfAdapterAsyncImplTest.java
@@ -2,7 +2,7 @@
  * ============LICENSE_START=======================================================

  * ONAP - SO

  * ================================================================================

- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.

+ * Copyright (C) 2018 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.

@@ -18,7 +18,7 @@
  * ============LICENSE_END=========================================================

  */

 

-package org.openecomp.mso.adapters.vnf.test;

+package org.openecomp.mso.adapters.vnf;

 

 import java.util.HashMap;

 import java.util.Map;

diff --git a/adapters/mso-vnf-adapter/src/test/java/org/openecomp/mso/adapters/vnf/test/MsoVnfAdapterImplTest.java b/adapters/mso-vnf-adapter/src/test/java/org/openecomp/mso/adapters/vnf/MsoVnfAdapterImplTest.java
similarity index 96%
rename from adapters/mso-vnf-adapter/src/test/java/org/openecomp/mso/adapters/vnf/test/MsoVnfAdapterImplTest.java
rename to adapters/mso-vnf-adapter/src/test/java/org/openecomp/mso/adapters/vnf/MsoVnfAdapterImplTest.java
index eec2257..d1c090d 100644
--- a/adapters/mso-vnf-adapter/src/test/java/org/openecomp/mso/adapters/vnf/test/MsoVnfAdapterImplTest.java
+++ b/adapters/mso-vnf-adapter/src/test/java/org/openecomp/mso/adapters/vnf/MsoVnfAdapterImplTest.java
@@ -2,7 +2,7 @@
  * ============LICENSE_START=======================================================

  * ONAP - SO

  * ================================================================================

- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.

+ * Copyright (C) 2018 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.

@@ -18,7 +18,7 @@
  * ============LICENSE_END=========================================================

  */

 

-package org.openecomp.mso.adapters.vnf.test;

+package org.openecomp.mso.adapters.vnf;

 

 import java.util.HashMap;

 import java.util.Map;

diff --git a/adapters/mso-vnf-adapter/src/test/java/org/openecomp/mso/adapters/vnf/test/MsoVnfAdapterImplTest.java b/adapters/mso-vnf-adapter/src/test/java/org/openecomp/mso/adapters/vnf/MsoVnfCloudifyAdapterImplTest.java
similarity index 67%
copy from adapters/mso-vnf-adapter/src/test/java/org/openecomp/mso/adapters/vnf/test/MsoVnfAdapterImplTest.java
copy to adapters/mso-vnf-adapter/src/test/java/org/openecomp/mso/adapters/vnf/MsoVnfCloudifyAdapterImplTest.java
index eec2257..a773d13 100644
--- a/adapters/mso-vnf-adapter/src/test/java/org/openecomp/mso/adapters/vnf/test/MsoVnfAdapterImplTest.java
+++ b/adapters/mso-vnf-adapter/src/test/java/org/openecomp/mso/adapters/vnf/MsoVnfCloudifyAdapterImplTest.java
@@ -2,7 +2,7 @@
  * ============LICENSE_START=======================================================

  * ONAP - SO

  * ================================================================================

- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.

+ * Copyright (C) 2018 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.

@@ -18,27 +18,27 @@
  * ============LICENSE_END=========================================================

  */

 

-package org.openecomp.mso.adapters.vnf.test;

+package org.openecomp.mso.adapters.vnf;

 

 import java.util.HashMap;

 import java.util.Map;

 import javax.xml.ws.Holder;

 import org.junit.Test;

-import org.openecomp.mso.adapters.vnf.MsoVnfAdapterImpl;

+import org.openecomp.mso.adapters.vnf.MsoVnfCloudifyAdapterImpl;

 import org.openecomp.mso.entity.MsoRequest;

 import org.openecomp.mso.openstack.beans.VnfRollback;

 

-public class MsoVnfAdapterImplTest {

+public class MsoVnfCloudifyAdapterImplTest {

 

 	@Test

 	public void healthCheckVNFTest() {

-		MsoVnfAdapterImpl instance = new MsoVnfAdapterImpl();

+		MsoVnfCloudifyAdapterImpl instance = new MsoVnfCloudifyAdapterImpl();

 		instance.healthCheck();

 	}

 

 	@Test

 	public void createVnfTest() {

-		MsoVnfAdapterImpl instance = new MsoVnfAdapterImpl();

+		MsoVnfCloudifyAdapterImpl instance = new MsoVnfCloudifyAdapterImpl();

 		MsoRequest msoRequest = new MsoRequest();

 		msoRequest.setRequestId("12345");

 		msoRequest.setServiceInstanceId("12345");

@@ -46,28 +46,27 @@
 		Map<String, String> map = new HashMap<>();

 		map.put("key1", "value1");

 		try {

-			instance.createVfModule("mdt1", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "vSAMP12", "VFMOD",

-					"volumeGroupHeatStackId|1", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,

+			instance.createVnf("mdt1", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "vSAMP12", "VFMOD",

+					"volumeGroupHeatStackId|1", map,

 					Boolean.FALSE, Boolean.TRUE, msoRequest, new Holder<>(), new Holder<>(),

                 new Holder<>());

 		} catch (Exception e) {

-

 		}

 	}

 

 	@Test

 	public void updateVnfTest() {

-		MsoVnfAdapterImpl instance = new MsoVnfAdapterImpl();

+		MsoVnfCloudifyAdapterImpl instance = new MsoVnfCloudifyAdapterImpl();

 		MsoRequest msoRequest = new MsoRequest();

 		msoRequest.setRequestId("12345");

 		msoRequest.setServiceInstanceId("12345");

 

 		Map<String, String> map = new HashMap<>();

+		

 		map.put("key1", "value1");

 		try {

-			instance.updateVfModule("mdt1", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "vSAMP12", "VFMOD",

-					"volumeGroupHeatStackId|1", "baseVfHeatStackId", "vfModuleStackId",

-					"88a6ca3ee0394ade9403f075db23167e", map, msoRequest, new Holder<>(),

+			instance.updateVnf("mdt1", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "vSAMP12", "VFMOD",

+					"volumeGroupHeatStackId|1",  map, msoRequest, new Holder<>(),

                 new Holder<>());

 		} catch (Exception e) {

 

@@ -76,13 +75,12 @@
 

 	@Test

 	public void deleteVnfTest() {

-		MsoVnfAdapterImpl instance = new MsoVnfAdapterImpl();

+		MsoVnfCloudifyAdapterImpl instance = new MsoVnfCloudifyAdapterImpl();

 		MsoRequest msoRequest = new MsoRequest();

 		msoRequest.setRequestId("12345");

 		msoRequest.setServiceInstanceId("12345");

 		try {

-			instance.deleteVfModule("mdt1", "88a6ca3ee0394ade9403f075db23167e", "vSAMP12", msoRequest,

-                new Holder<>());

+			instance.deleteVnf("mdt1", "88a6ca3ee0394ade9403f075db23167e", "vSAMP12", msoRequest);

 		} catch (Exception e) {

 

 		}

diff --git a/adapters/mso-vnf-adapter/src/test/java/org/openecomp/mso/adapters/vnf/test/QueryTest.java b/adapters/mso-vnf-adapter/src/test/java/org/openecomp/mso/adapters/vnf/QueryTest.java
similarity index 97%
rename from adapters/mso-vnf-adapter/src/test/java/org/openecomp/mso/adapters/vnf/test/QueryTest.java
rename to adapters/mso-vnf-adapter/src/test/java/org/openecomp/mso/adapters/vnf/QueryTest.java
index 282b3b1..8ee9d7f 100644
--- a/adapters/mso-vnf-adapter/src/test/java/org/openecomp/mso/adapters/vnf/test/QueryTest.java
+++ b/adapters/mso-vnf-adapter/src/test/java/org/openecomp/mso/adapters/vnf/QueryTest.java
@@ -2,7 +2,7 @@
  * ============LICENSE_START=======================================================
  * ONAP - SO
  * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2018 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.
@@ -18,7 +18,7 @@
  * ============LICENSE_END=========================================================
  */
 
-package org.openecomp.mso.adapters.vnf.test;
+package org.openecomp.mso.adapters.vnf;
 
 
 import static org.junit.Assert.assertFalse;
diff --git a/adapters/mso-vnf-adapter/src/test/java/org/openecomp/mso/adapters/vnf/test/VnfCreateTest.java b/adapters/mso-vnf-adapter/src/test/java/org/openecomp/mso/adapters/vnf/VnfCreateTest.java
similarity index 95%
rename from adapters/mso-vnf-adapter/src/test/java/org/openecomp/mso/adapters/vnf/test/VnfCreateTest.java
rename to adapters/mso-vnf-adapter/src/test/java/org/openecomp/mso/adapters/vnf/VnfCreateTest.java
index 000ed8a..a807aaf 100644
--- a/adapters/mso-vnf-adapter/src/test/java/org/openecomp/mso/adapters/vnf/test/VnfCreateTest.java
+++ b/adapters/mso-vnf-adapter/src/test/java/org/openecomp/mso/adapters/vnf/VnfCreateTest.java
@@ -2,7 +2,7 @@
  * ============LICENSE_START=======================================================
  * ONAP - SO
  * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2018 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.
@@ -18,7 +18,7 @@
  * ============LICENSE_END=========================================================
  */
 
-package org.openecomp.mso.adapters.vnf.test;
+package org.openecomp.mso.adapters.vnf;
 
 
 import java.util.HashMap;
diff --git a/adapters/mso-vnf-adapter/src/test/java/org/openecomp/mso/adapters/vnf/test/VnfDeleteTest.java b/adapters/mso-vnf-adapter/src/test/java/org/openecomp/mso/adapters/vnf/VnfDeleteTest.java
similarity index 93%
rename from adapters/mso-vnf-adapter/src/test/java/org/openecomp/mso/adapters/vnf/test/VnfDeleteTest.java
rename to adapters/mso-vnf-adapter/src/test/java/org/openecomp/mso/adapters/vnf/VnfDeleteTest.java
index e9b33eb..a820202 100644
--- a/adapters/mso-vnf-adapter/src/test/java/org/openecomp/mso/adapters/vnf/test/VnfDeleteTest.java
+++ b/adapters/mso-vnf-adapter/src/test/java/org/openecomp/mso/adapters/vnf/VnfDeleteTest.java
@@ -2,7 +2,7 @@
  * ============LICENSE_START=======================================================
  * ONAP - SO
  * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2018 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.
@@ -18,7 +18,7 @@
  * ============LICENSE_END=========================================================
  */
 
-package org.openecomp.mso.adapters.vnf.test;
+package org.openecomp.mso.adapters.vnf;
 
 
 
diff --git a/adapters/mso-vnf-adapter/src/test/java/org/openecomp/mso/adapters/vnf/test/VnfQueryTest.java b/adapters/mso-vnf-adapter/src/test/java/org/openecomp/mso/adapters/vnf/VnfQueryTest.java
similarity index 94%
rename from adapters/mso-vnf-adapter/src/test/java/org/openecomp/mso/adapters/vnf/test/VnfQueryTest.java
rename to adapters/mso-vnf-adapter/src/test/java/org/openecomp/mso/adapters/vnf/VnfQueryTest.java
index bbffddf..aca88f3 100644
--- a/adapters/mso-vnf-adapter/src/test/java/org/openecomp/mso/adapters/vnf/test/VnfQueryTest.java
+++ b/adapters/mso-vnf-adapter/src/test/java/org/openecomp/mso/adapters/vnf/VnfQueryTest.java
@@ -2,7 +2,7 @@
  * ============LICENSE_START=======================================================
  * ONAP - SO
  * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2018 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.
@@ -18,7 +18,7 @@
  * ============LICENSE_END=========================================================
  */
 
-package org.openecomp.mso.adapters.vnf.test;
+package org.openecomp.mso.adapters.vnf;
 
 
 import java.util.Map;
diff --git a/adapters/mso-workflow-message-adapter/pom.xml b/adapters/mso-workflow-message-adapter/pom.xml
index 46e4a2b..dd17fe8 100644
--- a/adapters/mso-workflow-message-adapter/pom.xml
+++ b/adapters/mso-workflow-message-adapter/pom.xml
@@ -55,7 +55,7 @@
 		<dependency>
 			<groupId>org.apache.httpcomponents</groupId>
 			<artifactId>httpclient</artifactId>
-			<version>4.5.2</version>
+			<version>4.5.5</version>
 		</dependency>
 		<dependency>
 			<groupId>org.onap.so</groupId>
diff --git a/aria/aria-rest-java-client/pom.xml b/aria/aria-rest-java-client/pom.xml
index c6d2b73..e06e97d 100755
--- a/aria/aria-rest-java-client/pom.xml
+++ b/aria/aria-rest-java-client/pom.xml
@@ -26,7 +26,6 @@
     <groupId>org.onap.so</groupId>
     <artifactId>aria-client</artifactId>
     <version>1.2.0-SNAPSHOT</version>
-
     <parent>
         <groupId>org.onap.so</groupId>
 	<artifactId>aria</artifactId>
diff --git a/aria/aria-rest-server/pom.xml b/aria/aria-rest-server/pom.xml
index 87c8f3e..d74ea93 100644
--- a/aria/aria-rest-server/pom.xml
+++ b/aria/aria-rest-server/pom.xml
@@ -86,7 +86,7 @@
               </environmentVariables>
 	    </configuration>
 	  </execution>
-          <execution>
+          <!--execution>
             <id>deploy</id>
 	    <phase>deploy</phase>
 	    <goals><goal>exec</goal></goals>
@@ -105,7 +105,7 @@
 	        <WHEEL_PATH>${project.build.directory}/${wheel.name}</WHEEL_PATH>
 	      </environmentVariables>
 	    </configuration>
-          </execution>   
+          </execution-->
         </executions>
       </plugin>
     </plugins>
diff --git a/asdc-controller/pom.xml b/asdc-controller/pom.xml
index 75896d2..a06a16d 100644
--- a/asdc-controller/pom.xml
+++ b/asdc-controller/pom.xml
@@ -81,7 +81,6 @@
 		<dependency>
 				<groupId>org.apache.httpcomponents</groupId>
 				<artifactId>httpclient</artifactId>
-				<version>4.4.1</version>
 				<scope>compile</scope>
 				<exclusions>
        		 		<exclusion>  
diff --git a/asdc-controller/src/main/resources/resource-examples/service-MdnsPreload17100914-csar.csar b/asdc-controller/src/main/resources/resource-examples/service-MdnsPreload17100914-csar.csar
index 31fff49..f1a72f7 100644
--- a/asdc-controller/src/main/resources/resource-examples/service-MdnsPreload17100914-csar.csar
+++ b/asdc-controller/src/main/resources/resource-examples/service-MdnsPreload17100914-csar.csar
Binary files differ
diff --git a/asdc-controller/src/main/resources/resource-examples/service_Rg511NfmService.csar b/asdc-controller/src/main/resources/resource-examples/service_Rg511NfmService.csar
index 2686e4b..a189ed6 100644
--- a/asdc-controller/src/main/resources/resource-examples/service_Rg511NfmService.csar
+++ b/asdc-controller/src/main/resources/resource-examples/service_Rg511NfmService.csar
Binary files differ
diff --git a/asdc-controller/src/main/resources/resource-examples/service_Rg516VmmscSrvc_csar.csar b/asdc-controller/src/main/resources/resource-examples/service_Rg516VmmscSrvc_csar.csar
index d2983ce..df4f4cb 100644
--- a/asdc-controller/src/main/resources/resource-examples/service_Rg516VmmscSrvc_csar.csar
+++ b/asdc-controller/src/main/resources/resource-examples/service_Rg516VmmscSrvc_csar.csar
Binary files differ
diff --git a/bpmn/MSOCommonBPMN/pom.xml b/bpmn/MSOCommonBPMN/pom.xml
index 6067982..a0a5a24 100644
--- a/bpmn/MSOCommonBPMN/pom.xml
+++ b/bpmn/MSOCommonBPMN/pom.xml
@@ -348,7 +348,7 @@
 		<dependency>
 			<groupId>org.springframework</groupId>
 			<artifactId>spring-test</artifactId>
-			<version>${spring.version}</version>
+			<version>4.3.14.RELEASE</version>
 		</dependency>
 		<dependency>
 			<groupId>org.openecomp.sdc.sdc-tosca</groupId>
diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/bpmn/common/recipe/ResourceInput.java b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/bpmn/common/recipe/ResourceInput.java
index 0a008d1..00e4ae7 100644
--- a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/bpmn/common/recipe/ResourceInput.java
+++ b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/bpmn/common/recipe/ResourceInput.java
@@ -19,6 +19,8 @@
  */

 package org.openecomp.mso.bpmn.common.recipe;

 

+import org.openecomp.mso.bpmn.core.domain.ModelInfo;

+

 import com.fasterxml.jackson.annotation.JsonProperty;

 import com.fasterxml.jackson.annotation.JsonPropertyOrder;

 import com.fasterxml.jackson.annotation.JsonRootName;

@@ -35,7 +37,7 @@
  * @author

  * @version     ONAP Beijing Release  2018-03-08

  */

-@JsonPropertyOrder({"resourceInstanceName", "resourceInstanceDes", "globalSubscriberId", "serviceType", "serviceId", "operationId", "resourceType","resourceCustomizationUuid"})

+@JsonPropertyOrder({"resourceInstanceName", "resourceInstanceDes", "globalSubscriberId", "serviceType", "serviceId", "operationId", "serviceModelInfo","resourceModelInfo", "resourceInstancenUuid","resourceParameters","operationType"})

 @JsonRootName("variables")

 public class ResourceInput {

 

@@ -57,17 +59,11 @@
     @JsonProperty("operationId")

     private String operationId;

     

-    //for create resource

-    @JsonProperty("resourceInvariantUuid")

-    private String resourceInvariantUuid;

+    @JsonProperty("serviceModelInfo")

+    private ModelInfo serviceModelInfo;

     

-    //for create resource

-    @JsonProperty("resourceUuid")

-    private String resourceUuid;

-

-    //for create resource

-    @JsonProperty("resourceCustomizationUuid")

-    private String resourceCustomizationUuid;

+    @JsonProperty("resourceModelInfo")

+    private ModelInfo resourceModelInfo;

     

     //for delete resource

     @JsonProperty("resourceInstancenUuid")

@@ -186,67 +182,47 @@
     public void setOperationId(String operationId) {

         this.operationId = operationId;

     }

-        

-   

     

     /**

-     * @return Returns the resourceInvariantUuid.

+     * @return Returns the serviceModelInfo.

      */

-    @JsonProperty("resourceInvariantUuid")

-    public String getResourceInvariantUuid() {

-        return resourceInvariantUuid;

+    @JsonProperty("serviceModelInfo")

+    public ModelInfo getServiceModelInfo() {

+        return serviceModelInfo;

     }

 

 

     

     /**

-     * @param resourceInvariantUuid The resourceInvariantUuid to set.

+     * @param serviceModelInfo The serviceModelInfo to set.

      */

-    @JsonProperty("resourceInvariantUuid")

-    public void setResourceInvariantUuid(String resourceInvariantUuid) {

-        this.resourceInvariantUuid = resourceInvariantUuid;

+    @JsonProperty("serviceModelInfo")

+    public void setServiceModelInfo(ModelInfo serviceModelInfo) {

+        this.serviceModelInfo = serviceModelInfo;

     }

 

 

     

     /**

-     * @return Returns the resourceUuid.

+     * @return Returns the resourceModelInfo.

      */

-    @JsonProperty("resourceUuid")

-    public String getResourceUuid() {

-        return resourceUuid;

+    @JsonProperty("resourceModelInfo")

+    public ModelInfo getResourceModelInfo() {

+        return resourceModelInfo;

     }

 

 

     

     /**

-     * @param resourceUuid The resourceUuid to set.

+     * @param resourceModelInfo The resourceModelInfo to set.

      */

-    @JsonProperty("resourceUuid")

-    public void setResourceUuid(String resourceUuid) {

-        this.resourceUuid = resourceUuid;

+    @JsonProperty("resourceModelInfo")

+    public void setResourceModelInfo(ModelInfo resourceModelInfo) {

+        this.resourceModelInfo = resourceModelInfo;

     }

 

 

     /**

-     * @return Returns the resourceCustomizationUuid.

-     */

-    @JsonProperty("resourceCustomizationUuid")

-    public String getResourceCustomizationUuid() {

-        return resourceCustomizationUuid;

-    }

-

-    

-    /**

-     * @param resourceCustomizationUuid The resourceCustomizationUuid to set.

-     */

-    @JsonProperty("resourceCustomizationUuid")

-    public void setResourceCustomizationUuid(String resourceCustomizationUuid) {

-        this.resourceCustomizationUuid = resourceCustomizationUuid;

-    }

-

-    

-    /**

      * @return Returns the resourceParameters.

      */

     @JsonProperty("resourceParameters")

diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/adapter/requests/db/MsoRequestsDbAdapterClient.java b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/adapter/requests/db/MsoRequestsDbAdapterClient.java
index 109da17..2443169 100644
--- a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/adapter/requests/db/MsoRequestsDbAdapterClient.java
+++ b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/adapter/requests/db/MsoRequestsDbAdapterClient.java
@@ -51,7 +51,7 @@
 			MsoLogger.setLogContext(request.getRequestId(), null);

 			try {

 				session.beginTransaction();

-				String queryString = "update InfraActiveRequests set ";

+				StringBuilder queryString = new StringBuilder("update InfraActiveRequests set ");

 				String statusMessage = null;

 				String responseBody = null;

 				RequestStatusType requestStatus = null;

@@ -67,72 +67,72 @@
 				String configurationId = null;

 				String configurationName = null;

 				if (request.getStatusMessage() != null) {

-					queryString += "statusMessage = :statusMessage, ";

+					queryString.append("statusMessage = :statusMessage, ");

 					statusMessage = request.getStatusMessage();

 				}

 				if (request.getResponseBody() != null) {

-					queryString += "responseBody = :responseBody, ";

+					queryString.append("responseBody = :responseBody, ");

 					responseBody = request.getResponseBody();

 				}

 				if (request.getRequestStatus() != null) {

-					queryString += "requestStatus = :requestStatus, ";

+					queryString.append("requestStatus = :requestStatus, ");

 					requestStatus = request.getRequestStatus();

 				}

 				if (request.getProgress() != null) {

-					queryString += "progress = :progress, ";

+					queryString.append("progress = :progress, ");

 					progress = request.getProgress();

 				}

 				if (request.getVnfOutputs() != null) {

-					queryString += "vnfOutputs = :vnfOutputs, ";

+					queryString.append("vnfOutputs = :vnfOutputs, ");

 					vnfOutputs = request.getVnfOutputs();

 				}

 				if (request.getServiceInstanceId() != null) {

-					queryString += "serviceInstanceId = :serviceInstanceId, ";

+					queryString.append("serviceInstanceId = :serviceInstanceId, ");

 					serviceInstanceId = request.getServiceInstanceId();

 				}

 				if (request.getNetworkId() != null) {

-					queryString += "networkId = :networkId, ";

+					queryString.append("networkId = :networkId, ");

 					networkId = request.getNetworkId();

 				}

 				if (request.getVnfId() != null) {

-					queryString += "vnfId = :vnfId, ";

+					queryString.append("vnfId = :vnfId, ");

 					vnfId = request.getVnfId();

 				}

 				if (request.getVfModuleId() != null) {

-					queryString += "vfModuleId = :vfModuleId, ";

+					queryString.append("vfModuleId = :vfModuleId, ");

 					vfModuleId = request.getVfModuleId();

 				}

 				if (request.getVolumeGroupId() != null) {

-					queryString += "volumeGroupId = :volumeGroupId, ";

+					queryString.append("volumeGroupId = :volumeGroupId, ");

 					volumeGroupId = request.getVolumeGroupId();

 				}

 				if (request.getServiceInstanceName() != null) {

-					queryString += "serviceInstanceName = :serviceInstanceName, ";

+					queryString.append("serviceInstanceName = :serviceInstanceName, ");

 					serviceInstanceName = request.getServiceInstanceName();

 				}

 				if (request.getVfModuleName() != null) {

-					queryString += "vfModuleName = :vfModuleName, ";

+					queryString.append("vfModuleName = :vfModuleName, ");

 					vfModuleName = request.getVfModuleName();

 				}

 				if (request.getConfigurationId() != null) {

-					queryString += "configurationId = :configurationId, ";

+					queryString.append("configurationId = :configurationId, ");

 					configurationId = request.getConfigurationId();

 				}

 				if (request.getConfigurationName() != null) {

-					queryString += "configurationName = :configurationName, ";

+					queryString.append("configurationName = :configurationName, ");

 					configurationName = request.getConfigurationName();

 				}

 				if (request.getRequestStatus() == RequestStatusType.COMPLETE

 						|| request.getRequestStatus() == RequestStatusType.FAILED) {

-					queryString += "endTime = :endTime, ";

+					queryString.append("endTime = :endTime, ");

 				} else {

-					queryString += "modifyTime = :modifyTime, ";

+					queryString.append("modifyTime = :modifyTime, ");

 				}

-				queryString += "lastModifiedBy = :lastModifiedBy where requestId = :requestId OR clientRequestId = :requestId";

+				queryString.append("lastModifiedBy = :lastModifiedBy where requestId = :requestId OR clientRequestId = :requestId");

 

-				LOGGER.debug("Executing update: " + queryString);

+				LOGGER.debug("Executing update: " + queryString.toString());

 

-				Query query = session.createQuery(queryString);

+				Query query = session.createQuery(queryString.toString());

 				query.setParameter("requestId", request.getRequestId());

 				if (statusMessage != null) {

 					query.setParameter("statusMessage", statusMessage);

diff --git a/bpmn/MSOCommonBPMN/src/main/resources/xsd/MSOWorkflowSchemaV1.xsd b/bpmn/MSOCommonBPMN/src/main/resources/xsd/MSOWorkflowSchemaV1.xsd
index e743dc7..0472e54 100644
--- a/bpmn/MSOCommonBPMN/src/main/resources/xsd/MSOWorkflowSchemaV1.xsd
+++ b/bpmn/MSOCommonBPMN/src/main/resources/xsd/MSOWorkflowSchemaV1.xsd
@@ -1,13 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 	<!--
-		=========================================================================
-		AT&T Proprietary (Internal Use Only) Not for use or disclosure outside
-		the AT&T companies except under written agreement (c) 2015 AT&T
-		Intellectual Property. All rights reserved. AT&T and the AT&T logo are
-		trademarks of AT&T Intellectual Property.
-		=======================================================================
-	-->
-	<!--
 		================================================================
 		Description: This is the schema for LPP Configuration Component
 
diff --git a/bpmn/MSOCommonBPMN/src/main/resources/xsd/MsoServiceRequestTypesV1.xsd b/bpmn/MSOCommonBPMN/src/main/resources/xsd/MsoServiceRequestTypesV1.xsd
index ce92a49..c5fa26c 100644
--- a/bpmn/MSOCommonBPMN/src/main/resources/xsd/MsoServiceRequestTypesV1.xsd
+++ b/bpmn/MSOCommonBPMN/src/main/resources/xsd/MsoServiceRequestTypesV1.xsd
@@ -1,12 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!--
-		=========================================================================
-		AT&T Proprietary (Internal Use Only) Not for use or disclosure outside
-		the AT&T companies except under written agreement (c) 2015 AT&T
-		Intellectual Property. All rights reserved. AT&T and the AT&T logo are
-		trademarks of AT&T Intellectual Property.
-		=======================================================================
-	-->
+
 <!--
 		================================================================
 		Description: This is the schema for MSO Request data
diff --git a/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/bpmn/common/recipe/BpmnParamTest.java b/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/bpmn/common/recipe/BpmnParamTest.java
new file mode 100644
index 0000000..166e3d7
--- /dev/null
+++ b/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/bpmn/common/recipe/BpmnParamTest.java
@@ -0,0 +1,41 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SO
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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.bpmn.common.recipe;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+
+public class BpmnParamTest {
+
+	BpmnParam bp=new BpmnParam();
+	
+	@Test
+	public void test() {
+		bp.setValue("testdata");
+	    assertEquals(bp.getValue(),"testdata");
+	}
+	@Test
+	public void testToString(){
+		assert(bp.toString()!=null);
+	}
+
+}
diff --git a/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/bpmn/common/recipe/BpmnRestClientTest.java b/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/bpmn/common/recipe/BpmnRestClientTest.java
new file mode 100644
index 0000000..89f538b
--- /dev/null
+++ b/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/bpmn/common/recipe/BpmnRestClientTest.java
@@ -0,0 +1,33 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SO
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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.bpmn.common.recipe;
+
+import static org.junit.Assert.*;
+import org.junit.Test;
+
+public class BpmnRestClientTest {
+	
+	@Test
+	public void test() {
+		BpmnRestClient.getEncryptedPropValue("prop", "123", "456");
+		BpmnRestClient.loadMsoProperties();
+		assertEquals(true,BpmnRestClient.getNoPropertiesState());
+	}
+}
diff --git a/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/bpmn/common/recipe/ResourceInputTest.java b/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/bpmn/common/recipe/ResourceInputTest.java
new file mode 100644
index 0000000..466f4a1
--- /dev/null
+++ b/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/bpmn/common/recipe/ResourceInputTest.java
@@ -0,0 +1,65 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SO
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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.bpmn.common.recipe;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+import org.openecomp.mso.bpmn.core.domain.ModelInfo;
+
+public class ResourceInputTest {
+   
+	ResourceInput ri=new ResourceInput();
+	@Test
+	public void test() {
+		ri.setResourceInstanceName("resourceInstanceName");
+		ri.setResourceInstanceDes("resourceInstanceDes");
+		ri.setGlobalSubscriberId("globalSubscriberId");
+		ri.setServiceType("serviceType");
+		ri.setServiceInstanceId("serviceId");
+		ri.setOperationId("operationId");
+		ModelInfo serviceModelInfo = new ModelInfo();
+		serviceModelInfo.setModelCustomizationUuid("modelCustomizationUuid");
+		serviceModelInfo.setModelInvariantUuid("modelInvariantUuid");
+		serviceModelInfo.setModelUuid("modelUuid");
+		ri.setServiceModelInfo(serviceModelInfo);
+        ModelInfo resourceModelInfo = new ModelInfo();
+        resourceModelInfo.setModelCustomizationUuid("modelCustomizationUuid");
+        resourceModelInfo.setModelInvariantUuid("modelInvariantUuid");
+        resourceModelInfo.setModelUuid("modelUuid");
+        ri.setResourceModelInfo(resourceModelInfo);
+		ri.setResourceInstancenUuid("resourceInstancenUuid");
+		ri.setResourceParameters("resourceParameters");
+		ri.setOperationType("operationType");
+		assertEquals(ri.getResourceInstanceName(), "resourceInstanceName");
+		assertEquals(ri.getResourceInstanceDes(), "resourceInstanceDes");
+		assertEquals(ri.getGlobalSubscriberId(), "globalSubscriberId");
+		assertEquals(ri.getServiceType(), "serviceType");
+		assertEquals(ri.getServiceInstanceId(), "serviceId");
+		assertEquals(ri.getOperationId(), "operationId");
+		assertEquals(ri.getResourceInstancenUuid(), "resourceInstancenUuid");
+		assertEquals(ri.getResourceParameters(), "resourceParameters");
+		assertEquals(ri.getOperationType(), "operationType");
+		}
+	@Test
+	public void testToString(){
+		assert(ri.toString()!=null);
+	}
+}
diff --git a/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/bpmn/common/recipe/ResourceRecipeRequestTest.java b/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/bpmn/common/recipe/ResourceRecipeRequestTest.java
new file mode 100644
index 0000000..3b185ba
--- /dev/null
+++ b/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/bpmn/common/recipe/ResourceRecipeRequestTest.java
@@ -0,0 +1,51 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SO
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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.bpmn.common.recipe;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+
+public class ResourceRecipeRequestTest {
+
+	ResourceRecipeRequest rr=new ResourceRecipeRequest();
+	BpmnParam bp=new BpmnParam();
+	@Test
+	public void test() {
+		rr.setResourceInput(bp);
+		rr.setHost(bp);
+		rr.setRequestId(bp);
+		rr.setRequestAction(bp);
+		rr.setServiceInstanceId(bp);
+		rr.setServiceType(bp);
+		rr.setRecipeParams(bp);
+		assertEquals(rr.getResourceInput(),bp);
+		assertEquals(rr.getHost(),bp);
+		assertEquals(rr.getRequestId(),bp);
+		assertEquals(rr.getRequestAction(),bp);
+		assertEquals(rr.getServiceInstanceId(),bp);
+		assertEquals(rr.getServiceType(),bp);
+		assertEquals(rr.getRecipeParams(),bp);
+	}
+	@Test
+	public void testToString(){
+		assert(rr.toString()!=null);
+	}
+}
diff --git a/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/client/adapter/requests/db/entities/MsoRequestsDbExceptionBeanTest.java b/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/client/adapter/requests/db/entities/MsoRequestsDbExceptionBeanTest.java
new file mode 100644
index 0000000..f0c6e7e
--- /dev/null
+++ b/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/client/adapter/requests/db/entities/MsoRequestsDbExceptionBeanTest.java
@@ -0,0 +1,33 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SO
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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.client.adapter.requests.db.entities;
+
+import org.junit.Test;
+
+public class MsoRequestsDbExceptionBeanTest {
+
+	@Test
+	public void test() {
+		MsoRequestsDbExceptionBean mrde=new MsoRequestsDbExceptionBean("msg");
+		mrde.setMessage("msg");
+		assert(mrde.getMessage().equals("msg"));
+	}
+}
diff --git a/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/client/adapter/requests/db/entities/MsoRequestsDbExceptionTest.java b/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/client/adapter/requests/db/entities/MsoRequestsDbExceptionTest.java
new file mode 100644
index 0000000..28b8cc9
--- /dev/null
+++ b/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/client/adapter/requests/db/entities/MsoRequestsDbExceptionTest.java
@@ -0,0 +1,37 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SO
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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.client.adapter.requests.db.entities;
+
+import org.junit.Test;
+
+public class MsoRequestsDbExceptionTest {
+
+	@Test
+	public void test() {
+		Throwable e = new Throwable();
+		MsoRequestsDbExceptionBean mredb=new MsoRequestsDbExceptionBean();
+		MsoRequestsDbException mrde=new MsoRequestsDbException("msg",e);
+		MsoRequestsDbException mrd=new MsoRequestsDbException("msg");
+		MsoRequestsDbException mrd1=new MsoRequestsDbException(e);
+		mrde.setFaultInfo(mredb);
+		assert(mrde.getFaultInfo().equals(mredb));
+	}
+}
diff --git a/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/client/adapter/requests/db/entities/UpdateInfraRequestTest.java b/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/client/adapter/requests/db/entities/UpdateInfraRequestTest.java
new file mode 100644
index 0000000..d01c119
--- /dev/null
+++ b/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/client/adapter/requests/db/entities/UpdateInfraRequestTest.java
@@ -0,0 +1,64 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SO
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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.client.adapter.requests.db.entities;
+
+import org.junit.Test;
+
+public class UpdateInfraRequestTest {
+
+	@Test
+	public void test() {
+		UpdateInfraRequest uir=new UpdateInfraRequest();
+		RequestStatusType requestStatus=RequestStatusType.COMPLETE;
+		uir.setConfigurationId("configurationId");
+		uir.setConfigurationName("configurationName");
+		uir.setLastModifiedBy("lastModifiedBy");
+		uir.setNetworkId("networkId");
+		uir.setProgress("progress");
+		uir.setRequestId("requestId");
+		uir.setRequestStatus(requestStatus);
+		uir.setResponseBody("responseBody");
+		uir.setServiceInstanceId("serviceInstanceId");
+		uir.setServiceInstanceName("serviceInstanceName");
+		uir.setStatusMessage("statusMessage");
+		uir.setVfModuleId("vfModuleId");
+		uir.setVfModuleName("vfModuleName");
+		uir.setVnfId("vnfId");
+		uir.setVnfOutputs("vnfOutputs");
+		uir.setVolumeGroupId("volumeGroupId");
+		assert(uir.getConfigurationId().equals("configurationId"));
+		assert(uir.getConfigurationName().equals("configurationName"));
+		assert(uir.getLastModifiedBy().equals("lastModifiedBy"));
+		assert(uir.getNetworkId().equals("networkId"));
+		assert(uir.getProgress().equals("progress"));
+        assert(uir.getRequestId().equals("requestId"));
+        assert(uir.getRequestStatus().equals(requestStatus));
+        assert(uir.getResponseBody().equals("responseBody"));
+        assert(uir.getServiceInstanceId().equals("serviceInstanceId"));
+        assert(uir.getServiceInstanceName().equals("serviceInstanceName"));
+        assert(uir.getStatusMessage().equals("statusMessage"));
+        assert(uir.getVfModuleId().equals("vfModuleId"));
+        assert(uir.getVnfOutputs().equals("vnfOutputs"));
+        assert(uir.getVolumeGroupId().equals("volumeGroupId"));
+        assert(uir.getVfModuleName().equals("vfModuleName"));
+        assert(uir.getVnfId().equals("vnfId"));
+	}
+}
diff --git a/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/client/sdnc/beans/SDNCRequestTest.java b/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/client/sdnc/beans/SDNCRequestTest.java
new file mode 100644
index 0000000..3fd433d
--- /dev/null
+++ b/bpmn/MSOCommonBPMN/src/test/java/org/openecomp/mso/client/sdnc/beans/SDNCRequestTest.java
@@ -0,0 +1,53 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SO
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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.client.sdnc.beans;
+
+import static org.junit.Assert.*;
+
+
+
+import org.junit.Test;
+public class SDNCRequestTest {
+	private SDNCRequest sdncrequest = new SDNCRequest();
+	SDNCSvcAction svcaction = SDNCSvcAction.ACTIVATE;
+	SDNCSvcOperation svcoperation = SDNCSvcOperation.VNF_TOPOLOGY_OPERATION; 
+	@Test
+	public void testSDNCRequestTest() {
+		sdncrequest.setRequestId("requestId");
+		sdncrequest.setSvcInstanceId("svcInstanceId");
+		sdncrequest.setSvcAction(svcaction);
+		sdncrequest.setSvcOperation(svcoperation);
+		sdncrequest.setCallbackUrl("callbackUrl");
+		sdncrequest.setMsoAction("msoAction");
+		sdncrequest.setRequestData("requestData");
+		assertEquals(sdncrequest.getRequestId(), "requestId");
+		assertEquals(sdncrequest.getSvcInstanceId(), "svcInstanceId");
+		assertEquals(sdncrequest.getSvcAction(), svcaction);
+		assertEquals(sdncrequest.getSvcOperation(), svcoperation);
+		assertEquals(sdncrequest.getCallbackUrl(), "callbackUrl");
+		assertEquals(sdncrequest.getMsoAction(), "msoAction");
+		assertEquals(sdncrequest.getRequestData(), "requestData");
+		}
+	@Test
+	public void testToString(){
+		assert(sdncrequest.toString()!=null);
+	}
+
+}
diff --git a/bpmn/MSOCoreBPMN/pom.xml b/bpmn/MSOCoreBPMN/pom.xml
index 690dd54..2f9d574 100644
--- a/bpmn/MSOCoreBPMN/pom.xml
+++ b/bpmn/MSOCoreBPMN/pom.xml
@@ -73,7 +73,7 @@
         <dependency>
             <groupId>commons-fileupload</groupId>
             <artifactId>commons-fileupload</artifactId>
-            <version>1.3.2</version>
+            <version>1.3.3</version>
         </dependency>
         <dependency>
             <groupId>javax.servlet</groupId>
diff --git a/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/HealthCheckHandlerTest.java b/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/HealthCheckHandlerTest.java
new file mode 100644
index 0000000..1086cc7
--- /dev/null
+++ b/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/HealthCheckHandlerTest.java
@@ -0,0 +1,38 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2018 Huawei Technologies Co., Ltd. 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.bpmn.core;
+
+import org.junit.Test;
+
+public class HealthCheckHandlerTest {
+
+    HealthCheckHandler healthCheckHandler = new HealthCheckHandler();
+
+    @Test
+    public void nodeHealthcheck() throws Exception {
+        healthCheckHandler.nodeHealthcheck();
+    }
+
+    @Test
+    public void healthcheck() throws Exception {
+        healthCheckHandler.healthcheck("test-123");
+    }
+
+}
\ No newline at end of file
diff --git a/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/domain/AllottedResourceTest.java b/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/domain/AllottedResourceTest.java
new file mode 100644
index 0000000..09720be
--- /dev/null
+++ b/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/domain/AllottedResourceTest.java
@@ -0,0 +1,57 @@
+/*

+* ============LICENSE_START=======================================================

+* ONAP : SO

+* ================================================================================

+* Copyright 2018 TechMahindra

+*=================================================================================

+* 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.bpmn.core.domain;

+

+import static org.junit.Assert.*;

+

+import org.junit.Test;

+

+public class AllottedResourceTest {

+	private AllottedResource ar = new AllottedResource();

+	TunnelConnect tc = new TunnelConnect();

+

+	@Test

+	public void testAllottedResource() {

+		ar.setAllottedResourceType("allottedResourceType");

+		ar.setAllottedResourceRole("allottedResourceRole");

+		ar.setProvidingServiceModelName("providingServiceModelName");

+		ar.setProvidingServiceModelInvariantUuid("providingServiceModelInvariantUuid");

+		ar.setProvidingServiceModelUuid("providingServiceModelUuid");

+		ar.setNfFunction("nfFunction");

+		ar.setNfType("nfType");

+		ar.setNfRole("nfRole");

+		ar.setNfNamingCode("nfNamingCode");

+		ar.setOrchestrationStatus("orchestrationStatus");

+		ar.setTunnelConnect(tc);

+		assertEquals(ar.getAllottedResourceType(), "allottedResourceType");

+		assertEquals(ar.getAllottedResourceRole(), "allottedResourceRole");

+		assertEquals(ar.getProvidingServiceModelName(), "providingServiceModelName");

+		assertEquals(ar.getProvidingServiceModelInvariantUuid(), "providingServiceModelInvariantUuid");

+		assertEquals(ar.getProvidingServiceModelUuid(), "providingServiceModelUuid");

+		assertEquals(ar.getNfFunction(), "nfFunction");

+		assertEquals(ar.getNfType(), "nfType");

+		assertEquals(ar.getNfRole(), "nfRole");

+		assertEquals(ar.getNfNamingCode(), "nfNamingCode");

+		assertEquals(ar.getOrchestrationStatus(), "orchestrationStatus");

+		assertEquals(ar.getTunnelConnect(), tc);

+		

+	}

+

+}

diff --git a/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/domain/ConfigResourceTest.java b/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/domain/ConfigResourceTest.java
new file mode 100644
index 0000000..ecaf601
--- /dev/null
+++ b/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/domain/ConfigResourceTest.java
@@ -0,0 +1,39 @@
+/*

+* ============LICENSE_START=======================================================

+* ONAP : SO

+* ================================================================================

+* Copyright 2018 TechMahindra

+*=================================================================================

+* 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.bpmn.core.domain;

+

+import static org.junit.Assert.*;

+

+import org.junit.Test;

+

+public class ConfigResourceTest {

+	private ConfigResource configresource = new ConfigResource();{

+	configresource.resourceType = ResourceType.CONFIGURATION;

+	}

+

+	@Test

+	public void testConfigResource() {

+		configresource.setToscaNodeType("toscaNodeType");

+		assertEquals(configresource.getToscaNodeType(), "toscaNodeType");

+		

+		

+	}

+

+}

diff --git a/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/domain/ConfigurationTest.java b/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/domain/ConfigurationTest.java
new file mode 100644
index 0000000..df8440a
--- /dev/null
+++ b/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/domain/ConfigurationTest.java
@@ -0,0 +1,47 @@
+/*

+* ============LICENSE_START=======================================================

+* ONAP : SO

+* ================================================================================

+* Copyright 2018 TechMahindra

+*=================================================================================

+* 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.bpmn.core.domain;

+

+import static org.junit.Assert.*;

+

+import org.junit.Test;

+

+public class ConfigurationTest {

+	private Configuration configuration = new Configuration();

+

+	@Test

+	public void testConfigurationTest() {

+		configuration.setId("id");

+		configuration.setName("name");

+		configuration.setType("type");

+		configuration.setOrchestrationStatus("orchestrationStatus");

+		configuration.setTunnelBandwidth("tunnelBandwidth");

+		configuration.setVendorAllowedMaxBandwidth("vendorAllowedMaxBandwidth");

+		configuration.setResourceVersion("resourceVersion");

+		assertEquals(configuration.getId(), "id");

+		assertEquals(configuration.getName(), "name");

+		assertEquals(configuration.getType(), "type");

+		assertEquals(configuration.getOrchestrationStatus(), "orchestrationStatus");

+		assertEquals(configuration.getTunnelBandwidth(), "tunnelBandwidth");

+		assertEquals(configuration.getVendorAllowedMaxBandwidth(), "vendorAllowedMaxBandwidth");

+		assertEquals(configuration.getResourceVersion(), "resourceVersion");

+	}

+

+}

diff --git a/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/domain/CustomerTest.java b/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/domain/CustomerTest.java
new file mode 100644
index 0000000..1a4e089
--- /dev/null
+++ b/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/domain/CustomerTest.java
@@ -0,0 +1,38 @@
+/*

+* ============LICENSE_START=======================================================

+* ONAP : SO

+* ================================================================================

+* Copyright 2018 TechMahindra

+*=================================================================================

+* 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.bpmn.core.domain;

+

+import static org.junit.Assert.*;

+

+import org.junit.Test;

+

+public class CustomerTest {

+	private Customer customer = new Customer();

+

+	@Test

+	public void testCustomer() {

+		customer.setSubscriptionServiceType("subscriptionServiceType");

+		customer.setGlobalSubscriberId("globalSubscriberId");

+		assertEquals(customer.getSubscriptionServiceType(), "subscriptionServiceType");

+		assertEquals(customer.getGlobalSubscriberId(), "globalSubscriberId");

+		

+	}

+

+}

diff --git a/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/domain/HomingSolutionTest.java b/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/domain/HomingSolutionTest.java
new file mode 100644
index 0000000..e334348
--- /dev/null
+++ b/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/domain/HomingSolutionTest.java
@@ -0,0 +1,58 @@
+/*

+* ============LICENSE_START=======================================================

+* ONAP : SO

+* ================================================================================

+* Copyright 2018 TechMahindra

+*=================================================================================

+* 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.bpmn.core.domain;

+

+import static org.junit.Assert.*;

+

+import org.junit.Test;

+

+public class HomingSolutionTest {

+	

+	private HomingSolution homingsolution = new HomingSolution();

+	InventoryType inventory = InventoryType.cloud;

+	VnfResource vnfresource = new VnfResource();

+	License license = new License();

+

+	@Test

+	public void testHomingSolution() {

+		homingsolution.setInventoryType(inventory);

+		homingsolution.setRehome(true);

+		homingsolution.setServiceInstanceId("serviceInstanceId");

+		homingsolution.setCloudOwner("cloudOwner");

+		homingsolution.setCloudRegionId("cloudRegionId");

+		homingsolution.setAicClli("aicClli");

+		homingsolution.setAicVersion("aicVersion");

+		homingsolution.setTenant("tenant");

+		homingsolution.setVnf(vnfresource);

+		homingsolution.setLicense(license);

+		assertEquals(homingsolution.getInventoryType(), inventory);

+		assertEquals(homingsolution.isRehome(), true);

+		assertEquals(homingsolution.getServiceInstanceId(), "serviceInstanceId");

+		assertEquals(homingsolution.getCloudOwner(), "cloudOwner");

+		assertEquals(homingsolution.getCloudRegionId(), "cloudRegionId");

+		assertEquals(homingsolution.getAicClli(), "aicClli");

+		assertEquals(homingsolution.getAicVersion(), "aicVersion");

+		assertEquals(homingsolution.getTenant(), "tenant");

+		assertEquals(homingsolution.getVnf(), vnfresource);

+		assertEquals(homingsolution.getLicense(), license);

+		

+	}

+

+}

diff --git a/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/domain/LicenseTest.java b/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/domain/LicenseTest.java
new file mode 100644
index 0000000..9ed194c
--- /dev/null
+++ b/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/domain/LicenseTest.java
@@ -0,0 +1,89 @@
+/*

+* ============LICENSE_START=======================================================

+* ONAP : SO

+* ================================================================================

+* Copyright 2018 TechMahindra

+*=================================================================================

+* 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.bpmn.core.domain;

+

+

+import static org.junit.Assert.assertArrayEquals;

+import static org.junit.Assert.assertEquals;

+

+import java.util.ArrayList;

+import java.util.List;

+

+import org.junit.Before;

+import org.junit.Test;

+import org.junit.runner.RunWith;

+import org.mockito.BDDMockito.Then;

+import org.mockito.InjectMocks;

+import org.mockito.Mock;

+import org.powermock.api.mockito.PowerMockito;

+import org.powermock.core.classloader.annotations.PrepareForTest;

+import org.powermock.modules.junit4.PowerMockRunner;

+

+

+//@RunWith(PowerMockRunner.class)

+//@PrepareForTest({License.class})

+public class LicenseTest {

+	

+	//@Mock

+	private License license= new License();

+	//@InjectMocks

+	//private LicenseTest licenceTest;

+	List<String> entitlementPoolList = new ArrayList<String>();

+	private List<String> licenseKeyGroupList = new ArrayList<String>();

+	//JSONArray array = new JSONArray(entitlementPoolList);

+	//JSONArray array1 = new JSONArray(licenseKeyGroupList);

+	//@PrepareForTest({License.class})

+	Long serialVersionUID = 333L;

+	

+	@Test

+	public void testLicense() {

+		license.setEntitlementPoolList(entitlementPoolList);

+		license.setLicenseKeyGroupList(licenseKeyGroupList);

+		//license.addEntitlementPool("entitlementPoolUuid");

+		license.addLicenseKeyGroup("licenseKeyGroupUuid");

+		assertEquals(license.getEntitlementPoolList(), entitlementPoolList);

+		assertEquals(license.getLicenseKeyGroupList(), licenseKeyGroupList);

+		assert(license.getEntitlementPoolListAsString()!= null);

+		assert(license.getLicenseKeyGroupListAsString()!=null);

+		license.addEntitlementPool("entitlementPoolUuid");

+		//assertEquals(license.getSerialversionuid(), serialVersionUID);

+		//assertArrayEquals(license.getSerialversionuid(), serialVersionUID);

+		//assert

+	

+		/*PowerMockito.mockStatic(License.class);

+		Mockito.when(License.getSerialversionuid()).thenReturn(getserial());

+		assertEquals(License.getSerialversionuid(),"abc");*/

+		

+	}

+	// @Before 

+	// public void mocksetUp() {

+//      Long serialVersionUID = 333L;

+//	      PowerMockito.mockStatic(License.class);

+//	      expect (license.getSerialversionuid()).andReturn(serialVersionUID);

+//	      //PowerMockito.when(license.getSerialversionuid().

+//	      //PowerMockito.when(MathUtil.addInteger(2, 2)).thenReturn(1);

+//	   }

+	

+	/*private Long getserial() {

+		

+		return abc;

+	}*/

+

+}

diff --git a/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/domain/ModelInfoTest.java b/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/domain/ModelInfoTest.java
new file mode 100644
index 0000000..90eb230
--- /dev/null
+++ b/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/domain/ModelInfoTest.java
@@ -0,0 +1,47 @@
+/*

+* ============LICENSE_START=======================================================

+* ONAP : SO

+* ================================================================================

+* Copyright 2018 TechMahindra

+*=================================================================================

+* 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.bpmn.core.domain;

+

+import static org.junit.Assert.*;

+

+import org.junit.Test;

+

+public class ModelInfoTest {

+	private ModelInfo modelinfo = new ModelInfo();

+

+	@Test

+	public void testModelInfo() {

+		modelinfo.setModelName("modelName");

+		modelinfo.setModelUuid("modelUuid");

+		modelinfo.setModelInvariantUuid("modelInvariantUuid");

+		modelinfo.setModelVersion("modelVersion");

+		modelinfo.setModelCustomizationUuid("modelCustomizationUuid");

+		modelinfo.setModelInstanceName("modelInstanceName");

+		modelinfo.setModelType("modelType");

+		assertEquals(modelinfo.getModelName(), "modelName");

+		assertEquals(modelinfo.getModelUuid(), "modelUuid");

+		assertEquals(modelinfo.getModelInvariantUuid(), "modelInvariantUuid");

+		assertEquals(modelinfo.getModelVersion(), "modelVersion");

+		assertEquals(modelinfo.getModelCustomizationUuid(), "modelCustomizationUuid");

+		assertEquals(modelinfo.getModelInstanceName(), "modelInstanceName");

+		assertEquals(modelinfo.getModelType(), "modelType");

+	}

+

+}

diff --git a/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/domain/ModuleResourceTest.java b/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/domain/ModuleResourceTest.java
new file mode 100644
index 0000000..58cd45c
--- /dev/null
+++ b/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/domain/ModuleResourceTest.java
@@ -0,0 +1,48 @@
+/*

+* ============LICENSE_START=======================================================

+* ONAP : SO

+* ================================================================================

+* Copyright 2018 TechMahindra

+*=================================================================================

+* 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.bpmn.core.domain;

+

+import static org.junit.Assert.*;

+

+import org.junit.Test;

+

+public class ModuleResourceTest {

+	private ModuleResource moduleresource = new ModuleResource();

+

+	@Test

+	public void testModuleResource() {

+		

+		moduleresource.setVfModuleName("vfModuleName");

+		moduleresource.setHeatStackId("heatStackId");

+		moduleresource.setIsBase(true);

+		moduleresource.setVfModuleLabel("vfModuleLabel");

+		moduleresource.setInitialCount(0);

+		moduleresource.setVfModuleType("vfModuleType");

+		moduleresource.setHasVolumeGroup(true);

+		assertEquals(moduleresource.getVfModuleName(), "vfModuleName");

+		assertEquals(moduleresource.getHeatStackId(), "heatStackId");

+		assertEquals(moduleresource.getIsBase(), true);

+		assertEquals(moduleresource.getVfModuleLabel(), "vfModuleLabel");

+		assertEquals(moduleresource.getInitialCount(), 0);

+		assertEquals(moduleresource.getVfModuleType(), "vfModuleType");

+		assertEquals(moduleresource.isHasVolumeGroup(), true);

+			}

+

+}

diff --git a/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/domain/NetworkResourceTest.java b/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/domain/NetworkResourceTest.java
new file mode 100644
index 0000000..22e6266
--- /dev/null
+++ b/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/domain/NetworkResourceTest.java
@@ -0,0 +1,42 @@
+/*

+* ============LICENSE_START=======================================================

+* ONAP : SO

+* ================================================================================

+* Copyright 2018 TechMahindra

+*=================================================================================

+* 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.bpmn.core.domain;

+

+import static org.junit.Assert.*;

+

+import org.junit.Test;

+

+public class NetworkResourceTest {

+	private NetworkResource nr = new NetworkResource();

+

+	@Test

+	public void testNetworkResource() {

+		nr.setNetworkType("networkType");

+		nr.setNetworkRole("networkRole");

+		nr.setNetworkTechnology("networkTechnology");

+		nr.setNetworkScope("networkScope");

+		assertEquals(nr.getNetworkType(), "networkType");

+		assertEquals(nr.getNetworkRole(), "networkRole");

+		assertEquals(nr.getNetworkTechnology(), "networkTechnology");

+		assertEquals(nr.getNetworkScope(), "networkScope");

+		

+	}

+

+}

diff --git a/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/domain/OwningEntityTest.java b/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/domain/OwningEntityTest.java
new file mode 100644
index 0000000..215fa3c
--- /dev/null
+++ b/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/domain/OwningEntityTest.java
@@ -0,0 +1,39 @@
+/*

+* ============LICENSE_START=======================================================

+* ONAP : SO

+* ================================================================================

+* Copyright 2018 TechMahindra

+*=================================================================================

+* 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.bpmn.core.domain;

+

+import static org.junit.Assert.*;

+

+import org.junit.Test;

+

+public class OwningEntityTest {

+	private OwningEntity oe = new OwningEntity();

+

+	@Test

+	public void testOwingEntity() {

+		oe.setOwningEntityId("owningEntityId");

+		oe.setOwningEntityName("owningEntityName");

+		assertEquals(oe.getOwningEntityId(), "owningEntityId");

+		assertEquals(oe.getOwningEntityName(), "owningEntityName");

+		

+	}

+

+}

diff --git a/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/domain/ProjectTest.java b/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/domain/ProjectTest.java
new file mode 100644
index 0000000..3a9a53f
--- /dev/null
+++ b/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/domain/ProjectTest.java
@@ -0,0 +1,36 @@
+/*

+* ============LICENSE_START=======================================================

+* ONAP : SO

+* ================================================================================

+* Copyright 2018 TechMahindra

+*=================================================================================

+* 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.bpmn.core.domain;

+

+import static org.junit.Assert.*;

+

+import org.junit.Test;

+

+public class ProjectTest {

+	

+	private Project project = new Project();

+

+	@Test

+	public void testProject() {

+		project.setProjectName("projectName");

+		assertEquals(project.getProjectName(), "projectName");

+	}

+

+}

diff --git a/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/domain/RequestTest.java b/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/domain/RequestTest.java
new file mode 100644
index 0000000..9a9d415
--- /dev/null
+++ b/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/domain/RequestTest.java
@@ -0,0 +1,44 @@
+/*

+* ============LICENSE_START=======================================================

+* ONAP : SO

+* ================================================================================

+* Copyright 2018 TechMahindra

+*=================================================================================

+* 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.bpmn.core.domain;

+

+import static org.junit.Assert.*;

+

+import org.junit.Test;

+

+public class RequestTest {

+	

+	private Request request = new Request();

+	ModelInfo model = new ModelInfo();

+

+	@Test

+	public void testRequest() {

+		request.setSdncRequestId("sdncRequestId");

+		request.setRequestId("requestId");

+		request.setModelInfo(model);

+		request.setProductFamilyId("productFamilyId");

+		assertEquals(request.getSdncRequestId(), "sdncRequestId");

+		assertEquals(request.getRequestId(), "requestId");

+		assertEquals(request.getModelInfo(), model);

+		assertEquals(request.getProductFamilyId(), "productFamilyId");

+		

+	}

+

+}

diff --git a/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/domain/ResourceDecompositionTest.java b/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/domain/ResourceDecompositionTest.java
new file mode 100644
index 0000000..5eaa602
--- /dev/null
+++ b/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/domain/ResourceDecompositionTest.java
@@ -0,0 +1,50 @@
+/*

+* ============LICENSE_START=======================================================

+* ONAP : SO

+* ================================================================================

+* Copyright 2018 TechMahindra

+*=================================================================================

+* 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.bpmn.core.domain;

+

+import static org.junit.Assert.*;

+

+import org.junit.Test;

+

+public class ResourceDecompositionTest {

+	

+	private ResourceDecomposition rd = new ResourceDecomposition() {

+		private static final long serialVersionUID = 1L;

+	};

+	ModelInfo model = new ModelInfo();

+	ResourceInstance ri = new ResourceInstance();

+	

+	

+

+	@Test

+	public void testResourceDecomposition() {

+		rd.setModelInfo(model);

+		rd.setInstanceData(ri);

+		rd.setResourceType("resourceType");

+		rd.setResourceInstanceId("newInstanceId");

+		rd.setResourceInstanceName("newInstanceName");

+		assertEquals(rd.getResourceModel(), model);

+		assertEquals(rd.getModelInfo(), model);

+		assertEquals(rd.getInstanceData(), ri);

+		assertEquals(rd.getResourceInstanceId(), "newInstanceId");

+		assertEquals(rd.getResourceInstanceName(), "newInstanceName");

+	}

+

+}

diff --git a/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/domain/ResourceTest.java b/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/domain/ResourceTest.java
new file mode 100644
index 0000000..8d6b61f
--- /dev/null
+++ b/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/domain/ResourceTest.java
@@ -0,0 +1,68 @@
+/*

+* ============LICENSE_START=======================================================

+* ONAP : SO

+* ================================================================================

+* Copyright 2018 TechMahindra

+*=================================================================================

+* 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.bpmn.core.domain;

+

+import static org.junit.Assert.*;

+

+import org.junit.Test;

+

+public class ResourceTest {

+	private Resource resource = new Resource() {

+		private static final long serialVersionUID = 1L;

+		 

+		

+	};

+	ModelInfo model = new ModelInfo();

+	ResourceInstance ri = new ResourceInstance();

+	HomingSolution hs = new HomingSolution();

+	ResourceType rt = ResourceType.VNF;

+	public long concurrencyCounter = 1L;

+	long initval = resource.getConcurrencyCounter();

+

+	@Test

+	public void testResource() {

+		resource.setResourceId("resourceId");

+		resource.setModelInfo(model);

+		resource.setResourceInstance(ri);

+		resource.setHomingSolution(hs);

+		resource.setCurrentHomingSolution(hs);

+		resource.setResourceType(rt);

+		resource.setToscaNodeType("toscaNodeType");

+		resource.setResourceInstanceId("newInstanceId");

+		resource.setResourceInstanceName("newInstanceName");

+		resource.incrementConcurrencyCounter();

+		assertEquals(resource.getResourceId(), "resourceId");

+		assertEquals(resource.getModelInfo(), model);

+		assertEquals(resource.getResourceInstance(), ri);

+		assertEquals(resource.getHomingSolution(), hs);

+		assertEquals(resource.getCurrentHomingSolution(), hs);

+		assertEquals(resource.getResourceType(), rt);

+		assertEquals(resource.getToscaNodeType(), "toscaNodeType");

+		assertEquals(resource.getResourceInstanceId(), "newInstanceId");

+		assertEquals(resource.getResourceInstanceName(), "newInstanceName");

+		assertEquals(resource.getConcurrencyCounter(), initval+1);

+	

+		

+		

+		

+		

+	}

+

+}

diff --git a/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/domain/ServiceDecompositionTest.java b/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/domain/ServiceDecompositionTest.java
new file mode 100644
index 0000000..58548db
--- /dev/null
+++ b/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/domain/ServiceDecompositionTest.java
@@ -0,0 +1,83 @@
+/*

+* ============LICENSE_START=======================================================

+* ONAP : SO

+* ================================================================================

+* Copyright 2018 TechMahindra

+*=================================================================================

+* 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.bpmn.core.domain;

+

+import static org.junit.Assert.*;

+

+import java.util.List;

+

+import org.junit.Test;

+

+public class ServiceDecompositionTest {

+	private ServiceDecomposition sd = new ServiceDecomposition();

+	ModelInfo model= new ModelInfo();

+	ServiceInstance si= new ServiceInstance();

+	Project project= new Project();

+	OwningEntity oe= new OwningEntity();

+	//VnfResource vnf = new VnfResource();

+	List<VnfResource> vnfResources;

+	List<NetworkResource> networkResources;

+	List<ConfigResource> configResources;

+	List<AllottedResource> allottedResources;

+	Request request= new Request();

+	Customer customer= new Customer();

+	

+

+	@Test

+	public void testServiceDecomposition() {

+		sd.setModelInfo(model);

+		sd.setServiceInstance(si);

+		sd.setProject(project);

+		sd.setOwningEntity(oe);

+		sd.setServiceVnfs(vnfResources);

+		sd.setServiceConfigs(configResources);

+		sd.setServiceNetworks(networkResources);

+		sd.setServiceAllottedResources(allottedResources);

+		sd.setServiceConfigResources(configResources);

+		sd.setServiceType("serviceType");

+		sd.setServiceRole("serviceRole");

+		sd.setRequest(request);

+		sd.setCustomer(customer);

+		sd.setCallbackURN("callbackURN");

+		sd.setSdncVersion("sdncVersion");

+		assertEquals(sd.getModelInfo(), model);

+		assertEquals(sd.getServiceInstance(), si);

+		assertEquals(sd.getProject(), project);

+		assertEquals(sd.getOwningEntity(), oe);

+		assertEquals(sd.getServiceVnfs(), vnfResources);

+		assertEquals(sd.getServiceConfigs(), configResources);

+		assertEquals(sd.getServiceNetworks(), networkResources);

+		assertEquals(sd.getServiceAllottedResources(), allottedResources);

+		assertEquals(sd.getServiceConfigResources(), configResources);

+		assertEquals(sd.getRequest(), request);

+		assertEquals(sd.getCustomer(), customer);

+		assertEquals(sd.getCallbackURN(), "callbackURN");

+		assertEquals(sd.getSdncVersion(), "sdncVersion");

+		

+		

+		

+		

+		

+		

+		

+		

+	}

+

+}

diff --git a/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/domain/ServiceInstanceTest.java b/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/domain/ServiceInstanceTest.java
new file mode 100644
index 0000000..b600fef
--- /dev/null
+++ b/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/domain/ServiceInstanceTest.java
@@ -0,0 +1,61 @@
+/*

+* ============LICENSE_START=======================================================

+* ONAP : SO

+* ================================================================================

+* Copyright 2018 TechMahindra

+*=================================================================================

+* 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.bpmn.core.domain;

+

+import static org.junit.Assert.*;

+

+import java.util.Map;

+

+import org.junit.Test;

+

+public class ServiceInstanceTest {

+	

+	private ServiceInstance si= new ServiceInstance();

+	Map serviceParams;

+	Configuration config= new Configuration();

+	ModelInfo model= new ModelInfo();

+

+	@Test

+	public void testServiceInstance() {

+		si.setServiceType("serviceType");

+		si.setServiceId("serviceId");

+		si.setServiceParams(serviceParams);

+		si.setInstanceId("instanceId");

+		si.setInstanceName("instanceName");

+		si.setOrchestrationStatus("orchestrationStatus");

+		si.setConfiguration(config);

+		si.setModelInfo(model);

+		si.setEnvironmentContext("environmentContext");

+		si.setWorkloadContext("workloadContext");

+		assertEquals(si.getServiceType(), "serviceType");

+		assertEquals(si.getServiceId(), "serviceId");

+		assertEquals(si.getServiceParams(), serviceParams);

+		assertEquals(si.getInstanceId(), "instanceId");

+		assertEquals(si.getInstanceName(), "instanceName");

+		assertEquals(si.getOrchestrationStatus(), "orchestrationStatus");

+		assertEquals(si.getConfiguration(), config);

+		assertEquals(si.getModelInfo(), model);

+		assertEquals(si.getEnvironmentContext(), "environmentContext");

+		assertEquals(si.getWorkloadContext(), "workloadContext");

+		

+		

+	}

+

+}

diff --git a/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/domain/SubscriberTest.java b/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/domain/SubscriberTest.java
new file mode 100644
index 0000000..7e9aef2
--- /dev/null
+++ b/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/domain/SubscriberTest.java
@@ -0,0 +1,41 @@
+/*

+* ============LICENSE_START=======================================================

+* ONAP : SO

+* ================================================================================

+* Copyright 2018 TechMahindra

+*=================================================================================

+* 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.bpmn.core.domain;

+

+import static org.junit.Assert.*;

+

+import org.junit.Test;

+

+public class SubscriberTest {

+	Subscriber subscriber= new Subscriber("globalId", "name", "commonSiteId");

+

+	@Test

+	public void testSubscriber() {

+		subscriber.setGlobalId("globalId");

+		subscriber.setName("name");

+		subscriber.setCommonSiteId("commonSiteId");

+		assertEquals(subscriber.getGlobalId(), "globalId");

+		assertEquals(subscriber.getName(), "name");

+		assertEquals(subscriber.getCommonSiteId(), "commonSiteId");

+		

+		

+	}

+

+}

diff --git a/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/domain/TunnelConnectTest.java b/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/domain/TunnelConnectTest.java
new file mode 100644
index 0000000..2a5639f
--- /dev/null
+++ b/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/domain/TunnelConnectTest.java
@@ -0,0 +1,44 @@
+/*

+* ============LICENSE_START=======================================================

+* ONAP : SO

+* ================================================================================

+* Copyright 2018 TechMahindra

+*=================================================================================

+* 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.bpmn.core.domain;

+

+import static org.junit.Assert.*;

+

+import org.junit.Test;

+

+public class TunnelConnectTest {

+	private TunnelConnect tc= new TunnelConnect();

+

+	@Test

+	public void testTunnelConnect() {

+		tc.setId("id");

+		tc.setUpBandwidth("upBandwidth");

+		tc.setDownBandwidth("downBandwidth");

+		tc.setUpBandwidth2("upBandwidth2");

+		tc.setDownBandwidth2("downBandwidth2");

+		assertEquals(tc.getId(), "id");

+		assertEquals(tc.getUpBandwidth(), "upBandwidth");

+		assertEquals(tc.getDownBandwidth(), "downBandwidth");

+		assertEquals(tc.getUpBandwidth2(), "upBandwidth2");

+		assertEquals(tc.getDownBandwidth2(), "downBandwidth2");

+		

+	}

+

+}

diff --git a/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/domain/VnfResourceTest.java b/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/domain/VnfResourceTest.java
new file mode 100644
index 0000000..e476ef9
--- /dev/null
+++ b/bpmn/MSOCoreBPMN/src/test/java/org/openecomp/mso/bpmn/core/domain/VnfResourceTest.java
@@ -0,0 +1,55 @@
+/*

+* ============LICENSE_START=======================================================

+* ONAP : SO

+* ================================================================================

+* Copyright 2018 TechMahindra

+*=================================================================================

+* 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.bpmn.core.domain;

+

+import static org.junit.Assert.*;

+

+import java.util.List;

+

+import org.junit.Test;

+

+public class VnfResourceTest {

+	

+	private VnfResource vnf= new VnfResource();

+	List<ModuleResource> moduleResources;

+

+	@Test

+	public void testVnfResource() {

+		vnf.setModules(moduleResources);

+		vnf.setVnfHostname("vnfHostname");

+		vnf.setVnfType("vnfType");

+		vnf.setNfFunction("nfFunction");

+		vnf.setNfType("nfType");

+		vnf.setNfRole("nfRole");

+		vnf.setNfNamingCode("nfNamingCode");

+		vnf.setMultiStageDesign("multiStageDesign");

+		assertEquals(vnf.getVfModules(), moduleResources);

+		assertEquals(vnf.getVnfHostname(), "vnfHostname");

+		assertEquals(vnf.getVnfType(), "vnfType");

+		assertEquals(vnf.getNfFunction(), "nfFunction");

+		assertEquals(vnf.getNfType(), "nfType");

+		assertEquals(vnf.getNfRole(), "nfRole");

+		assertEquals(vnf.getNfNamingCode(), "nfNamingCode");

+		assertEquals(vnf.getMultiStageDesign(), "multiStageDesign");

+		

+		

+	}

+

+}

diff --git a/bpmn/MSOInfrastructureBPMN/pom.xml b/bpmn/MSOInfrastructureBPMN/pom.xml
index 79d3c4f..f7170ff 100644
--- a/bpmn/MSOInfrastructureBPMN/pom.xml
+++ b/bpmn/MSOInfrastructureBPMN/pom.xml
@@ -342,6 +342,31 @@
 			</exclusions>

 		</dependency>

 

+		<!-- bwj add; Jetty-util -->

+		<dependency>

+			<groupId>org.eclipse.jetty</groupId>

+			<artifactId>jetty-util</artifactId>

+			<version>9.4.8.v20171121</version>

+		</dependency>

+		<!-- bwj add; hibernate-validator -->

+		<dependency>

+			<groupId>org.hibernate</groupId>

+			<artifactId>hibernate-validator</artifactId>

+			<version>5.4.2.Final</version>

+		</dependency>

+		<!-- bwj add; spring-test -->

+		<dependency>

+			<groupId>org.springframework</groupId>

+			<artifactId>spring-test</artifactId>

+			<version>4.3.14.RELEASE</version>

+		</dependency>

+		<!-- bwj add; libphonenumber  -->

+		<dependency>

+			<groupId>com.googlecode.libphonenumber</groupId>

+			<artifactId>libphonenumber</artifactId>

+			<version>8.9.1</version>

+		</dependency>

+

 		<!--for yang tools-->

 <!--		<dependency>

 			<groupId>org.onap.so</groupId>

diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateSDNCNetworkResource.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateSDNCNetworkResource.groovy
index d2d93d5..933d450 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateSDNCNetworkResource.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateSDNCNetworkResource.groovy
@@ -24,9 +24,12 @@
 import groovy.xml.XmlUtil

 import groovy.json.*

 import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor 

-import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil 

+import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil

+import org.openecomp.mso.bpmn.common.recipe.ResourceInput;

+import org.openecomp.mso.bpmn.common.resource.ResourceRequestBuilder 

 import org.openecomp.mso.bpmn.core.WorkflowException 

-import org.openecomp.mso.bpmn.core.json.JsonUtils 

+import org.openecomp.mso.bpmn.core.json.JsonUtils

+import org.openecomp.mso.bpmn.infrastructure.workflow.serviceTask.client.builder.AbstractBuilder

 import org.openecomp.mso.rest.APIResponse

 

 import java.util.UUID;

@@ -46,99 +49,181 @@
  */

 public class CreateSDNCCNetworkResource extends AbstractServiceTaskProcessor {

 

-    String vfcUrl = "/vfc/rest/v1/vfcadapter"

-    

-    String host = "http://mso.mso.testlab.openecomp.org:8080"

-    

+    String Prefix="CRESDNCRES_"

+            

     ExceptionUtil exceptionUtil = new ExceptionUtil()

 

     JsonUtils jsonUtil = new JsonUtils()

     

+    public void preProcessRequest(DelegateExecution execution){

+        def isDebugEnabled = execution.getVariable("isDebugLogEnabled")

+        utils.log("INFO"," ***** Started preProcessRequest *****",  isDebugEnabled)

+        try {           

+            

+            //get bpmn inputs from resource request.

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

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

+            utils.log("INFO","The requestAction is: " + requestAction,  isDebugEnabled)

+            String recipeParamsFromRequest = execution.getVariable("recipeParams")

+            utils.log("INFO","The recipeParams is: " + recipeParams,  isDebugEnabled)

+            String resourceInput = execution.getVariable("requestInput")

+            utils.log("INFO","The resourceInput is: " + resourceInput,  isDebugEnabled)

+            //Get ResourceInput Object

+            ResourceInput resourceInputObj = ResourceRequestBuilder.getJsonObject(resourceInput, resourceInputObj)

+            execution.setVariable(Prefix + "resourceInput", resourceInputObj)

+            

+            //Deal with recipeParams

+            String recipeParamsFromWf = execution.getVariable("recipeParamXsd")

+            String resourceName = resourceInputObj.getResourceInstanceName()            

+            //For sdnc requestAction default is "createNetworkInstance"

+            String operationType = "Network"    

+            if(!StringUtils.isBlank(recipeParamsFromRequest)){

+                //the operationType from worflow(first node) is second priority.

+                operationType = jsonUtil.getJsonValue(recipeParamsFromRequest, "operationType")

+            }

+            if(!StringUtils.isBlank(recipeParamsFromWf)){

+                //the operationType from worflow(first node) is highest priority.

+                operationType = jsonUtil.getJsonValue(recipeParamsFromWf, "operationType")

+            }

+            

+            

+            //For sdnc, generate svc_action and request_action

+            String sdnc_svcAction = "create"

+            if(StringUtils.containsIgnoreCase(resourceInputObj.getResourceInstanceName(), "overlay")){

+                //This will be resolved in R3.

+                sdnc_svcAction ="activate"

+                operationType = "NCINetwork"        

+            }

+            if(StringUtils.containsIgnoreCase(resourceInputObj.getResourceInstanceName(), "underlay")){

+                //This will be resolved in R3.

+                operationType ="Network"

+            }        

+            String sdnc_requestAction = StringUtils.capitalize(sdnc_svcAction) + operationType +"Instance"                    

+            execution.setVariable(Prefix + "svcAction", sdnc_svcAction)        

+            execution.setVariable(Prefix + "requestAction", sdnc_requestAction)

+            execution.setVariable(Prefix + "serviceInstanceId", resourceInputObj.getServiceInstanceId())

+            execution.setVariable("mso-request-id", requestId)

+            execution.setVariable("mso-service-instance-id", resourceInputObj.getServiceInstanceId())

+            //TODO Here build networkrequest

+            

+        } catch (BpmnError e) {

+            throw e;

+        } catch (Exception ex){

+            msg = "Exception in preProcessRequest " + ex.getMessage()

+            utils.log("DEBUG", msg, isDebugEnabled)

+            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)

+        }

+    }

+    

+    

     /**

      * Pre Process the BPMN Flow Request

      * Inclouds:

      * generate the nsOperationKey

      * generate the nsParameters

      */

-    public void preProcessRequest (DelegateExecution execution) {

-	   def isDebugEnabled=execution.getVariable("isDebugLogEnabled")

-       String msg = ""

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

-       try {

-           //deal with nsName and Description

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

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

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

-           //deal with operation key

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

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

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

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

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

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

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

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

-           String nodeTemplateUUID = execution.getVariable("resourceUUID")

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

-           /*

-            * segmentInformation needed as a object of segment

-            * {

-            *     "domain":"",

-            *     "nodeTemplateName":"",

-            *     "nodeType":"",

-            *     "nsParameters":{

-            *       //this is the nsParameters sent to VF-C

-            *     }

-            * }

-            */

-           String nsParameters = execution.getVariable("resourceParameters")

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

-           String nsOperationKey = """{

-                   "globalSubscriberId":"${globalSubscriberId}",

-                   "serviceType":"${serviceType}",

-                   "serviceId":"${serviceId}",

-                   "operationId":"${operationId}",

-                   "nodeTemplateUUID":"${nodeTemplateUUID}"

-                    }"""

-           execution.setVariable("nsOperationKey", nsOperationKey);

-           execution.setVariable("nsParameters", nsParameters)

-           

+    public void prepareSDNCRequest (DelegateExecution execution) {

+        def isDebugEnabled = execution.getVariable("isDebugLogEnabled")

+        utils.log("INFO"," ***** Started prepareSDNCRequest *****",  isDebugEnabled)

 

-       } catch (BpmnError e) {

-           throw e;

-       } catch (Exception ex){

-           msg = "Exception in preProcessRequest " + ex.getMessage()

-           utils.log("INFO", msg, isDebugEnabled)

-           exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)

-       }

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

+        try {

+            // get variables

+            String sdnc_svcAction = execution.getVariable(Prefix + "svcAction")        

+            String sdnc_requestAction = execution.getVariable(Prefix + "requestAction")

+            String sdncCallback = execution.getVariable("URN_mso_workflow_sdncadapter_callback")

+            String createNetworkInput = execution.getVariable(Prefix + "networkRequest")

+

+            String hdrRequestId = execution.getVariable("mso-request-id")

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

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

+            String sdnc_service_id = execution.getVariable(Prefix + "sdncServiceId")

+            ResourceInput resourceInputObj = execution.getVariable(Prefix + "resourceInput")

+            String serviceType = resourceInputObj.getServiceType()

+            String serviceModelInvariantUuid = resourceInputObj.getServiceModelInfo().getModelInvariantUuid()

+            String serviceModelUuid = resourceInputObj.getServiceModelInfo().getModelUuid()

+            String serviceModelVersion = resourceInputObj.getServiceModelInfo().getModelName()

+            String serviceModelName = resourceInputObj.getServiceModelInfo().getModelVersion()

+            String globalCustomerId = resourceInputObj.getGlobalSubscriberId()

+            String modelInvariantUuid = resourceInputObj.getResourceModelInfo().getModelInvariantUuid();

+            String modelCustomizationUuid = resourceInputObj.getResourceModelInfo().getModelCustomizationUuid()

+            String modelUuid = resourceInputObj.getResourceModelInfo().getModelUuid()

+            String modelName = resourceInputObj.getResourceModelInfo().getModelName()

+            String modelVersion = resourceInputObj.getResourceModelInfo().getModelVersion()

+            String resourceInputPrameters = resourceInputObj.getResourceParameters()

+            String netowrkInputParametersJson = jsonUtil.getJsonValue(resourceInputPrameters, "requestInputs")

+            //here convert json string to xml string

+            String netowrkInputParameters = jsonUtil.json2xml(netowrkInputParametersJson)

+            // 1. prepare assign topology via SDNC Adapter SUBFLOW call

+            String sndcTopologyCreateRequest = sdncAdapterUtils.sdncTopologyRequestRsrc(execution, createNetworkInput, serviceInstanceId, sdncCallback, sdnc_svcAction, sdnc_requestAction, null, null, null)

+                    String content =

+                    """<aetgt:SDNCAdapterWorkflowRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"

+                                                              xmlns:sdncadapter="http://org.openecomp.mso/workflow/sdnc/adapter/schema/v1" 

+                                                              xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1">

+                                 <sdncadapter:RequestHeader>

+                                    <sdncadapter:RequestId>${hdrRequestId}</sdncadapter:RequestId>

+                                    <sdncadapter:SvcInstanceId>${serviceInstanceId}</sdncadapter:SvcInstanceId>

+                                    <sdncadapter:SvcAction>${sdnc_svcAction}</sdncadapter:SvcAction>

+                                    <sdncadapter:SvcOperation>network-topology-operation</sdncadapter:SvcOperation>

+                                    <sdncadapter:CallbackUrl>sdncCallback</sdncadapter:CallbackUrl>

+                                    <sdncadapter:MsoAction>generic-resource</sdncadapter:MsoAction>

+                                 </sdncadapter:RequestHeader>

+                                 <sdncadapterworkflow:SDNCRequestData>

+                                     <request-information>

+                                        <request-id>${hdrRequestId}</request-id>

+                                        <request-action>${sdnc_requestAction}</request-action>

+                                        <source>${source}</source>

+                                        <notification-url></notification-url>

+                                        <order-number></order-number>

+                                        <order-version></order-version>

+                                     </request-information>

+                                     <service-information>

+                                        <service-id>${sdnc_service_id}</service-id>

+                                        <subscription-service-type>${serviceType}</subscription-service-type>

+                                        <ecomp-model-information>

+                                             <model-invariant-uuid>${serviceModelInvariantUuid}</model-invariant-uuid>

+                                             <model-uuid>${serviceModelUuid}</model-uuid>

+                                             <model-version>${serviceModelVersion}</model-version>

+                                             <model-name>${serviceModelName}</model-name>

+                                        </ecomp-model-information>

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

+                                        <global-customer-id>${globalCustomerId}</global-customer-id>

+                                     </service-information>

+                                     <network-information>

+                                        <ecomp-model-information>

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

+                                             <model-customization-uuid>${modelCustomizationUuid}</model-customization-uuid>

+                                             <model-uuid>${modelUuid}</model-uuid>

+                                             <model-version>${modelVersion}</model-version>

+                                             <model-name>${modelName}</model-name>

+                                        </ecomp-model-information>

+                                     </network-information>

+                                     <network-request-input>

+                                       <network-input-parameters>${netowrkInputParameters}</network-input-parameters>

+                                     </network-request-input>

+                                </sdncadapterworkflow:SDNCRequestData>

+                             </aetgt:SDNCAdapterWorkflowRequest>""".trim()

+            

+            String sndcTopologyCreateRequesAsString = utils.formatXml(sndcTopologyCreateRequest)

+            utils.logAudit(sndcTopologyCreateRequesAsString)

+            execution.setVariable(Prefix + "createSDNCRequest", sndcTopologyCreateRequesAsString)

+            utils.log("DEBUG", Prefix + "createSDNCRequest - " + "\n" +  sndcTopologyCreateRequesAsString, isDebugEnabled)

+

+        } catch (Exception ex) {

+            String exceptionMessage = " Bpmn error encountered in CreateSDNCCNetworkResource flow. prepareSDNCRequest() - " + ex.getMessage()

+            utils.log("DEBUG", exceptionMessage, isDebugEnabled)

+            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)

+

+        }

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

 	}

 

-    

-    /**

-     * post request

-     * url: the url of the request

-     * requestBody: the body of the request

-     */

-    private APIResponse postRequest(DelegateExecution execution, String url, String requestBody){

-        def isDebugEnabled = execution.getVariable("isDebugLogEnabled")

-        utils.log("INFO"," ***** Started Execute VFC adapter Post Process *****",  isDebugEnabled)

-        utils.log("INFO","url:"+url +"\nrequestBody:"+ requestBody,  isDebugEnabled)

-        APIResponse apiResponse = null

-        try{

-            RESTConfig config = new RESTConfig(url);

-            RESTClient client = new RESTClient(config).addHeader("Content-Type", "application/json").addHeader("Accept","application/json").addHeader("Authorization","Basic QlBFTENsaWVudDpwYXNzd29yZDEk");

-            apiResponse = client.httpPost(requestBody)

-            utils.log("INFO","response code:"+ apiResponse.getStatusCode() +"\nresponse body:"+ apiResponse.getResponseBodyAsString(),  isDebugEnabled)    

-            utils.log("INFO","======== Completed Execute VF-C adapter Post Process ======== ",  isDebugEnabled)

-        }catch(Exception e){

-            utils.log("ERROR","Exception occured while executing AAI Post Call. Exception is: \n" + e,  isDebugEnabled)

-            throw new BpmnError("MSOWorkflowException")

-        }        

-        return apiResponse

-    }

-    

     public void postCreateSDNCCall(DelegateExecution execution){

+        def isDebugEnabled = execution.getVariable("isDebugLogEnabled")

+        utils.log("INFO"," ***** Started prepareSDNCRequest *****",  isDebugEnabled)

+        String responseCode = execution.getVariable(Prefix + "sdncCreateReturnCode")

+        String responseObj = execution.getVariable(Prefix + "SuccessIndicator")

         

+        utils.log("INFO","response from sdnc, response code :" + responseCode + "  response object :" + responseObj,  isDebugEnabled)

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

     }

 }

diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCompareModelVersions.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCompareModelVersions.groovy
index 291df46..6d5249e 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCompareModelVersions.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCompareModelVersions.groovy
@@ -47,8 +47,6 @@
 import java.util.List;

 import java.util.UUID;

 

-import javax.mail.Quota.Resource;

-

 import org.camunda.bpm.engine.delegate.BpmnError

 import org.camunda.bpm.engine.runtime.Execution

 import org.camunda.bpm.engine.delegate.DelegateExecution

diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateE2EServiceInstance.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateE2EServiceInstance.groovy
index 959689e..47ad795 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateE2EServiceInstance.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateE2EServiceInstance.groovy
@@ -50,8 +50,6 @@
 import java.util.List;
 import java.util.UUID;
 
-import javax.mail.Quota.Resource;
-
 import org.camunda.bpm.engine.delegate.BpmnError
 import org.camunda.bpm.engine.delegate.DelegateExecution
 import org.json.JSONObject;
@@ -452,7 +450,7 @@
 	 * sequence resource. we should analyze resource sequence from service template
 	 * Here we make VF first, and then network for E2E service.
 	 */
-	public void sequenceResoure(execution){
+	public void sequenceResoure(DelegateExecution execution){
 	    def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
         utils.log("INFO", "======== Start sequenceResoure Process ======== ", isDebugEnabled)  
 	    String serviceModelUUID = execution.getVariable("modelUuid")
@@ -492,7 +490,7 @@
         utils.log("INFO", "======== COMPLETED sequenceResoure Process ======== ", isDebugEnabled)  
 	}
 	
-	public void getCurrentResoure(execution){
+	public void getCurrentResoure(DelegateExecution execution){
 	    def isDebugEnabled=execution.getVariable("isDebugLogEnabled")   
         utils.log("INFO", "======== Start getCurrentResoure Process ======== ", isDebugEnabled)    
 	    def currentIndex = execution.getVariable("currentResourceIndex")
@@ -505,7 +503,7 @@
 	   /**
      * sequence resource
      */
-    public void parseNextResource(execution){
+    public void parseNextResource(DelegateExecution execution){
         def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
         utils.log("INFO", "======== Start parseNextResource Process ======== ", isDebugEnabled)    
         def currentIndex = execution.getVariable("currentResourceIndex")
@@ -523,11 +521,11 @@
       /**
       * post config request.
       */
-     public void postConfigRequest(execution){
+     public void postConfigRequest(DelegateExecution execution){
          //now do noting
      } 
      
-     public void prepareResourceRecipeRequest(execution){
+     public void prepareResourceRecipeRequest(DelegateExecution execution){
          def isDebugEnabled=execution.getVariable("isDebugLogEnabled")                 
          utils.log("INFO", "======== Start prepareResourceRecipeRequest Process ======== ", isDebugEnabled) 
          ResourceInput resourceInput = new ResourceInput()         
@@ -548,12 +546,9 @@
          def currentIndex = execution.getVariable("currentResourceIndex")
          List<Resource> sequencedResourceList = execution.getVariable("sequencedResourceList")  
          Resource currentResource = sequencedResourceList.get(currentIndex)
-         String resourceCustomizationUuid = currentResource.getModelInfo().getModelCustomizationUuid()
-         resourceInput.setResourceCustomizationUuid(resourceCustomizationUuid);
-         String resourceInvariantUuid = currentResource.getModelInfo().getModelInvariantUuid()
-         resourceInput.setResourceInvariantUuid(resourceInvariantUuid)
-         String resourceUuid = currentResource.getModelInfo().getModelUuid()
-         resourceInput.setResourceUuid(resourceUuid)
+         resourceInput.setResourceModelInfo(currentResource.getModelInfo());
+         ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition")
+         resourceInput.setServiceModelInfo(serviceDecomposition.getModelInfo());
          
          String incomingRequest = execution.getVariable("uuiRequest")
          //set the requestInputs from tempalte  To Be Done
@@ -565,7 +560,7 @@
          utils.log("INFO", "======== COMPLETED prepareResourceRecipeRequest Process ======== ", isDebugEnabled)      
      }
      
-     public void executeResourceRecipe(execution){
+     public void executeResourceRecipe(DelegateExecution execution){
          def isDebugEnabled=execution.getVariable("isDebugLogEnabled")                 
          utils.log("INFO", "======== Start executeResourceRecipe Process ======== ", isDebugEnabled) 
          String requestId = execution.getVariable("msoRequestId")
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
new file mode 100644
index 0000000..07f1376
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateResources.groovy
@@ -0,0 +1,213 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2018 Huawei Technologies Co., Ltd. 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.bpmn.infrastructure.scripts
+
+import java.util.ArrayList
+import java.util.Iterator
+import java.util.List
+import javax.mail.Quota.Resource
+import org.apache.commons.lang3.StringUtils
+import org.apache.http.HttpResponse
+import org.camunda.bpm.engine.delegate.DelegateExecution
+import org.codehaus.groovy.runtime.ArrayUtil
+import org.codehaus.groovy.runtime.ScriptBytecodeAdapter
+import org.codehaus.groovy.runtime.callsite.CallSite
+import org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation
+import org.codehaus.groovy.runtime.typehandling.ShortTypeHandling
+import org.json.JSONArray
+import org.json.JSONObject
+import org.openecomp.mso.bpmn.common.recipe.BpmnRestClient
+import org.openecomp.mso.bpmn.common.recipe.ResourceInput
+import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.openecomp.mso.bpmn.common.scripts.CatalogDbUtils
+import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil
+import org.openecomp.mso.bpmn.core.domain.AllottedResource
+import org.openecomp.mso.bpmn.core.domain.NetworkResource
+import org.openecomp.mso.bpmn.core.domain.VnfResource
+import org.openecomp.mso.bpmn.core.json.JsonUtils
+
+/**
+ * This groovy class supports the <class>DoCreateResources.bpmn</class> process.
+ * 
+ * Inputs:
+ * @param - msoRequestId
+ * @param - globalSubscriberId - O
+ * @param - subscriptionServiceType - O
+ * @param - serviceInstanceId
+ * @param - serviceInstanceName - O
+ * @param - serviceInputParams (should contain aic_zone for serviceTypes TRANSPORT,ATM)
+ * @param - sdncVersion 
+ *
+ * @param - addResourceList
+ *
+ * Outputs:
+ * @param - WorkflowException
+
+ */
+public class DoCreateResources extends AbstractServiceTaskProcessor
+{
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+	JsonUtils jsonUtil = new JsonUtils()
+
+    public void preProcessRequest(DelegateExecution execution)
+    {
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		utils.log("INFO"," ***** preProcessRequest *****",    isDebugEnabled)
+		String msg = ""
+		
+        List addResourceList = execution.getVariable("addResourceList")
+        if (addResourceList == null)
+        {
+            msg = "Input addResourceList is null"
+            utils.log("INFO", msg, isDebugEnabled)
+            exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)  
+        }
+        else if (addResourceList.size() == 0)
+        {
+            msg = "No resource in addResourceList"
+            utils.log("INFO", msg, isDebugEnabled)
+        }
+        utils.log("INFO", " ***** Exit preProcessRequest *****", isDebugEnabled)
+    }
+    
+    public void sequenceResoure(Object execution)
+    {
+        def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+        utils.log("INFO", "======== Start sequenceResoure Process ======== ", isDebugEnabled)
+        
+        String serviceModelUUID = execution.getVariable("modelUuid")      
+               
+        List<Resource> addResourceList = execution.getVariable("addResourceList")        
+
+        //we use VF to define a network service
+        List<VnfResource> vnfResourceList = new ArrayList<VnfResource>()
+        //here wan is defined as a network resource
+        List<NetworkResource> networkResourceList = new ArrayList<NetworkResource>()
+        //allotted resource      
+        List<AllottedResource> arResourceList = new ArrayList<AllottedResource>()
+
+        //define sequenced resource list, we deploy vf first and then network and then ar 
+        //this is defaule sequence
+        List<Resource> sequencedResourceList = new ArrayList<Resource>()
+        for (Resource rc : addResourceList){
+        if (rc instanceof VnfResource) {
+                vnfResourceList.add(rc)
+            } else if (rc instanceof NetworkResource) {
+                NetworkResource.add(rc)
+            } else if (rc instanceof AllottedResource) {
+                AllottedResource.add(rc)
+            }
+        }        
+        sequencedResourceList.addAll(vnfResourceList)
+        sequencedResourceList.addAll(networkResourceList)
+        sequencedResourceList.addAll(arResourceList)
+        
+        String isContainsWanResource = networkResourceList.isEmpty() ? "false" : "true"
+        execution.setVariable("isContainsWanResource", isContainsWanResource)
+        execution.setVariable("currentResourceIndex", 0)
+        execution.setVariable("sequencedResourceList", sequencedResourceList)
+        utils.log("INFO", "sequencedResourceList: " + sequencedResourceList, isDebugEnabled) 
+        utils.log("INFO", "======== COMPLETED sequenceResoure Process ======== ", isDebugEnabled)
+    }   
+   
+    public void getCurrentResoure(execution){
+	    def isDebugEnabled=execution.getVariable("isDebugLogEnabled")   
+        utils.log("INFO", "======== Start getCurrentResoure Process ======== ", isDebugEnabled)    
+	    def currentIndex = execution.getVariable("currentResourceIndex")
+	    List<Resource> sequencedResourceList = execution.getVariable("sequencedResourceList")  
+	    Resource currentResource = sequencedResourceList.get(currentIndex)
+	    utils.log("INFO", "Now we deal with resouce:" + currentResource.getModelInfo().getModelName(), isDebugEnabled)  
+        utils.log("INFO", "======== COMPLETED getCurrentResoure Process ======== ", isDebugEnabled)  
+    }
+    
+    public void parseNextResource(execution){
+        def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+        utils.log("INFO", "======== Start parseNextResource Process ======== ", isDebugEnabled)    
+        def currentIndex = execution.getVariable("currentResourceIndex")
+        def nextIndex =  currentIndex + 1
+        execution.setVariable("currentResourceIndex", nextIndex)
+        List<String> sequencedResourceList = execution.getVariable("sequencedResourceList")    
+        if(nextIndex >= sequencedResourceList.size()){
+            execution.setVariable("allResourceFinished", "true")
+        }else{
+            execution.setVariable("allResourceFinished", "false")
+        }
+        utils.log("INFO", "======== COMPLETED parseNextResource Process ======== ", isDebugEnabled)       
+    }    
+    
+     public void prepareResourceRecipeRequest(execution){
+         def isDebugEnabled=execution.getVariable("isDebugLogEnabled")                 
+         utils.log("INFO", "======== Start prepareResourceRecipeRequest Process ======== ", isDebugEnabled) 
+         ResourceInput resourceInput = new ResourceInput()         
+         String serviceInstanceName = execution.getVariable("serviceInstanceName")
+         String resourceInstanceName = resourceType + "_" + serviceInstanceName
+         resourceInput.setResourceInstanceName(resourceInstanceName)
+         utils.log("INFO", "Prepare Resource Request resourceInstanceName:" + resourceInstanceName, isDebugEnabled)
+         String globalSubscriberId = execution.getVariable("globalSubscriberId")
+         String serviceType = execution.getVariable("serviceType")
+         String serviceInstanceId = execution.getVariable("serviceInstanceId")
+         String operationId = execution.getVariable("operationId")
+         String operationType = execution.getVariable("operationType")
+         resourceInput.setGlobalSubscriberId(globalSubscriberId)
+         resourceInput.setServiceType(serviceType)
+         resourceInput.setServiceInstanceId(serviceInstanceId)
+         resourceInput.setOperationId(operationId)
+         resourceInput.setOperationType(operationType);
+         def currentIndex = execution.getVariable("currentResourceIndex")
+         List<Resource> sequencedResourceList = execution.getVariable("sequencedResourceList")  
+         Resource currentResource = sequencedResourceList.get(currentIndex)
+         String resourceCustomizationUuid = currentResource.getModelInfo().getModelCustomizationUuid()
+         resourceInput.setResourceCustomizationUuid(resourceCustomizationUuid);
+         String resourceInvariantUuid = currentResource.getModelInfo().getModelInvariantUuid()
+         resourceInput.setResourceInvariantUuid(resourceInvariantUuid)
+         String resourceUuid = currentResource.getModelInfo().getModelUuid()
+         resourceInput.setResourceUuid(resourceUuid)
+         
+         String incomingRequest = execution.getVariable("uuiRequest")
+         //set the requestInputs from tempalte  To Be Done
+         String serviceModelUuid = execution.getVariable("modelUuid")
+         String serviceParameters = jsonUtil.getJsonValue(incomingRequest, "service.parameters")
+         String resourceParameters = ResourceRequestBuilder.buildResourceRequestParameters(execution, serviceModelUuid, resourceCustomizationUuid, serviceParameters)
+         resourceInput.setResourceParameters(resourceParameters)
+         execution.setVariable("resourceInput", resourceInput)
+         utils.log("INFO", "======== COMPLETED prepareResourceRecipeRequest Process ======== ", isDebugEnabled)      
+     }
+     
+     public void executeResourceRecipe(execution){
+         def isDebugEnabled=execution.getVariable("isDebugLogEnabled")                 
+         utils.log("INFO", "======== Start executeResourceRecipe Process ======== ", isDebugEnabled) 
+         String requestId = execution.getVariable("msoRequestId")
+         String serviceInstanceId = execution.getVariable("serviceInstanceId")
+         String serviceType = execution.getVariable("serviceType")
+         ResourceInput resourceInput = execution.getVariable("resourceInput")
+         String requestAction = resourceInput.getOperationType()
+         JSONObject resourceRecipe = cutils.getResourceRecipe(execution, resourceInput.getResourceUuid(), requestAction)
+         String recipeUri = resourceRecipe.getString("orchestrationUri")
+         String recipeTimeOut = resourceRecipe.getString("recipeTimeout")
+         String recipeParamXsd = resourceRecipe.get("paramXSD")
+         HttpResponse resp = BpmnRestClient.post(recipeUri, requestId, recipeTimeout, requestAction, serviceInstanceId, serviceType, resourceInput.toString(), recipeParamXsd)
+         
+     }
+    
+     public void postConfigRequest(execution){
+         //now do noting
+     }
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteResources.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteResources.groovy
new file mode 100644
index 0000000..dc4ce68
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteResources.groovy
@@ -0,0 +1,325 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2018 Huawei Technologies Co., Ltd. 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.bpmn.infrastructure.scripts
+
+import org.json.JSONArray;
+
+import static org.apache.commons.lang3.StringUtils.*;
+import groovy.xml.XmlUtil
+import groovy.json.*
+
+import org.openecomp.mso.bpmn.core.domain.ModelInfo
+import org.openecomp.mso.bpmn.core.domain.Resource
+import org.openecomp.mso.bpmn.core.domain.ServiceInstance
+import org.openecomp.mso.bpmn.core.json.JsonUtils
+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.WorkflowException
+import org.openecomp.mso.rest.APIResponse;
+import org.openecomp.mso.rest.RESTClient
+import org.openecomp.mso.rest.RESTConfig
+
+import java.util.List;
+import java.util.UUID;
+import javax.xml.parsers.DocumentBuilder
+import javax.xml.parsers.DocumentBuilderFactory
+
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.delegate.DelegateExecution
+import org.camunda.bpm.engine.runtime.Execution
+import org.json.JSONObject;
+import org.apache.commons.lang3.*
+import org.apache.commons.codec.binary.Base64;
+import org.springframework.web.util.UriUtils;
+import org.w3c.dom.Document
+import org.w3c.dom.Element
+import org.w3c.dom.Node
+import org.w3c.dom.NodeList
+import org.xml.sax.InputSource
+
+import com.fasterxml.jackson.jaxrs.json.annotation.JSONP.Def;
+
+/**
+ * This groovy class supports the <class>DoDeleteResources.bpmn</class> process.
+ * 
+ * Inputs:
+ * @param - msoRequestId
+ * @param - globalSubscriberId - O
+ * @param - subscriptionServiceType - O
+ * @param - serviceInstanceId
+ * @param - serviceInstanceName - O
+ * @param - serviceInputParams (should contain aic_zone for serviceTypes TRANSPORT,ATM)
+ * @param - sdncVersion 
+ * @param - failNotFound - TODO
+ * @param - serviceInputParams - TODO 
+ *
+ * @param - delResourceList
+ * @param - serviceRelationShip
+ *
+ * Outputs:
+ * @param - WorkflowException
+ * 
+ * Rollback - Deferred
+ */
+public class DoDeleteResources extends AbstractServiceTaskProcessor {
+
+	String Prefix="DDELR_"
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+	JsonUtils jsonUtil = new JsonUtils()
+
+	public void preProcessRequest (DelegateExecution execution) {
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		utils.log("INFO"," ***** preProcessRequest *****",  isDebugEnabled)
+		String msg = ""
+		
+		List<ServiceInstance> realNSRessources = new ArrayList<ServiceInstance>() 
+        
+        // related ns from AAI
+        String serviceRelationShip = execution.getVariable("serviceRelationShip")
+        def jsonSlurper = new JsonSlurper()
+        def jsonOutput = new JsonOutput()        
+        List<String> nsSequence = new ArrayList<String>() 
+        List relationShipList =  jsonSlurper.parseText(serviceRelationShip)
+        if (relationShipList != null) {
+           relationShipList.each {
+               String resourceType = it.resourceType
+               nsSequence.add(resourceType)
+           }
+        }       
+     
+        execution.setVariable("currentNSIndex", 0)
+        execution.setVariable("nsSequence", nsSequence)
+        execution.setVariable("realNSRessources", realNSRessources)
+        utils.log("INFO", "nsSequence: " + nsSequence, isDebugEnabled) 
+
+		utils.log("INFO"," ***** Exit preProcessRequest *****",  isDebugEnabled)
+    }
+
+   public void getCurrentNS(execution){
+       def isDebugEnabled=execution.getVariable("isDebugLogEnabled")   
+       utils.log("INFO", "======== Start getCurrentNS Process ======== ", isDebugEnabled)    
+       
+       def currentIndex = execution.getVariable("currentNSIndex")
+       List<String> nsSequence = execution.getVariable("nsSequence") 
+       String nsResourceType =  nsSequence.get(currentIndex)
+       
+       // GET AAI by Name, not ID, for process convenient
+       execution.setVariable("GENGS_type", "service-instance")
+       execution.setVariable("GENGS_serviceInstanceId", "") 
+       execution.setVariable("GENGS_serviceInstanceName", nsResourceType)       
+
+       utils.log("INFO", "======== COMPLETED getCurrentNS Process ======== ", isDebugEnabled)  
+   }	
+	
+	public void postProcessAAIGET(DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("INFO"," ***** postProcessAAIGET2 ***** ", isDebugEnabled)
+		String msg = ""
+
+		try {
+			String nsResourceName = execution.getVariable("GENGS_serviceInstanceName")
+			boolean succInAAI = execution.getVariable("GENGS_SuccessIndicator")
+			if(!succInAAI){
+				utils.log("INFO","Error getting Service-instance from AAI in postProcessAAIGET", + nsResourceName, isDebugEnabled)
+				WorkflowException workflowException = execution.getVariable("WorkflowException")
+				utils.logAudit("workflowException: " + workflowException)
+				if(workflowException != null){
+					exceptionUtil.buildAndThrowWorkflowException(execution, workflowException.getErrorCode(), workflowException.getErrorMessage())
+				}
+				else
+				{
+					msg = "Failure in postProcessAAIGET GENGS_SuccessIndicator:" + succInAAI
+					utils.log("INFO", msg, isDebugEnabled)
+					exceptionUtil.buildAndThrowWorkflowException(execution, 2500, msg)
+				}
+			}
+			else
+			{
+				boolean foundInAAI = execution.getVariable("GENGS_FoundIndicator")
+				if(foundInAAI){
+					String aaiService = execution.getVariable("GENGS_service")
+					if (!isBlank(aaiService)) {
+					    String svcId = utils.getNodeText1(aaiService, "service-instance-id")
+						//String mn = utils.getNodeText1(aaiService, "model-name")						
+						String mIuuid = utils.getNodeText1(aaiService, "model-invariant-id")
+						String muuid = utils.getNodeText1(aaiService, "model-version-id")
+						String mCuuid = utils.getNodeText1(aaiService, "model-customization-uuid")
+						ServiceInstance rc = new ServiceInstance()
+						ModelInfo modelInfo = new ModelInfo()
+						//modelInfo.setModelName(mn)
+						modelInfo.setModelUuid(muuid)						
+						modelInfo.setModelInvariantUuid(mIuuid)
+						modelInfo.getModelCustomizationUuid(mCuuid)
+						rc.setModelInfo(modelInfo)
+						rc.setInstanceId(svcId)
+						rc.setInstanceName(nsResourceName)
+
+						List<ServiceInstance> realNSRessources = execution.getVariable("realNSRessources")
+						realNSRessources.add(rc)
+						execution.setVariable("realNSRessources", realNSRessources)
+						
+						utils.log("INFO","Found Service-instance in AAI.serviceInstanceName:" + execution.getVariable("serviceInstanceName"), isDebugEnabled)
+					}
+				}
+			}
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception ex) {
+			msg = "Exception in DoDeleteResources.postProcessAAIGET " + ex.getMessage()
+			utils.log("INFO", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		utils.log("INFO"," *** Exit postProcessAAIGET *** ", isDebugEnabled)
+	}
+	
+    public void parseNextNS(execution){
+       def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+       utils.log("INFO", "======== Start parseNextNS Process ======== ", isDebugEnabled)    
+       def currentIndex = execution.getVariable("currentNSIndex")
+       def nextIndex =  currentIndex + 1
+       execution.setVariable("currentNSIndex", nextIndex)
+       List<String> nsSequence = execution.getVariable("nsSequence")    
+       if(nextIndex >= nsSequence.size()){
+           execution.setVariable("allNsFinished", "true")
+       }else{
+           execution.setVariable("allNsFinished", "false")
+       }
+       utils.log("INFO", "======== COMPLETED parseNextNS Process ======== ", isDebugEnabled)            
+   }   
+
+   
+   public void sequenceResource(execution){
+       def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+
+       utils.log("INFO", " ======== STARTED sequenceResource Process ======== ", isDebugEnabled)
+       List<String> nsResources = new ArrayList<String>()
+       List<String> wanResources = new ArrayList<String>()
+       List<String> resourceSequence = new  ArrayList<String>()
+       
+       // get delete resource list and order list
+       List<Resource> delResourceList = execution.getVariable("delResourceList")
+       // existing resource list
+       List<ServiceInstance> existResourceList = execution.getVariable("realNSRessources")
+       
+       for(ServiceInstance rc_e : existResourceList){
+       
+           String muuid = rc_e.getModelInfo().getModelUuid()
+           String mIuuid = rc_e.getModelInfo().getModelInvariantUuid()
+           String mCuuid = rc_e.getModelInfo().getModelCustomizationUuid()
+           rcType = rc_e.getInstanceName()
+           
+           for(Resource rc_d : delResourceList){                 
+           
+                if(rc_d.getModelInfo().getModelUuid() == muuid 
+                && rc_d.getModelInfo().getModelInvariantUuid() == mIuuid 
+                && rc_d.getModelInfo().getModelCustomizationUuid() == mCuuid) {
+                
+                   if(StringUtils.containsIgnoreCase(rcType, "overlay") 
+                   || StringUtils.containsIgnoreCase(rcType, "underlay")){                   
+                       wanResources.add(rcType)
+                   }else{
+                       nsResources.add(rcType)
+                   }
+                   
+               }
+           }
+           
+       }
+  
+       resourceSequence.addAll(wanResources)
+       resourceSequence.addAll(nsResources)
+       String isContainsWanResource = wanResources.isEmpty() ? "false" : "true"
+       execution.setVariable("isContainsWanResource", isContainsWanResource)
+       execution.setVariable("currentResourceIndex", 0)
+       execution.setVariable("resourceSequence", resourceSequence)
+       utils.log("INFO", "resourceSequence: " + resourceSequence, isDebugEnabled)  
+       execution.setVariable("wanResources", wanResources)
+       utils.log("INFO", " ======== END sequenceResource Process ======== ", isDebugEnabled)
+   }
+   
+   public void getCurrentResource(execution){
+       def isDebugEnabled=execution.getVariable("isDebugLogEnabled")   
+       utils.log("INFO", "======== Start getCurrentResoure Process ======== ", isDebugEnabled)    
+       def currentIndex = execution.getVariable("currentResourceIndex")
+       List<String> resourceSequence = execution.getVariable("resourceSequence")  
+       List<String> wanResources = execution.getVariable("wanResources")  
+       String resourceName =  resourceSequence.get(currentIndex)
+       execution.setVariable("resourceType",resourceName)
+       if(wanResources.contains(resourceName)){
+           execution.setVariable("controllerInfo", "SDN-C")
+       }else{
+           execution.setVariable("controllerInfo", "VF-C")
+       }
+       utils.log("INFO", "======== COMPLETED getCurrentResoure Process ======== ", isDebugEnabled)  
+   }
+   
+   /**
+    * prepare delete parameters
+    */
+   public void preResourceDelete(execution, resourceName){
+
+       def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+
+       utils.log("INFO", " ======== STARTED preResourceDelete Process ======== ", isDebugEnabled)
+       
+       List<ServiceInstance> existResourceList = execution.getVariable("realNSRessources")
+           
+       for(ServiceInstance rc_e : existResourceList){
+           
+            if(StringUtils.containsIgnoreCase(rc_e.getInstanceName(), resourceName)) {
+                
+				   String resourceInstanceUUID = rc_e.getInstanceId()
+				   String resourceTemplateUUID = rc_e.getModelInfo().getModelUuid()
+				   execution.setVariable("resourceInstanceId", resourceInstanceUUID)
+				   execution.setVariable("resourceTemplateId", resourceTemplateUUID)				   
+				   execution.setVariable("resourceType", resourceName)
+			       utils.log("INFO", "Delete Resource Info resourceTemplate Id :" + resourceTemplateUUID + "  resourceInstanceId: " 
+			           + resourceInstanceUUID + " resourceType: " + resourceName, isDebugEnabled)
+           }
+       }       
+    
+       utils.log("INFO", " ======== END preResourceDelete Process ======== ", isDebugEnabled)
+   }
+   
+   public void parseNextResource(execution){
+       def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+       utils.log("INFO", "======== Start parseNextResource Process ======== ", isDebugEnabled)    
+       def currentIndex = execution.getVariable("currentResourceIndex")
+       def nextIndex =  currentIndex + 1
+       execution.setVariable("currentResourceIndex", nextIndex)
+       List<String> resourceSequence = execution.getVariable("resourceSequence")    
+       if(nextIndex >= resourceSequence.size()){
+           execution.setVariable("allResourceFinished", "true")
+       }else{
+           execution.setVariable("allResourceFinished", "false")
+       }
+       utils.log("INFO", "======== COMPLETED parseNextResource Process ======== ", isDebugEnabled)            
+   }
+   
+     /**
+      * post config request.
+      */
+     public void postConfigRequest(execution){
+         //to do
+     } 
+   
+}
+ 
\ No newline at end of file
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 0372d95..deea707 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
@@ -534,7 +534,167 @@
     public void postProcessForDeleteResource(DelegateExecution execution) {

         def isDebugEnabled=execution.getVariable("isDebugLogEnabled")

     

-    }    

+    } 

+    

+	public void preProcessAAIGET2(DelegateExecution execution) {

+        def isDebugEnabled=execution.getVariable("isDebugLogEnabled")	

+	}

+    	

+	public void postProcessAAIGET2(DelegateExecution execution) {

+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")

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

+		String msg = ""

+

+		try {

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

+			boolean succInAAI = execution.getVariable("GENGS_SuccessIndicator")

+			if(!succInAAI){

+				utils.log("INFO","Error getting Service-instance from AAI in postProcessAAIGET2", + serviceInstanceName, isDebugEnabled)

+				WorkflowException workflowException = execution.getVariable("WorkflowException")

+				utils.logAudit("workflowException: " + workflowException)

+				if(workflowException != null){

+					exceptionUtil.buildAndThrowWorkflowException(execution, workflowException.getErrorCode(), workflowException.getErrorMessage())

+				}

+				else

+				{

+					msg = "Failure in postProcessAAIGET2 GENGS_SuccessIndicator:" + succInAAI

+					utils.log("INFO", msg, isDebugEnabled)

+					exceptionUtil.buildAndThrowWorkflowException(execution, 2500, msg)

+				}

+			}

+			else

+			{

+				boolean foundInAAI = execution.getVariable("GENGS_FoundIndicator")

+				if(foundInAAI){

+					String aaiService = execution.getVariable("GENGS_service")

+					if (!isBlank(aaiService) && (utils.nodeExists(aaiService, "resource-version"))) {

+						execution.setVariable("serviceInstanceVersion",  utils.getNodeText1(aaiService, "resource-version"))

+						utils.log("INFO","Found Service-instance in AAI.serviceInstanceName:" + execution.getVariable("serviceInstanceName"), isDebugEnabled)

+					}

+				}

+			}

+		} catch (BpmnError e) {

+			throw e;

+		} catch (Exception ex) {

+			msg = "Exception in DoCreateServiceInstance.postProcessAAIGET2 " + ex.getMessage()

+			utils.log("INFO", msg, isDebugEnabled)

+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)

+		}

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

+	}

+

+	public void preProcessAAIPUT(DelegateExecution execution) {		

+		def method = getClass().getSimpleName() + '.preProcessRequest(' +'execution=' + execution.getId() +')'

+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")

+		utils.log("INFO","Entered " + method, isDebugEnabled)

+		String msg = ""

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

+

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

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

+		execution.setVariable("GENPS_serviceResourceVersion", serviceInstanceVersion)

+

+		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}\">

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

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

+

+		execution.setVariable("serviceInstanceData", serviceInstanceData)

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

+		utils.logAudit(serviceInstanceData)

+		utils.log("INFO", " aai_uri " + aai_uri + " namespace:" + namespace, isDebugEnabled)

+		utils.log("INFO", " 'payload' to update Service Instance in AAI - " + "\n" + serviceInstanceData, isDebugEnabled)

+	

+		utils.log("INFO", "Exited " + method, isDebugEnabled)

+	}	

+	

+	public void postProcessAAIPUT(DelegateExecution execution) {

+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")

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

+		String msg = ""

+		try {

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

+			boolean succInAAI = execution.getVariable("GENPS_SuccessIndicator")

+			if(!succInAAI){

+				utils.log("INFO","Error putting Service-instance in AAI", + serviceInstanceId, isDebugEnabled)

+				WorkflowException workflowException = execution.getVariable("WorkflowException")

+				utils.logAudit("workflowException: " + workflowException)

+				if(workflowException != null){

+					exceptionUtil.buildAndThrowWorkflowException(execution, workflowException.getErrorCode(), workflowException.getErrorMessage())

+				}

+			}

+			else

+			{

+				//start rollback set up

+				RollbackData rollbackData = new RollbackData()

+				def disableRollback = execution.getVariable("disableRollback")

+				rollbackData.put("SERVICEINSTANCE", "disableRollback", disableRollback.toString())

+				rollbackData.put("SERVICEINSTANCE", "rollbackAAI", "true")

+				rollbackData.put("SERVICEINSTANCE", "serviceInstanceId", serviceInstanceId)

+				rollbackData.put("SERVICEINSTANCE", "subscriptionServiceType", execution.getVariable("subscriptionServiceType"))

+				rollbackData.put("SERVICEINSTANCE", "globalSubscriberId", execution.getVariable("globalSubscriberId"))

+				execution.setVariable("rollbackData", rollbackData)

+			}

+

+		} catch (BpmnError e) {

+			throw e;

+		} catch (Exception ex) {

+			msg = "Exception in DoCreateServiceInstance.postProcessAAIDEL. " + ex.getMessage()

+			utils.log("INFO", msg, isDebugEnabled)

+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)

+		}

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

+	}	

+

+	public void preProcessRollback (DelegateExecution execution) {

+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")

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

+		try {

+			

+			Object workflowException = execution.getVariable("WorkflowException");

+

+			if (workflowException instanceof WorkflowException) {

+				utils.log("INFO", "Prev workflowException: " + workflowException.getErrorMessage(), isDebugEnabled)

+				execution.setVariable("prevWorkflowException", workflowException);

+				//execution.setVariable("WorkflowException", null);

+			}

+		} catch (BpmnError e) {

+			utils.log("INFO", "BPMN Error during preProcessRollback", isDebugEnabled)

+		} catch(Exception ex) {

+			String msg = "Exception in preProcessRollback. " + ex.getMessage()

+			utils.log("INFO", msg, isDebugEnabled)

+		}

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

+	}

+

+	public void postProcessRollback (DelegateExecution execution) {

+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")

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

+		String msg = ""

+		try {

+			Object workflowException = execution.getVariable("prevWorkflowException");

+			if (workflowException instanceof WorkflowException) {

+				utils.log("INFO", "Setting prevException to WorkflowException: ", isDebugEnabled)

+				execution.setVariable("WorkflowException", workflowException);

+			}

+			execution.setVariable("rollbackData", null)

+		} catch (BpmnError b) {

+			utils.log("INFO", "BPMN Error during postProcessRollback", isDebugEnabled)

+			throw b;

+		} catch(Exception ex) {

+			msg = "Exception in postProcessRollback. " + ex.getMessage()

+			utils.log("INFO", msg, isDebugEnabled)

+		}

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

+	}

+

         

 	public void postConfigRequest(execution){

 	    //now do noting

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
new file mode 100644
index 0000000..1e70f95
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoUpdateE2EServiceInstanceRollback.groovy
@@ -0,0 +1,342 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2018 Huawei Technologies Co., Ltd. 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.bpmn.infrastructure.scripts
+
+
+import static org.apache.commons.lang3.StringUtils.*;
+import groovy.xml.XmlUtil
+import groovy.json.*
+
+import org.openecomp.mso.bpmn.core.json.JsonUtils
+import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.openecomp.mso.bpmn.common.scripts.SDNCAdapterUtils
+import org.openecomp.mso.bpmn.core.RollbackData
+import org.openecomp.mso.bpmn.core.WorkflowException
+import org.openecomp.mso.rest.APIResponse;
+import org.openecomp.mso.rest.RESTClient
+import org.openecomp.mso.rest.RESTConfig
+
+import java.util.UUID;
+
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.delegate.DelegateExecution
+import org.json.JSONObject;
+import org.apache.commons.lang3.*
+import org.apache.commons.codec.binary.Base64;
+import org.springframework.web.util.UriUtils;
+/**
+ * This groovy class supports the <class>DoUpdateE2EServiceInstanceRollback.bpmn</class> process.
+ *
+ * Inputs:
+ * @param - msoRequestId
+ * @param - rollbackData with
+ *          globalCustomerId
+ * 			subscriptionServiceType
+ * 			serviceInstanceId
+ * 			disableRollback
+ * 			rollbackAAI
+ * 			rollbackAdded
+ * 			rollbackDeleted
+ *
+ *
+ * Outputs:
+ * @param - rollbackError
+ * @param - rolledBack (no localRB->null, localRB F->false, localRB S->true)
+ *
+ */
+public class DoUpdateE2EServiceInstanceRollback extends AbstractServiceTaskProcessor{
+
+	String Prefix="DUPDSIRB_"
+
+	public void preProcessRequest(DelegateExecution execution) {
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		execution.setVariable("prefix",Prefix)
+		String msg = ""
+		utils.log("DEBUG"," ***** preProcessRequest *****",  isDebugEnabled)
+		execution.setVariable("rollbackAAI",false)
+		execution.setVariable("rollbackAdded",false)
+		execution.setVariable("rollbackDeleted",false)
+		
+		List addResourceList = execution.getVariable("addResourceList")
+        List delResourceList = execution.getVariable("delResourceList")
+        execution.setVariable("addResourceList_o",  addResourceList)
+        execution.setVariable("delResourceList_o",  delResourceList)
+        //exchange add and delete resource list
+        execution.setVariable("addResourceList",  delResourceList)        
+        execution.setVariable("delResourceList",  addResourceList)
+
+		try {
+			def rollbackData = execution.getVariable("rollbackData")
+			utils.log("DEBUG", "RollbackData:" + rollbackData, isDebugEnabled)
+
+			if (rollbackData != null) {
+				if (rollbackData.hasType("SERVICEINSTANCE")) {
+
+					def serviceInstanceId = rollbackData.get("SERVICEINSTANCE", "serviceInstanceId")
+					execution.setVariable("serviceInstanceId", serviceInstanceId)
+
+					def subscriptionServiceType = rollbackData.get("SERVICEINSTANCE", "subscriptionServiceType")
+					execution.setVariable("subscriptionServiceType", subscriptionServiceType)
+
+					def globalSubscriberId  = rollbackData.get("SERVICEINSTANCE", "globalSubscriberId")
+					execution.setVariable("globalSubscriberId", globalSubscriberId)
+
+					def rollbackAAI = rollbackData.get("SERVICEINSTANCE", "rollbackAAI")
+					if ("true".equals(rollbackAAI))
+					{
+						execution.setVariable("rollbackAAI",true)
+					}
+
+					def rollbackAdded = rollbackData.get("SERVICEINSTANCE", "rollbackAdded")
+					if ("true".equals(rollbackAdded))
+					{
+						execution.setVariable("rollbackAdded", true)
+					}
+					
+					def rollbackDeleted = rollbackData.get("SERVICEINSTANCE", "rollbackDeleted")
+					if ("true".equals(rollbackDeleted))
+					{
+						execution.setVariable("rollbackDeleted", true)
+					}					
+
+					if (execution.getVariable("rollbackAAI") != true && execution.getVariable("rollbackAdded") != true 
+					  && execution.getVariable("rollbackDeleted") != true)
+					{
+						execution.setVariable("skipRollback", true)
+					}
+
+				}
+				else {
+					execution.setVariable("skipRollback", true)
+				}
+			}
+			else {
+				execution.setVariable("skipRollback", true)
+			}
+			if (execution.getVariable("disableRollback").equals("true" ))
+			{
+				execution.setVariable("skipRollback", true)
+			}
+
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception ex){
+			msg = "Exception in Update ServiceInstance Rollback preProcessRequest " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		utils.log("DEBUG"," ***** Exit preProcessRequest *****",  isDebugEnabled)
+	}
+
+	public void postProcessRequest(DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG"," ***** postProcessRequest ***** ", isDebugEnabled)
+		String msg = ""
+		try {
+			execution.setVariable("rollbackData", null)
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")
+			boolean rollbackAAI = execution.getVariable("rollbackAAI")
+			boolean rollbackAdded = execution.getVariable("rollbackAdded")
+			boolean rollbackDeleted = execution.getVariable("rollbackDeleted")
+			
+			List addResourceList = execution.getVariable("addResourceList_o")
+			List delResourceList = execution.getVariable("delResourceList_o")
+			execution.setVariable("addResourceList",  addResourceList)
+			execution.setVariable("delResourceList",  delResourceList)
+
+			if (rollbackAAI || rollbackAdded || rollbackDeleted)
+			{
+				execution.setVariable("rolledBack", true)
+			}
+			if (rollbackAAI)
+			{
+				boolean succInAAI = execution.getVariable("GENDS_SuccessIndicator")
+				if(!succInAAI){
+					execution.setVariable("rolledBack", false) //both sdnc and aai must be successful to declare rollback Succesful
+					execution.setVariable("rollbackError", "Error deleting service-instance in AAI for rollback")
+					utils.log("DEBUG","Error deleting service-instance in AAI for rollback", + serviceInstanceId, isDebugEnabled)
+				}
+			}
+			utils.log("DEBUG","*** Exit postProcessRequest ***", isDebugEnabled)
+
+		} catch (BpmnError e) {
+			msg = "Exception in Create ServiceInstance Rollback postProcessRequest. " + e.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+		} catch (Exception ex) {
+			msg = "Exception in Create ServiceInstance Rollback postProcessRequest. " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+		}
+	}
+	
+    
+    public void preProcessForAddResource(DelegateExecution execution) {
+        def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+    }
+
+    public void postProcessForAddResource(DelegateExecution execution) {
+        def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+    
+    }
+    
+    public void preProcessForDeleteResource(DelegateExecution execution) {
+        def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+
+    }
+
+    public void postProcessForDeleteResource(DelegateExecution execution) {
+        def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+    
+    } 
+
+	public void preProcessAAIGET(DelegateExecution execution) {
+        def isDebugEnabled=execution.getVariable("isDebugLogEnabled")	
+	}
+    	
+	public void postProcessAAIGET(DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("INFO"," ***** postProcessAAIGET ***** ", isDebugEnabled)
+		String msg = ""
+
+		try {
+			String serviceInstanceName = execution.getVariable("serviceInstanceName")
+			boolean succInAAI = execution.getVariable("GENGS_SuccessIndicator")
+			if(!succInAAI){
+				utils.log("INFO","Error getting Service-instance from AAI in postProcessAAIGET", + serviceInstanceName, isDebugEnabled)
+				WorkflowException workflowException = execution.getVariable("WorkflowException")
+				utils.logAudit("workflowException: " + workflowException)
+				if(workflowException != null){
+					exceptionUtil.buildAndThrowWorkflowException(execution, workflowException.getErrorCode(), workflowException.getErrorMessage())
+				}
+				else
+				{
+					msg = "Failure in postProcessAAIGET GENGS_SuccessIndicator:" + succInAAI
+					utils.log("INFO", msg, isDebugEnabled)
+					exceptionUtil.buildAndThrowWorkflowException(execution, 2500, msg)
+				}
+			}
+			else
+			{
+				boolean foundInAAI = execution.getVariable("GENGS_FoundIndicator")
+				if(foundInAAI){
+					String aaiService = execution.getVariable("GENGS_service")
+					if (!isBlank(aaiService) && (utils.nodeExists(aaiService, "resource-version"))) {
+						execution.setVariable("serviceInstanceVersion_n",  utils.getNodeText1(aaiService, "resource-version"))
+						utils.log("INFO","Found Service-instance in AAI.serviceInstanceName:" + execution.getVariable("serviceInstanceName"), isDebugEnabled)
+					}
+				}
+			}
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception ex) {
+			msg = "Exception in DoCreateServiceInstance.postProcessAAIGET " + ex.getMessage()
+			utils.log("INFO", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		utils.log("INFO"," *** Exit postProcessAAIGET *** ", isDebugEnabled)
+	}    
+
+	public void preProcessAAIPUT(DelegateExecution execution) {		
+		def method = getClass().getSimpleName() + '.preProcessRequest(' +'execution=' + execution.getId() +')'
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+		utils.log("INFO","Entered " + method, isDebugEnabled)
+		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)
+
+		String serviceInstanceData =
+				"""<service-instance xmlns=\"${namespace}\">
+			       <resource-version">${modelUuid}</resource-version>
+				 </service-instance>""".trim()
+
+		execution.setVariable("serviceInstanceData", serviceInstanceData)
+		utils.log("INFO","serviceInstanceData: " + serviceInstanceData, isDebugEnabled)
+		utils.logAudit(serviceInstanceData)
+		utils.log("INFO", " aai_uri " + aai_uri + " namespace:" + namespace, isDebugEnabled)
+		utils.log("INFO", " 'payload' to update Service Instance in AAI - " + "\n" + serviceInstanceData, isDebugEnabled)
+	
+		utils.log("INFO", "Exited " + method, isDebugEnabled)
+	}	
+	
+	public void postProcessAAIPUT(DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("INFO"," ***** postProcessAAIPUT ***** ", isDebugEnabled)
+		String msg = ""
+		try {
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")
+			boolean succInAAI = execution.getVariable("GENPS_SuccessIndicator")
+			if(!succInAAI){
+				utils.log("INFO","Error putting Service-instance in AAI", + serviceInstanceId, isDebugEnabled)
+				WorkflowException workflowException = execution.getVariable("WorkflowException")
+				utils.logAudit("workflowException: " + workflowException)
+				if(workflowException != null){
+					exceptionUtil.buildAndThrowWorkflowException(execution, workflowException.getErrorCode(), workflowException.getErrorMessage())
+				}
+			}
+			else
+			{
+				
+			}
+
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception ex) {
+			msg = "Exception in DoCreateServiceInstance.postProcessAAIDEL. " + ex.getMessage()
+			utils.log("INFO", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		utils.log("INFO"," *** Exit postProcessAAIPUT *** ", isDebugEnabled)
+	}	
+
+	public void processRollbackException(DelegateExecution execution){
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG"," ***** processRollbackException ***** ", isDebugEnabled)
+		try{
+			utils.log("DEBUG", "Caught an Exception in DoUpdateE2EServiceInstanceRollback", isDebugEnabled)
+			execution.setVariable("rollbackData", null)
+			execution.setVariable("rollbackError", "Caught exception in ServiceInstance Update Rollback")
+			execution.setVariable("WorkflowException", null)
+
+		}catch(BpmnError b){
+			utils.log("DEBUG", "BPMN Error during processRollbackExceptions Method: ", isDebugEnabled)
+		}catch(Exception e){
+			utils.log("DEBUG", "Caught Exception during processRollbackExceptions Method: " + e.getMessage(), isDebugEnabled)
+		}
+
+		utils.log("DEBUG", " Exit processRollbackException", isDebugEnabled)
+	}
+
+	public void processRollbackJavaException(DelegateExecution execution){
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG"," ***** processRollbackJavaException ***** ", isDebugEnabled)
+		try{
+			execution.setVariable("rollbackData", null)
+			execution.setVariable("rollbackError", "Caught Java exception in ServiceInstance Update Rollback")
+			utils.log("DEBUG", "Caught Exception in processRollbackJavaException", isDebugEnabled)
+
+		}catch(Exception e){
+			utils.log("DEBUG", "Caught Exception in processRollbackJavaException " + e.getMessage(), isDebugEnabled)
+		}
+		utils.log("DEBUG", "***** Exit processRollbackJavaException *****", isDebugEnabled)
+	}
+
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/RollbackVnf.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/RollbackVnf.groovy
index b3ac195..99248a9 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/RollbackVnf.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/RollbackVnf.groovy
@@ -25,7 +25,6 @@
 import groovy.util.XmlParser;
 import groovy.xml.QName
 
-import java.beans.MetaData.java_lang_Class_PersistenceDelegate
 import java.io.Serializable;
 import java.util.UUID;
 import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil
@@ -39,7 +38,6 @@
 import org.openecomp.mso.bpmn.common.scripts.VidUtils;
 import org.openecomp.mso.bpmn.core.RollbackData
 import org.openecomp.mso.bpmn.core.WorkflowException
-import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil
 import org.openecomp.mso.bpmn.core.json.JsonUtils
 import org.openecomp.mso.bpmn.core.domain.ModelInfo
 import org.openecomp.mso.bpmn.core.domain.ServiceDecomposition
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/UpdateVnfInfra.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/UpdateVnfInfra.groovy
index 0db7616..b6af0a5 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/UpdateVnfInfra.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/UpdateVnfInfra.groovy
@@ -25,7 +25,6 @@
 import groovy.util.XmlParser;

 import groovy.xml.QName

 

-import java.beans.MetaData.java_lang_Class_PersistenceDelegate

 import java.io.Serializable;

 import java.util.UUID;

 import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil

@@ -39,7 +38,6 @@
 import org.openecomp.mso.bpmn.common.scripts.VidUtils;

 import org.openecomp.mso.bpmn.core.RollbackData

 import org.openecomp.mso.bpmn.core.WorkflowException

-import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil

 import org.openecomp.mso.bpmn.core.json.JsonUtils

 import org.openecomp.mso.bpmn.core.domain.ModelInfo

 import org.openecomp.mso.bpmn.core.domain.ServiceDecomposition

diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/VnfCmBase.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/VnfCmBase.groovy
index c588d38..39820dc 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/VnfCmBase.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/VnfCmBase.groovy
@@ -28,7 +28,6 @@
 import org.json.JSONArray
 import org.json.JSONObject
 
-import java.beans.MetaData.java_lang_Class_PersistenceDelegate
 import java.io.Serializable;
 import java.util.List
 import java.util.UUID;
@@ -43,7 +42,6 @@
 import org.openecomp.mso.bpmn.common.scripts.VidUtils;
 import org.openecomp.mso.bpmn.core.RollbackData
 import org.openecomp.mso.bpmn.core.WorkflowException
-import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil
 import org.openecomp.mso.bpmn.core.json.JsonUtils
 import org.openecomp.mso.bpmn.core.domain.ModelInfo
 import org.openecomp.mso.bpmn.core.domain.ServiceDecomposition
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/VnfConfigUpdate.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/VnfConfigUpdate.groovy
index 33aaef0..13016a5 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/VnfConfigUpdate.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/VnfConfigUpdate.groovy
@@ -25,7 +25,6 @@
 import groovy.util.XmlParser;
 import groovy.xml.QName
 
-import java.beans.MetaData.java_lang_Class_PersistenceDelegate
 import java.io.Serializable;
 import java.util.UUID;
 import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil
@@ -39,7 +38,6 @@
 import org.openecomp.mso.bpmn.common.scripts.VidUtils;
 import org.openecomp.mso.bpmn.core.RollbackData
 import org.openecomp.mso.bpmn.core.WorkflowException
-import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil
 import org.openecomp.mso.bpmn.core.json.JsonUtils
 import org.openecomp.mso.bpmn.core.domain.ModelInfo
 import org.openecomp.mso.bpmn.core.domain.ServiceDecomposition
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/VnfInPlaceUpdate.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/VnfInPlaceUpdate.groovy
index 2b336af..4a64ab0 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/VnfInPlaceUpdate.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/VnfInPlaceUpdate.groovy
@@ -25,7 +25,6 @@
 import groovy.util.XmlParser;
 import groovy.xml.QName
 
-import java.beans.MetaData.java_lang_Class_PersistenceDelegate
 import java.io.Serializable;
 import java.util.UUID;
 import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil
@@ -39,7 +38,6 @@
 import org.openecomp.mso.bpmn.common.scripts.VidUtils;
 import org.openecomp.mso.bpmn.core.RollbackData
 import org.openecomp.mso.bpmn.core.WorkflowException
-import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil
 import org.openecomp.mso.bpmn.core.json.JsonUtils
 import org.openecomp.mso.bpmn.core.domain.ModelInfo
 import org.openecomp.mso.bpmn.core.domain.ServiceDecomposition
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateSDNCNetworkResource.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateSDNCNetworkResource.bpmn
index c88f787..34ab27c 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateSDNCNetworkResource.bpmn
+++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateSDNCNetworkResource.bpmn
@@ -4,26 +4,26 @@
     <bpmn:startEvent id="createNS_StartEvent" name="createNS_StartEvent">
       <bpmn:outgoing>SequenceFlow_1qo2pln</bpmn:outgoing>
     </bpmn:startEvent>
-    <bpmn:sequenceFlow id="SequenceFlow_1qo2pln" sourceRef="createNS_StartEvent" targetRef="PreprocessIncomingRequest_task" />
+    <bpmn:sequenceFlow id="SequenceFlow_1qo2pln" sourceRef="createNS_StartEvent" targetRef="Task_1dlrfiw" />
     <bpmn:sequenceFlow id="SequenceFlow_0khtova" sourceRef="PreprocessIncomingRequest_task" targetRef="CallActivity_1600xlj" />
-    <bpmn:scriptTask id="PreprocessIncomingRequest_task" name="Preprocess Incoming Request" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_1qo2pln</bpmn:incoming>
+    <bpmn:scriptTask id="PreprocessIncomingRequest_task" name="prepare SDNC Request" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_18l3crb</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_0khtova</bpmn:outgoing>
       <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
 def dcsi = new CreateSDNCNetworkResource()
-dcsi.preProcessRequest(execution)]]></bpmn:script>
+dcsi.prepareSDNCRequest(execution)]]></bpmn:script>
     </bpmn:scriptTask>
     <bpmn:endEvent id="EndEvent_1x6k78c" name="create SDNC call end">
       <bpmn:incoming>SequenceFlow_0ow44q0</bpmn:incoming>
     </bpmn:endEvent>
     <bpmn:callActivity id="CallActivity_1600xlj" name="Call SDNC RSRC Create&#10; Adapter V1&#10;" calledElement="sdncAdapter">
       <bpmn:extensionElements>
-        <camunda:in source="CRENWKI_activateSDNCRequest" target="sdncAdapterWorkflowRequest" />
+        <camunda:in source="CRESDNCRES_activateSDNCRequest" target="sdncAdapterWorkflowRequest" />
         <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="sdncAdapterResponse" target="CRENWKI_activateSDNCResponse" />
-        <camunda:out source="SDNCA_ResponseCode" target="CRENWKI_sdncActivateReturnCode" />
-        <camunda:out source="SDNCA_SuccessIndicator" target="SDNCA_SuccessIndicator" />
+        <camunda:out source="SDNCA_ResponseCode" target="CRESDNCRES_sdncCreateReturnCode" />
+        <camunda:out source="SDNCA_SuccessIndicator" target="CRESDNCRES_SuccessIndicator" />
         <camunda:out source="WorkflowException" target="WorkflowException" />
       </bpmn:extensionElements>
       <bpmn:incoming>SequenceFlow_0khtova</bpmn:incoming>
@@ -38,59 +38,93 @@
 def dcsi = new CreateSDNCNetworkResource()
 dcsi.postCreateSDNCCall(execution)]]></bpmn:script>
     </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_0w2es8j" sourceRef="Task_1dlrfiw" targetRef="Task_13sx2bp" />
+    <bpmn:sequenceFlow id="SequenceFlow_18l3crb" sourceRef="Task_13sx2bp" targetRef="PreprocessIncomingRequest_task" />
+    <bpmn:scriptTask id="Task_1dlrfiw" name="Set the Recipe DesignTimeParam" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1qo2pln</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0w2es8j</bpmn:outgoing>
+      <bpmn:script><![CDATA[String recipeParamXsdDemo="""{"operationType":"GRE"}"""
+String recipeParamXsd=""
+execution.setVariable("recipeParamXsd", recipeParamXsd)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:scriptTask id="Task_13sx2bp" name="Pre Process Request" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0w2es8j</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_18l3crb</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def dcsi = new CreateSDNCNetworkResource()
+dcsi.preProcessRequest(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
   </bpmn:process>
   <bpmndi:BPMNDiagram id="BPMNDiagram_1">
     <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="CreateSDNCNetworkResource">
       <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="createNS_StartEvent">
-        <dc:Bounds x="175" y="111" width="36" height="36" />
+        <dc:Bounds x="80" y="111" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="152" y="147" width="83" height="24" />
+          <dc:Bounds x="57" y="147" width="83" height="24" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_1qo2pln_di" bpmnElement="SequenceFlow_1qo2pln">
-        <di:waypoint xsi:type="dc:Point" x="211" y="129" />
-        <di:waypoint xsi:type="dc:Point" x="251" y="129" />
-        <di:waypoint xsi:type="dc:Point" x="251" y="129" />
-        <di:waypoint xsi:type="dc:Point" x="293" y="129" />
+        <di:waypoint xsi:type="dc:Point" x="116" y="129" />
+        <di:waypoint xsi:type="dc:Point" x="185" y="129" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="266" y="123" width="0" height="12" />
+          <dc:Bounds x="105.5" y="108" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0khtova_di" bpmnElement="SequenceFlow_0khtova">
-        <di:waypoint xsi:type="dc:Point" x="393" y="129" />
-        <di:waypoint xsi:type="dc:Point" x="544" y="129" />
+        <di:waypoint xsi:type="dc:Point" x="677" y="129" />
+        <di:waypoint xsi:type="dc:Point" x="739" y="129" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="423.5" y="108" width="90" height="12" />
+          <dc:Bounds x="663" y="108" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ScriptTask_03j6ogo_di" bpmnElement="PreprocessIncomingRequest_task">
-        <dc:Bounds x="293" y="89" width="100" height="80" />
+        <dc:Bounds x="577" y="89" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="EndEvent_15pcuuc_di" bpmnElement="EndEvent_1x6k78c">
-        <dc:Bounds x="951" y="111" width="36" height="36" />
+        <dc:Bounds x="1079" y="111" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="912" y="153" width="85" height="24" />
+          <dc:Bounds x="1040" y="153" width="85" height="24" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="CallActivity_1600xlj_di" bpmnElement="CallActivity_1600xlj">
-        <dc:Bounds x="544" y="89" width="100" height="80" />
+        <dc:Bounds x="739" y="89" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_1xk5xed_di" bpmnElement="SequenceFlow_1xk5xed">
-        <di:waypoint xsi:type="dc:Point" x="644" y="129" />
-        <di:waypoint xsi:type="dc:Point" x="800" y="129" />
+        <di:waypoint xsi:type="dc:Point" x="839" y="129" />
+        <di:waypoint xsi:type="dc:Point" x="902" y="129" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="677" y="108" width="90" height="12" />
+          <dc:Bounds x="825.5" y="108" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0ow44q0_di" bpmnElement="SequenceFlow_0ow44q0">
-        <di:waypoint xsi:type="dc:Point" x="900" y="129" />
-        <di:waypoint xsi:type="dc:Point" x="951" y="129" />
+        <di:waypoint xsi:type="dc:Point" x="1002" y="129" />
+        <di:waypoint xsi:type="dc:Point" x="1079" y="129" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="880.5" y="108" width="90" height="12" />
+          <dc:Bounds x="995.5" y="108" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ScriptTask_0gyej62_di" bpmnElement="Task_023hred">
-        <dc:Bounds x="800" y="89" width="100" height="80" />
+        <dc:Bounds x="902" y="89" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0w2es8j_di" bpmnElement="SequenceFlow_0w2es8j">
+        <di:waypoint xsi:type="dc:Point" x="285" y="129" />
+        <di:waypoint xsi:type="dc:Point" x="385" y="129" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="335" y="108" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_18l3crb_di" bpmnElement="SequenceFlow_18l3crb">
+        <di:waypoint xsi:type="dc:Point" x="485" y="129" />
+        <di:waypoint xsi:type="dc:Point" x="577" y="129" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="531" y="108" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0lc6l7a_di" bpmnElement="Task_1dlrfiw">
+        <dc:Bounds x="185" y="89" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_14l9mlv_di" bpmnElement="Task_13sx2bp">
+        <dc:Bounds x="385" y="89" width="100" height="80" />
       </bpmndi:BPMNShape>
     </bpmndi:BPMNPlane>
   </bpmndi:BPMNDiagram>
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoDeleteResources.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoDeleteResources.bpmn
new file mode 100644
index 0000000..8f0cafa
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoDeleteResources.bpmn
@@ -0,0 +1,481 @@
+<?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="DoDeleteResources" name="All Resources Deleted" isExecutable="true">
+    <bpmn:startEvent id="StartEvent_0212h2r" name="Start Flow">
+      <bpmn:outgoing>SequenceFlow_0vz7cd9</bpmn:outgoing>
+    </bpmn:startEvent>
+    <bpmn:endEvent id="EndEvent_1uqzt26">
+      <bpmn:incoming>SequenceFlow_1r5306k</bpmn:incoming>
+    </bpmn:endEvent>
+    <bpmn:subProcess id="SubProcess_1u8zt9i" name="Sub-process for UnexpectedErrors" triggeredByEvent="true">
+      <bpmn:startEvent id="StartEvent_0sf5lpt">
+        <bpmn:outgoing>SequenceFlow_1921mo3</bpmn:outgoing>
+        <bpmn:errorEventDefinition />
+      </bpmn:startEvent>
+      <bpmn:endEvent id="EndEvent_06utmg4">
+        <bpmn:incoming>SequenceFlow_18vlzfo</bpmn:incoming>
+      </bpmn:endEvent>
+      <bpmn:scriptTask id="ScriptTask_0nha3pr" name="Log / Print Unexpected Error" scriptFormat="groovy">
+        <bpmn:incoming>SequenceFlow_1921mo3</bpmn:incoming>
+        <bpmn:outgoing>SequenceFlow_18vlzfo</bpmn:outgoing>
+        <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.common.scripts.*
+ExceptionUtil ex = new ExceptionUtil()
+ex.processJavaException(execution)]]></bpmn:script>
+      </bpmn:scriptTask>
+      <bpmn:sequenceFlow id="SequenceFlow_1921mo3" name="" sourceRef="StartEvent_0sf5lpt" targetRef="ScriptTask_0nha3pr" />
+      <bpmn:sequenceFlow id="SequenceFlow_18vlzfo" name="" sourceRef="ScriptTask_0nha3pr" targetRef="EndEvent_06utmg4" />
+    </bpmn:subProcess>
+    <bpmn:sequenceFlow id="SequenceFlow_0vz7cd9" sourceRef="StartEvent_0212h2r" targetRef="ScriptTask_14bl5a0" />
+    <bpmn:scriptTask id="ScriptTask_0z30dax" name="Prepare Resource Delele For WAN" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1ubor5z</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1dza4q4</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+String resourceName = execution.getVariable("resourceType")
+def ddsi = new DoDeleteResources()
+ddsi.preResourceDelete(execution, resourceName )]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_1dza4q4" sourceRef="ScriptTask_0z30dax" targetRef="CallActivity_Del_SDNC_cust" />
+    <bpmn:sequenceFlow id="SequenceFlow_1wnkgpx" sourceRef="Task_0z1x3sg" targetRef="Task_0963dho" />
+    <bpmn:scriptTask id="Task_0z1x3sg" name="Prepare Resource Delele For NS" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1x3lehs</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1wnkgpx</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+String resourceName = execution.getVariable("resourceType")
+def ddsi = new DoDeleteResources()
+ddsi.preResourceDelete(execution, resourceName )]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:callActivity id="Task_0963dho" name="Call Network Service Delete for NS" calledElement="DoDeleteVFCNetworkServiceInstance">
+      <bpmn:extensionElements>
+        <camunda:in source="globalSubscriberId" target="globalSubscriberId" />
+        <camunda:in source="serviceType" target="serviceType" />
+        <camunda:in source="serviceInstanceId" target="serviceId" />
+        <camunda:in source="operationId" target="operationId" />
+        <camunda:in source="resourceTemplateId" target="resourceTemplateId" />
+        <camunda:in source="resourceInstanceId" target="resourceInstanceId" />
+        <camunda:in source="resourceType" target="resourceType" />
+        <camunda:in source="operationType" target="operationType" />
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_1wnkgpx</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0phwem2</bpmn:outgoing>
+    </bpmn:callActivity>
+    <bpmn:serviceTask id="CallActivity_Del_SDNC_cust" name="Call Custom Delete SDNC Overlay" camunda:class="org.openecomp.mso.bpmn.infrastructure.workflow.serviceTask.SdncNetworkTopologyOperationTask">
+      <bpmn:incoming>SequenceFlow_1dza4q4</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1lxqjmp</bpmn:outgoing>
+    </bpmn:serviceTask>
+    <bpmn:serviceTask id="Task_0edkv0m" name="Call Delete SDNC Service Topology" camunda:class="org.openecomp.mso.bpmn.infrastructure.workflow.serviceTask.SdncServiceTopologyOperationTask">
+      <bpmn:incoming>SequenceFlow_1icwpye</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1yujjwx</bpmn:outgoing>
+    </bpmn:serviceTask>
+    <bpmn:scriptTask id="ScriptTask_0o5bglz" name="Sequense Resources" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0xqdf1z</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_03c0zlq</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def ddsi = new DoDeleteResources()
+ddsi.sequenceResource(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_07toixi" name="Check Current Resource">
+      <bpmn:incoming>SequenceFlow_1htjmkv</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1ubor5z</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_1x3lehs</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:scriptTask id="ScriptTask_12q6a51" name="Get Current Resource" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_03c0zlq</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_0s1lswk</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1htjmkv</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def ddsi = new DoDeleteResources()
+ddsi.getCurrentResource(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_03c0zlq" sourceRef="ScriptTask_0o5bglz" targetRef="ScriptTask_12q6a51" />
+    <bpmn:sequenceFlow id="SequenceFlow_1htjmkv" sourceRef="ScriptTask_12q6a51" targetRef="ExclusiveGateway_07toixi" />
+    <bpmn:sequenceFlow id="SequenceFlow_1ubor5z" name="SDN-C" sourceRef="ExclusiveGateway_07toixi" targetRef="ScriptTask_0z30dax">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("controllerInfo" )  == "SDN-C" )}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="SequenceFlow_1x3lehs" name="VF-C" sourceRef="ExclusiveGateway_07toixi" targetRef="Task_0z1x3sg">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("controllerInfo" )  == "VF-C" )}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:scriptTask id="ScriptTask_0w46sge" name="Parse Next Resource" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1lxqjmp</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_0phwem2</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0l5r96s</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def ddsi = new DoDeleteResources()
+ddsi.parseNextResource(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_1lxqjmp" sourceRef="CallActivity_Del_SDNC_cust" targetRef="ScriptTask_0w46sge" />
+    <bpmn:sequenceFlow id="SequenceFlow_0phwem2" sourceRef="Task_0963dho" targetRef="ScriptTask_0w46sge" />
+    <bpmn:exclusiveGateway id="ExclusiveGateway_1hgjg3u" name="Is All Resource Deleted">
+      <bpmn:incoming>SequenceFlow_0l5r96s</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0talboa</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_0s1lswk</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:sequenceFlow id="SequenceFlow_0l5r96s" sourceRef="ScriptTask_0w46sge" targetRef="ExclusiveGateway_1hgjg3u" />
+    <bpmn:exclusiveGateway id="ExclusiveGateway_16046vb" name="Is SDNC Service Contained">
+      <bpmn:incoming>SequenceFlow_0talboa</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1icwpye</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:sequenceFlow id="SequenceFlow_1icwpye" name="yes" sourceRef="ExclusiveGateway_16046vb" targetRef="Task_0edkv0m">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("isContainsWanResource" )  == "true" )}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="SequenceFlow_0talboa" name="yes" sourceRef="ExclusiveGateway_1hgjg3u" targetRef="ExclusiveGateway_16046vb">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("allResourceFinished" )  == "true" )}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="SequenceFlow_0s1lswk" name="no" sourceRef="ExclusiveGateway_1hgjg3u" targetRef="ScriptTask_12q6a51">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("allResourceFinished" )  == "false" )}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="SequenceFlow_1yujjwx" sourceRef="Task_0edkv0m" targetRef="ScriptTask_14pmqni" />
+    <bpmn:scriptTask id="ScriptTask_14pmqni" name="Post Config Service Instance Creation" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1yujjwx</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1r5306k</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def csi = new  DoCreateResources()
+csi.postConfigRequest(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_1r5306k" sourceRef="ScriptTask_14pmqni" targetRef="EndEvent_1uqzt26" />
+    <bpmn:scriptTask id="ScriptTask_0ib77as" name="GET Current NS " scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_042d7oc</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_1t2hfv0</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1t8hf8m</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def ddsi = new DoDeleteResources()
+ddsi.getCurrentNS(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:callActivity id="CallActivity_0kf50as" name="GET NS Info from AAI" calledElement="GenericGetService">
+      <bpmn:extensionElements>
+        <camunda:in source="serviceInstanceId" target="GENGS_serviceInstanceId" />
+        <camunda:in sourceExpression="service-instance" target="GENGS_type" />
+        <camunda:out source="GENGS_FoundIndicator" target="GENGS_FoundIndicator" />
+        <camunda:out source="GENGS_SuccessIndicator" target="GENGS_SuccessIndicator" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="GENGS_siResourceLink" target="GENGS_siResourceLink" />
+        <camunda:out source="GENGS_service" target="GENGS_service" />
+        <camunda:in source="globalSubscriberId" target="GENGS_globalCustomerId" />
+        <camunda:in source="serviceType" target="GENGS_serviceType" />
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_1t8hf8m</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0p5gr4z</bpmn:outgoing>
+    </bpmn:callActivity>
+    <bpmn:scriptTask id="ScriptTask_1lqjyj9" name="Post Process GET NS Info from AAI" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0p5gr4z</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_131imj8</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def ddsi = new DoDeleteResources()
+ddsi.postProcessAAIGET(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_1t8hf8m" sourceRef="ScriptTask_0ib77as" targetRef="CallActivity_0kf50as" />
+    <bpmn:sequenceFlow id="SequenceFlow_0p5gr4z" sourceRef="CallActivity_0kf50as" targetRef="ScriptTask_1lqjyj9" />
+    <bpmn:sequenceFlow id="SequenceFlow_1n85wxv" sourceRef="ScriptTask_197fr01" targetRef="ExclusiveGateway_1lt9ijz" />
+    <bpmn:exclusiveGateway id="ExclusiveGateway_1lt9ijz" name="Is All Resource Info OK">
+      <bpmn:extensionElements>
+        <camunda:properties>
+          <camunda:property />
+        </camunda:properties>
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_1n85wxv</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0xqdf1z</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_042d7oc</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:sequenceFlow id="SequenceFlow_0xqdf1z" sourceRef="ExclusiveGateway_1lt9ijz" targetRef="ScriptTask_0o5bglz">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("allNsFinished" )  == "true" )}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="SequenceFlow_042d7oc" sourceRef="ExclusiveGateway_1lt9ijz" targetRef="ScriptTask_0ib77as">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("allNsFinished" )  == "false" )}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:scriptTask id="ScriptTask_14bl5a0" name="PreProcess Incoming Request" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0vz7cd9</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1t2hfv0</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def ddsi = new DoDeleteResources()
+ddsi.preProcessRequest(execution)
+]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_1t2hfv0" sourceRef="ScriptTask_14bl5a0" targetRef="ScriptTask_0ib77as" />
+    <bpmn:scriptTask id="ScriptTask_197fr01" name="Parse Next NS" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_131imj8</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1n85wxv</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def ddsi = new DoDeleteResources()
+ddsi.parseNextNS(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_131imj8" sourceRef="ScriptTask_1lqjyj9" targetRef="ScriptTask_197fr01" />
+  </bpmn:process>
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoDeleteResources">
+      <bpmndi:BPMNShape id="StartEvent_0212h2r_di" bpmnElement="StartEvent_0212h2r">
+        <dc:Bounds x="-214" y="-319" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-220" y="-278" width="50" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_1uqzt26_di" bpmnElement="EndEvent_1uqzt26">
+        <dc:Bounds x="1388" y="725" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1316" y="766" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="SubProcess_1u8zt9i_di" bpmnElement="SubProcess_1u8zt9i" isExpanded="true">
+        <dc:Bounds x="292" y="675" width="467" height="193" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0vz7cd9_di" bpmnElement="SequenceFlow_0vz7cd9">
+        <di:waypoint xsi:type="dc:Point" x="-196" y="-283" />
+        <di:waypoint xsi:type="dc:Point" x="-196" y="-220" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-226" y="-257.5" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="StartEvent_0sf5lpt_di" bpmnElement="StartEvent_0sf5lpt">
+        <dc:Bounds x="360" y="742" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="288" y="783" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_06utmg4_di" bpmnElement="EndEvent_06utmg4">
+        <dc:Bounds x="653" y="742" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="581" y="783" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0nha3pr_di" bpmnElement="ScriptTask_0nha3pr">
+        <dc:Bounds x="464" y="720" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1921mo3_di" bpmnElement="SequenceFlow_1921mo3">
+        <di:waypoint xsi:type="dc:Point" x="396" y="760" />
+        <di:waypoint xsi:type="dc:Point" x="464" y="760" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="340" y="745" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_18vlzfo_di" bpmnElement="SequenceFlow_18vlzfo">
+        <di:waypoint xsi:type="dc:Point" x="564" y="760" />
+        <di:waypoint xsi:type="dc:Point" x="653" y="760" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="520" y="745" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0z30dax_di" bpmnElement="ScriptTask_0z30dax">
+        <dc:Bounds x="470" y="111" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1dza4q4_di" bpmnElement="SequenceFlow_1dza4q4">
+        <di:waypoint xsi:type="dc:Point" x="570" y="151" />
+        <di:waypoint xsi:type="dc:Point" x="688" y="152" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="584" y="130.5" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1wnkgpx_di" bpmnElement="SequenceFlow_1wnkgpx">
+        <di:waypoint xsi:type="dc:Point" x="576" y="378" />
+        <di:waypoint xsi:type="dc:Point" x="688" y="378" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="587" y="357" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_00301ai_di" bpmnElement="Task_0z1x3sg">
+        <dc:Bounds x="476" y="338" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1mwacgl_di" bpmnElement="Task_0963dho">
+        <dc:Bounds x="688" y="338" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ServiceTask_0v9q75y_di" bpmnElement="CallActivity_Del_SDNC_cust">
+        <dc:Bounds x="688" y="112" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ServiceTask_0p4b7e1_di" bpmnElement="Task_0edkv0m">
+        <dc:Bounds x="1356" y="233" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0o5bglz_di" bpmnElement="ScriptTask_0o5bglz">
+        <dc:Bounds x="-26" y="233" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_07toixi_di" bpmnElement="ExclusiveGateway_07toixi" isMarkerVisible="true">
+        <dc:Bounds x="342.56962025316454" y="248" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="332" y="302" width="73" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_12q6a51_di" bpmnElement="ScriptTask_12q6a51">
+        <dc:Bounds x="159" y="450" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_03c0zlq_di" bpmnElement="SequenceFlow_03c0zlq">
+        <di:waypoint xsi:type="dc:Point" x="24" y="313" />
+        <di:waypoint xsi:type="dc:Point" x="24" y="494" />
+        <di:waypoint xsi:type="dc:Point" x="159" y="490" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="39" y="397.5" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1htjmkv_di" bpmnElement="SequenceFlow_1htjmkv">
+        <di:waypoint xsi:type="dc:Point" x="209" y="450" />
+        <di:waypoint xsi:type="dc:Point" x="209" y="273" />
+        <di:waypoint xsi:type="dc:Point" x="343" y="273" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="224" y="355.5" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ubor5z_di" bpmnElement="SequenceFlow_1ubor5z">
+        <di:waypoint xsi:type="dc:Point" x="368" y="248" />
+        <di:waypoint xsi:type="dc:Point" x="368" y="151" />
+        <di:waypoint xsi:type="dc:Point" x="470" y="151" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="366" y="193.5" width="35" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1x3lehs_di" bpmnElement="SequenceFlow_1x3lehs">
+        <di:waypoint xsi:type="dc:Point" x="368" y="298" />
+        <di:waypoint xsi:type="dc:Point" x="368" y="378" />
+        <di:waypoint xsi:type="dc:Point" x="476" y="378" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="379" y="353" width="27" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0w46sge_di" bpmnElement="ScriptTask_0w46sge">
+        <dc:Bounds x="865" y="233" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1lxqjmp_di" bpmnElement="SequenceFlow_1lxqjmp">
+        <di:waypoint xsi:type="dc:Point" x="788" y="152" />
+        <di:waypoint xsi:type="dc:Point" x="827" y="152" />
+        <di:waypoint xsi:type="dc:Point" x="827" y="273" />
+        <di:waypoint xsi:type="dc:Point" x="865" y="273" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="842" y="206.5" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0phwem2_di" bpmnElement="SequenceFlow_0phwem2">
+        <di:waypoint xsi:type="dc:Point" x="788" y="378" />
+        <di:waypoint xsi:type="dc:Point" x="827" y="378" />
+        <di:waypoint xsi:type="dc:Point" x="827" y="273" />
+        <di:waypoint xsi:type="dc:Point" x="865" y="273" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="842" y="319.5" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1hgjg3u_di" bpmnElement="ExclusiveGateway_1hgjg3u" isMarkerVisible="true">
+        <dc:Bounds x="1040.9252217997464" y="248" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1029" y="302" width="74" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0l5r96s_di" bpmnElement="SequenceFlow_0l5r96s">
+        <di:waypoint xsi:type="dc:Point" x="965" y="273" />
+        <di:waypoint xsi:type="dc:Point" x="1041" y="273" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1003" y="252" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_16046vb_di" bpmnElement="ExclusiveGateway_16046vb" isMarkerVisible="true">
+        <dc:Bounds x="1203.8174904942966" y="248.28010139416983" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1187" y="302" width="83" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1icwpye_di" bpmnElement="SequenceFlow_1icwpye">
+        <di:waypoint xsi:type="dc:Point" x="1254" y="273" />
+        <di:waypoint xsi:type="dc:Point" x="1356" y="273" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1297" y="252" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0talboa_di" bpmnElement="SequenceFlow_0talboa">
+        <di:waypoint xsi:type="dc:Point" x="1091" y="273" />
+        <di:waypoint xsi:type="dc:Point" x="1204" y="273" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1138" y="252" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0s1lswk_di" bpmnElement="SequenceFlow_0s1lswk">
+        <di:waypoint xsi:type="dc:Point" x="1066" y="298" />
+        <di:waypoint xsi:type="dc:Point" x="1066" y="490" />
+        <di:waypoint xsi:type="dc:Point" x="259" y="490" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1075" y="388" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1yujjwx_di" bpmnElement="SequenceFlow_1yujjwx">
+        <di:waypoint xsi:type="dc:Point" x="1406" y="313" />
+        <di:waypoint xsi:type="dc:Point" x="1406" y="523" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1421" y="412" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_14pmqni_di" bpmnElement="ScriptTask_14pmqni">
+        <dc:Bounds x="1356" y="523" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1r5306k_di" bpmnElement="SequenceFlow_1r5306k">
+        <di:waypoint xsi:type="dc:Point" x="1406" y="603" />
+        <di:waypoint xsi:type="dc:Point" x="1406" y="725" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1421" y="658" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0ib77as_di" bpmnElement="ScriptTask_0ib77as">
+        <dc:Bounds x="-246" y="-84" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0kf50as_di" bpmnElement="CallActivity_0kf50as">
+        <dc:Bounds x="-84" y="-84" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1lqjyj9_di" bpmnElement="ScriptTask_1lqjyj9">
+        <dc:Bounds x="80" y="-84" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1t8hf8m_di" bpmnElement="SequenceFlow_1t8hf8m">
+        <di:waypoint xsi:type="dc:Point" x="-146" y="-44" />
+        <di:waypoint xsi:type="dc:Point" x="-84" y="-44" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-160" y="-65" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0p5gr4z_di" bpmnElement="SequenceFlow_0p5gr4z">
+        <di:waypoint xsi:type="dc:Point" x="16" y="-44" />
+        <di:waypoint xsi:type="dc:Point" x="80" y="-44" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="3" y="-65" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1n85wxv_di" bpmnElement="SequenceFlow_1n85wxv">
+        <di:waypoint xsi:type="dc:Point" x="290" y="-4" />
+        <di:waypoint xsi:type="dc:Point" x="290" y="106" />
+        <di:waypoint xsi:type="dc:Point" x="49" y="106" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="305" y="45" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1lt9ijz_di" bpmnElement="ExclusiveGateway_1lt9ijz" isMarkerVisible="true">
+        <dc:Bounds x="-1" y="81" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-13" y="135" width="74" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0xqdf1z_di" bpmnElement="SequenceFlow_0xqdf1z">
+        <di:waypoint xsi:type="dc:Point" x="24" y="131" />
+        <di:waypoint xsi:type="dc:Point" x="24" y="233" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="39" y="176" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_042d7oc_di" bpmnElement="SequenceFlow_042d7oc">
+        <di:waypoint xsi:type="dc:Point" x="-1" y="106" />
+        <di:waypoint xsi:type="dc:Point" x="-196" y="106" />
+        <di:waypoint xsi:type="dc:Point" x="-196" y="-4" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-98.5" y="85" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_14bl5a0_di" bpmnElement="ScriptTask_14bl5a0">
+        <dc:Bounds x="-246" y="-220" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1t2hfv0_di" bpmnElement="SequenceFlow_1t2hfv0">
+        <di:waypoint xsi:type="dc:Point" x="-196" y="-140" />
+        <di:waypoint xsi:type="dc:Point" x="-196" y="-84" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-181" y="-118" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_197fr01_di" bpmnElement="ScriptTask_197fr01">
+        <dc:Bounds x="240" y="-84" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_131imj8_di" bpmnElement="SequenceFlow_131imj8">
+        <di:waypoint xsi:type="dc:Point" x="180" y="-44" />
+        <di:waypoint xsi:type="dc:Point" x="240" y="-44" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="210" y="-65" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn:definitions>
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoUpdateE2EServiceInstance.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoUpdateE2EServiceInstance.bpmn
index 75f6b4c..53450fc 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoUpdateE2EServiceInstance.bpmn
+++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoUpdateE2EServiceInstance.bpmn
@@ -16,7 +16,7 @@
     <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="preProcessRequest_ScriptTask" targetRef="CallActivity_18nvmnn" />
     <bpmn2:scriptTask id="ScriptTask_0i8cqdy_PostProcessAAIGET" name="Post Process AAI GET" scriptFormat="groovy">
       <bpmn2:incoming>SequenceFlow_0qg0uyn</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_0wc7v9z</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_167wc99</bpmn2:outgoing>
       <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
 def dcsi = new DoUpdateE2EServiceInstance()
 dcsi.postProcessAAIGET(execution)]]></bpmn2:script>
@@ -46,14 +46,14 @@
     </bpmn2:callActivity>
     <bpmn2:scriptTask id="Task_0ag30bf" name="PostProcess for Add Resource" scriptFormat="groovy">
       <bpmn2:incoming>SequenceFlow_0lblyhi</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_1fr4uwt</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_1nqfgvs</bpmn2:outgoing>
       <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
 def csi = new  DoUpdateE2EServiceInstance()
 csi.postProcessForAddResource(execution)]]></bpmn2:script>
     </bpmn2:scriptTask>
     <bpmn2:scriptTask id="ScriptTask_04rn9mp" name="Post Config Service Instance Update" scriptFormat="groovy">
       <bpmn2:incoming>SequenceFlow_0cnuo36</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_1lkpfe2</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_1ryg78h</bpmn2:outgoing>
       <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
 def csi = new  DoUpdateE2EServiceInstance()
 csi.postConfigRequest(execution)]]></bpmn2:script>
@@ -66,30 +66,11 @@
       <bpmn2:incoming>SequenceFlow_1i45vfx</bpmn2:incoming>
       <bpmn2:linkEventDefinition name="StartCompareModelVersions" />
     </bpmn2:intermediateThrowEvent>
-    <bpmn2:sequenceFlow id="SequenceFlow_1rebkae" sourceRef="StartEvent_0jhv664" targetRef="ScriptTask_1wk7zcu" />
-    <bpmn2:intermediateCatchEvent id="StartEvent_0jhv664" name="FinishProcess">
-      <bpmn2:outgoing>SequenceFlow_1rebkae</bpmn2:outgoing>
-      <bpmn2:linkEventDefinition name="FinishProcess" />
-    </bpmn2:intermediateCatchEvent>
-    <bpmn2:endEvent id="EndEvent_0x8im5g">
-      <bpmn2:incoming>SequenceFlow_1lkpfe2</bpmn2:incoming>
-    </bpmn2:endEvent>
-    <bpmn2:sequenceFlow id="SequenceFlow_1lkpfe2" sourceRef="ScriptTask_04rn9mp" targetRef="EndEvent_0x8im5g" />
-    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_GoToFinishProcess" name="GoTo StartDeleteResources">
-      <bpmn2:incoming>SequenceFlow_1fr4uwt</bpmn2:incoming>
-      <bpmn2:linkEventDefinition name="StartDeleteResources" />
-    </bpmn2:intermediateThrowEvent>
-    <bpmn2:intermediateCatchEvent id="StartEvent_1p7w4fj" name="Update Resource Oper Status">
-      <bpmn2:outgoing>SequenceFlow_0e8oxe4</bpmn2:outgoing>
-      <bpmn2:linkEventDefinition name="UpdateResourceOperStatus" />
-    </bpmn2:intermediateCatchEvent>
-    <bpmn2:sequenceFlow id="SequenceFlow_0e8oxe4" sourceRef="StartEvent_1p7w4fj" targetRef="ScriptTask_1pwo0jp" />
-    <bpmn2:scriptTask id="ScriptTask_1wk7zcu" name="Prepare Update Service Oper Status(100%)" scriptFormat="groovy">
-      <bpmn2:incoming>SequenceFlow_1rebkae</bpmn2:incoming>
+    <bpmn2:scriptTask id="ScriptTask_1wk7zcu" name="Prepare Update Service Oper Status(90%)" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1uu6uiu</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_0gr3l25</bpmn2:outgoing>
       <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
-execution.setVariable("progress", "100")
-execution.setVariable("operationStatus", "End")
+execution.setVariable("progress", "90")
 def ddsi = new DoUpdateE2EServiceInstance()
 ddsi.preUpdateServiceOperationStatus(execution)]]></bpmn2:script>
     </bpmn2:scriptTask>
@@ -118,7 +99,7 @@
     <bpmn2:sequenceFlow id="SequenceFlow_0gr3l25" sourceRef="ScriptTask_1wk7zcu" targetRef="ServiceTask_1a6cmdu" />
     <bpmn2:sequenceFlow id="SequenceFlow_0cnuo36" sourceRef="ServiceTask_1a6cmdu" targetRef="ScriptTask_04rn9mp" />
     <bpmn2:scriptTask id="ScriptTask_1pwo0jp" name="Prepare Resource Oper Status" scriptFormat="groovy">
-      <bpmn2:incoming>SequenceFlow_0e8oxe4</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_167wc99</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_0aylb6e</bpmn2:outgoing>
       <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
 def ddsi = new DoUpdateE2EServiceInstance()
@@ -151,7 +132,6 @@
     <bpmn2:sequenceFlow id="SequenceFlow_115mdln" sourceRef="StartEvent_StartResource" targetRef="Task_09laxun" />
     <bpmn2:sequenceFlow id="SequenceFlow_0yztz2p" sourceRef="Task_09laxun" targetRef="Task_1wyyy33" />
     <bpmn2:sequenceFlow id="SequenceFlow_0lblyhi" sourceRef="Task_1wyyy33" targetRef="Task_0ag30bf" />
-    <bpmn2:sequenceFlow id="SequenceFlow_1fr4uwt" sourceRef="Task_0ag30bf" targetRef="IntermediateThrowEvent_GoToFinishProcess" />
     <bpmn2:scriptTask id="ScriptTask_1xxvnst" name="PreProcess for Delete Resources" scriptFormat="groovy">
       <bpmn2:incoming>SequenceFlow_1qn0865</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_14rubz2</bpmn2:outgoing>
@@ -177,7 +157,7 @@
     </bpmn2:callActivity>
     <bpmn2:scriptTask id="ScriptTask_00wgfrc" name="PostProcess for Delete Resource" scriptFormat="groovy">
       <bpmn2:incoming>SequenceFlow_0tm9bw9</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_0ynd3rm</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_1uu6uiu</bpmn2:outgoing>
       <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
 def csi = new  DoUpdateE2EServiceInstance()
 csi.postProcessForDeleteResource(execution)]]></bpmn2:script>
@@ -186,32 +166,9 @@
       <bpmn2:outgoing>SequenceFlow_1qn0865</bpmn2:outgoing>
       <bpmn2:linkEventDefinition name="StartDeleteResources" />
     </bpmn2:intermediateCatchEvent>
-    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1er2v7q" name="GoTo FinishProcess">
-      <bpmn2:incoming>SequenceFlow_0ynd3rm</bpmn2:incoming>
-      <bpmn2:linkEventDefinition name="FinishProcess" />
-    </bpmn2:intermediateThrowEvent>
     <bpmn2:sequenceFlow id="SequenceFlow_1qn0865" sourceRef="IntermediateCatchEvent_0h6d9jb" targetRef="ScriptTask_1xxvnst" />
     <bpmn2:sequenceFlow id="SequenceFlow_14rubz2" sourceRef="ScriptTask_1xxvnst" targetRef="CallActivity_0yphqzk" />
     <bpmn2:sequenceFlow id="SequenceFlow_0tm9bw9" sourceRef="CallActivity_0yphqzk" targetRef="ScriptTask_00wgfrc" />
-    <bpmn2:sequenceFlow id="SequenceFlow_0ynd3rm" sourceRef="ScriptTask_00wgfrc" targetRef="IntermediateThrowEvent_1er2v7q" />
-    <bpmn2:subProcess id="SubProcess_0roysbg" name="Sub-process for UnexpectedErrors" triggeredByEvent="true">
-      <bpmn2:startEvent id="StartEvent_0xtpw6j">
-        <bpmn2:outgoing>SequenceFlow_19sogyb</bpmn2:outgoing>
-        <bpmn2:errorEventDefinition />
-      </bpmn2:startEvent>
-      <bpmn2:scriptTask id="ScriptTask_0xk9fk3" name="Log / Print Unexpected Error" scriptFormat="groovy">
-        <bpmn2:incoming>SequenceFlow_19sogyb</bpmn2:incoming>
-        <bpmn2:outgoing>SequenceFlow_0ofhz2u</bpmn2:outgoing>
-        <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.common.scripts.*

-ExceptionUtil ex = new ExceptionUtil()

-ex.processJavaException(execution)]]></bpmn2:script>
-      </bpmn2:scriptTask>
-      <bpmn2:sequenceFlow id="SequenceFlow_19sogyb" name="" sourceRef="StartEvent_0xtpw6j" targetRef="ScriptTask_0xk9fk3" />
-      <bpmn2:endEvent id="EndEvent_05a2pr9">
-        <bpmn2:incoming>SequenceFlow_0ofhz2u</bpmn2:incoming>
-      </bpmn2:endEvent>
-      <bpmn2:sequenceFlow id="SequenceFlow_0ofhz2u" sourceRef="ScriptTask_0xk9fk3" targetRef="EndEvent_05a2pr9" />
-    </bpmn2:subProcess>
     <bpmn2:scriptTask id="ScriptTask_0wl77h6" name="Post for Compare Model Versions" scriptFormat="groovy">
       <bpmn2:incoming>SequenceFlow_02d5ibj</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_0l4gosl</bpmn2:outgoing>
@@ -233,19 +190,10 @@
     <bpmn2:sequenceFlow id="SequenceFlow_02d5ibj" sourceRef="ServiceTask_02u5iza" targetRef="ScriptTask_0wl77h6" />
     <bpmn2:sequenceFlow id="SequenceFlow_1vtlt1v" sourceRef="IntermediateCatchEvent_0gk8ige" targetRef="ScriptTask_1afvv50" />
     <bpmn2:sequenceFlow id="SequenceFlow_0h40pn8" sourceRef="ScriptTask_1afvv50" targetRef="ServiceTask_02u5iza" />
-    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_09ur9ds" name="GoTo StartAddResources">
-      <bpmn2:incoming>SequenceFlow_0l4gosl</bpmn2:incoming>
-      <bpmn2:linkEventDefinition name="StartAddResource" />
-    </bpmn2:intermediateThrowEvent>
-    <bpmn2:sequenceFlow id="SequenceFlow_0l4gosl" sourceRef="ScriptTask_0wl77h6" targetRef="IntermediateThrowEvent_09ur9ds" />
     <bpmn2:callActivity id="ServiceTask_02u5iza" name="Call DoCompareModelVersions" calledElement="DoCompareModelVersions">
       <bpmn2:incoming>SequenceFlow_0h40pn8</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_02d5ibj</bpmn2:outgoing>
     </bpmn2:callActivity>
-    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0cabwkq" name="GoTo UpdateResourceOperStatus">
-      <bpmn2:incoming>SequenceFlow_0wc7v9z</bpmn2:incoming>
-      <bpmn2:linkEventDefinition name="UpdateResourceOperStatus" />
-    </bpmn2:intermediateThrowEvent>
     <bpmn2:callActivity id="CallActivity_18nvmnn" name="Call AAI Generic GetService" calledElement="GenericGetService">
       <bpmn2:extensionElements>
         <camunda:in source="serviceInstanceId" target="GENGS_serviceInstanceId" />
@@ -262,7 +210,6 @@
       <bpmn2:outgoing>SequenceFlow_0qg0uyn</bpmn2:outgoing>
     </bpmn2:callActivity>
     <bpmn2:sequenceFlow id="SequenceFlow_0qg0uyn" sourceRef="CallActivity_18nvmnn" targetRef="ScriptTask_0i8cqdy_PostProcessAAIGET" />
-    <bpmn2:sequenceFlow id="SequenceFlow_0wc7v9z" sourceRef="ScriptTask_0i8cqdy_PostProcessAAIGET" targetRef="IntermediateThrowEvent_0cabwkq" />
     <bpmn2:scriptTask id="ScriptTask_17ssed5" name="Post Resource Oper Status" scriptFormat="groovy">
       <bpmn2:incoming>SequenceFlow_1r1hl23</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_1i45vfx</bpmn2:outgoing>
@@ -271,16 +218,8 @@
 dcsi.postResourcesOperStatus(execution)]]></bpmn2:script>
     </bpmn2:scriptTask>
     <bpmn2:sequenceFlow id="SequenceFlow_1i45vfx" sourceRef="ScriptTask_17ssed5" targetRef="IntermediateThrowEvent_1dwg5lz" />
-    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1da7q01" name="GoToStartCompareModelVersions">
-      <bpmn2:incoming>SequenceFlow_16evvx4</bpmn2:incoming>
-      <bpmn2:linkEventDefinition name="StartCompareModelVersions" />
-    </bpmn2:intermediateThrowEvent>
-    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_1uv1dxj" name="Update Resource Oper Status">
-      <bpmn2:outgoing>SequenceFlow_1sphzdm</bpmn2:outgoing>
-      <bpmn2:linkEventDefinition name="UpdateResourceOperStatus" />
-    </bpmn2:intermediateCatchEvent>
     <bpmn2:scriptTask id="ScriptTask_0acnvkp" name="Prepare Resource Oper Status(10%)" scriptFormat="groovy">
-      <bpmn2:incoming>SequenceFlow_1sphzdm</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_0l4gosl</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_0r6c0ci</bpmn2:outgoing>
       <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
 execution.setVariable("progress", "10")
@@ -311,26 +250,20 @@
     </bpmn2:serviceTask>
     <bpmn2:scriptTask id="ScriptTask_0r74c3c" name="Post Resource Oper Status" scriptFormat="groovy">
       <bpmn2:incoming>SequenceFlow_1muxopq</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_16evvx4</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_1sgsysh</bpmn2:outgoing>
       <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
 def dcsi = new DoUpdateE2EServiceInstance()
 dcsi.postResourcesOperStatus(execution)]]></bpmn2:script>
     </bpmn2:scriptTask>
-    <bpmn2:sequenceFlow id="SequenceFlow_16evvx4" sourceRef="ScriptTask_0r74c3c" targetRef="IntermediateThrowEvent_1da7q01" />
-    <bpmn2:sequenceFlow id="SequenceFlow_1sphzdm" sourceRef="IntermediateCatchEvent_1uv1dxj" targetRef="ScriptTask_0acnvkp" />
     <bpmn2:sequenceFlow id="SequenceFlow_0r6c0ci" sourceRef="ScriptTask_0acnvkp" targetRef="ServiceTask_17u9q9u" />
     <bpmn2:sequenceFlow id="SequenceFlow_1muxopq" sourceRef="ServiceTask_17u9q9u" targetRef="ScriptTask_0r74c3c" />
-    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0vneaao" name="GoToStartCompareModelVersions">
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0vneaao" name="GoTo StartDeleteResources">
       <bpmn2:incoming>SequenceFlow_0s57qft</bpmn2:incoming>
-      <bpmn2:linkEventDefinition name="StartCompareModelVersions" />
+      <bpmn2:linkEventDefinition name="StartDeleteResources" />
     </bpmn2:intermediateThrowEvent>
-    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_0a418ef" name="Update Resource Oper Status">
-      <bpmn2:outgoing>SequenceFlow_02taco0</bpmn2:outgoing>
-      <bpmn2:linkEventDefinition name="UpdateResourceOperStatus" />
-    </bpmn2:intermediateCatchEvent>
     <bpmn2:scriptTask id="ScriptTask_1na4qzo" name="Prepare Resource Oper Status(60%)" scriptFormat="groovy">
-      <bpmn2:incoming>SequenceFlow_02taco0</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_07l3twh</bpmn2:outgoing>
+      <bpmn2:incoming>SequenceFlow_1nqfgvs</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1fa1yjd</bpmn2:outgoing>
       <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
 execution.setVariable("progress", "60")
 def ddsi = new DoUpdateE2EServiceInstance()
@@ -355,7 +288,7 @@
           <camunda:connectorId>http-connector</camunda:connectorId>
         </camunda:connector>
       </bpmn2:extensionElements>
-      <bpmn2:incoming>SequenceFlow_07l3twh</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_1fa1yjd</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_1eg944u</bpmn2:outgoing>
     </bpmn2:serviceTask>
     <bpmn2:scriptTask id="ScriptTask_0iq531p" name="Post Resource Oper Status" scriptFormat="groovy">
@@ -366,39 +299,213 @@
 dcsi.postResourcesOperStatus(execution)]]></bpmn2:script>
     </bpmn2:scriptTask>
     <bpmn2:sequenceFlow id="SequenceFlow_0s57qft" sourceRef="ScriptTask_0iq531p" targetRef="IntermediateThrowEvent_0vneaao" />
-    <bpmn2:sequenceFlow id="SequenceFlow_02taco0" sourceRef="IntermediateCatchEvent_0a418ef" targetRef="ScriptTask_1na4qzo" />
-    <bpmn2:sequenceFlow id="SequenceFlow_07l3twh" sourceRef="ScriptTask_1na4qzo" targetRef="ServiceTask_0c13nyt" />
     <bpmn2:sequenceFlow id="SequenceFlow_1eg944u" sourceRef="ServiceTask_0c13nyt" targetRef="ScriptTask_0iq531p" />
+    <bpmn2:callActivity id="CallActivity_1nm9zq7" name="Call Custom E2E Put Service" calledElement="CustomE2EPutService">
+      <bpmn2:extensionElements>
+        <camunda:in source="globalSubscriberId" target="GENPS_globalSubscriberId" />
+        <camunda:in source="serviceInstanceId" target="GENPS_serviceInstanceId" />
+        <camunda:in source="serviceType" target="GENPS_serviceType" />
+        <camunda:in sourceExpression="service-instance" target="GENPS_type" />
+        <camunda:in source="serviceInstanceData" target="GENPS_payload" />
+        <camunda:out source="GENPS_SuccessIndicator" target="GENPS_SuccessIndicator" />
+        <camunda:in source="msoRequestId" target="GENPS_requesId" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1kx5ke9</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0f76thv</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="ScriptTask_0xtabf8" name="Post Process AAI PUT" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0f76thv</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0x0mhlj</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def ddsi = new DoUpdateE2EServiceInstance()
+ddsi.postProcessAAIPUT(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_0a9bdjw" name="UpdateAAI">
+      <bpmn2:outgoing>SequenceFlow_1demy08</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="UpdateAAI" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1demy08" sourceRef="IntermediateCatchEvent_0a9bdjw" targetRef="ScriptTask_195nptq" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0f76thv" sourceRef="CallActivity_1nm9zq7" targetRef="ScriptTask_0xtabf8" />
+    <bpmn2:scriptTask id="ScriptTask_19v8l1w" name="Post Config Service Instance Update" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0h3kdi2</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_07aa121</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def csi = new  DoUpdateE2EServiceInstance()
+csi.postConfigRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_0z04o3s" name="FinishProcess">
+      <bpmn2:outgoing>SequenceFlow_0ku36oy</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="FinishProcess" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:endEvent id="EndEvent_0exzmfn">
+      <bpmn2:incoming>SequenceFlow_07aa121</bpmn2:incoming>
+    </bpmn2:endEvent>
+    <bpmn2:scriptTask id="ScriptTask_0jsblrq" name="Prepare Update Service Oper Status(100%)" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0ku36oy</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0mwh16g</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+execution.setVariable("progress", "100")
+execution.setVariable("operationStatus", "End")
+def ddsi = new DoUpdateE2EServiceInstance()
+ddsi.preUpdateServiceOperationStatus(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:serviceTask id="ServiceTask_1ydxyw0" name="Update Service Oper Status">
+      <bpmn2:extensionElements>
+        <camunda:connector>
+          <camunda:inputOutput>
+            <camunda:inputParameter name="url">${URN_mso_openecomp_adapters_db_endpoint}</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>
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_0mwh16g</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0h3kdi2</bpmn2:outgoing>
+    </bpmn2:serviceTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_0h3kdi2" sourceRef="ServiceTask_1ydxyw0" targetRef="ScriptTask_19v8l1w" />
+    <bpmn2:sequenceFlow id="SequenceFlow_07aa121" sourceRef="ScriptTask_19v8l1w" targetRef="EndEvent_0exzmfn" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0ku36oy" sourceRef="IntermediateCatchEvent_0z04o3s" targetRef="ScriptTask_0jsblrq" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0mwh16g" sourceRef="ScriptTask_0jsblrq" targetRef="ServiceTask_1ydxyw0" />
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_06lo96a" name="GoTo UpdateAAI">
+      <bpmn2:incoming>SequenceFlow_1ryg78h</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="UpdateAAI" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1ryg78h" sourceRef="ScriptTask_04rn9mp" targetRef="IntermediateThrowEvent_06lo96a" />
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0hucdtk" name="GoTo FinishProcess">
+      <bpmn2:incoming>SequenceFlow_0x0mhlj</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="FinishProcess" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0x0mhlj" sourceRef="ScriptTask_0xtabf8" targetRef="IntermediateThrowEvent_0hucdtk" />
+    <bpmn2:sequenceFlow id="SequenceFlow_167wc99" sourceRef="ScriptTask_0i8cqdy_PostProcessAAIGET" targetRef="ScriptTask_1pwo0jp" />
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_09ur9ds" name="GoTo StartAddResources">
+      <bpmn2:incoming>SequenceFlow_1sgsysh</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="StartAddResource" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0l4gosl" sourceRef="ScriptTask_0wl77h6" targetRef="ScriptTask_0acnvkp" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1sgsysh" sourceRef="ScriptTask_0r74c3c" targetRef="IntermediateThrowEvent_09ur9ds" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1fa1yjd" sourceRef="ScriptTask_1na4qzo" targetRef="ServiceTask_0c13nyt" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1nqfgvs" sourceRef="Task_0ag30bf" targetRef="ScriptTask_1na4qzo" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1uu6uiu" sourceRef="ScriptTask_00wgfrc" targetRef="ScriptTask_1wk7zcu" />
+    <bpmn2:subProcess id="SubProcess_0jo0nms" name="Sub-process for Application Errors" triggeredByEvent="true">
+      <bpmn2:startEvent id="StartEvent_06768u3">
+        <bpmn2:outgoing>SequenceFlow_05j3sat</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition />
+      </bpmn2:startEvent>
+      <bpmn2:endEvent id="EndEvent_014jyvb">
+        <bpmn2:incoming>SequenceFlow_02znk15</bpmn2:incoming>
+      </bpmn2:endEvent>
+      <bpmn2:callActivity id="CallActivity_1lu6rx0" name="Call DoUpdateE2EServiceInstanceRollback" calledElement="DoUpdateE2EServiceInstanceRollback">
+        <bpmn2:extensionElements>
+          <camunda:in source="msoRequestId" target="mso-request-id" />
+          <camunda:in source="rollbackData" target="rollbackData" />
+          <camunda:out source="rolledBack" target="rolledBack" />
+          <camunda:in source="disableRollback" target="disableRollback" />
+          <camunda:out source="rollbackError" target="rollbackErrror" />
+        </bpmn2:extensionElements>
+        <bpmn2:incoming>SequenceFlow_19ly8h7</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_0jsdqmq</bpmn2:outgoing>
+      </bpmn2:callActivity>
+      <bpmn2:scriptTask id="ScriptTask_1awrp72" name="Pre Process Rollback" 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>
+      </bpmn2:scriptTask>
+      <bpmn2:scriptTask id="ScriptTask_0vc9jgo" name="Post Process Rollback" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_0jsdqmq</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>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_05j3sat" sourceRef="StartEvent_06768u3" targetRef="ScriptTask_1awrp72" />
+      <bpmn2:sequenceFlow id="SequenceFlow_02znk15" sourceRef="ScriptTask_0vc9jgo" targetRef="EndEvent_014jyvb" />
+      <bpmn2:sequenceFlow id="SequenceFlow_19ly8h7" sourceRef="ScriptTask_1awrp72" targetRef="CallActivity_1lu6rx0" />
+      <bpmn2:sequenceFlow id="SequenceFlow_0jsdqmq" sourceRef="CallActivity_1lu6rx0" targetRef="ScriptTask_0vc9jgo" />
+    </bpmn2:subProcess>
+    <bpmn2:scriptTask id="ScriptTask_195nptq" name="Pre Process AAI GET 2" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1demy08</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1cy5gq2</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def dcsi = new DoUpdateE2EServiceInstance()
+dcsi.preProcessAAIGET2(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_1cy5gq2" sourceRef="ScriptTask_195nptq" targetRef="CallActivity_069o6fn" />
+    <bpmn2:callActivity id="CallActivity_069o6fn" name="Call AAI Generic GetService" calledElement="GenericGetService">
+      <bpmn2:extensionElements>
+        <camunda:in source="serviceInstanceId" target="GENGS_serviceInstanceId" />
+        <camunda:in sourceExpression="service-instance" target="GENGS_type" />
+        <camunda:out source="GENGS_FoundIndicator" target="GENGS_FoundIndicator" />
+        <camunda:out source="GENGS_SuccessIndicator" target="GENGS_SuccessIndicator" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="GENGS_siResourceLink" target="GENGS_siResourceLink" />
+        <camunda:out source="GENGS_service" target="GENGS_service" />
+        <camunda:in source="globalSubscriberId" target="GENGS_globalCustomerId" />
+        <camunda:in source="serviceType" target="GENGS_serviceType" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1cy5gq2</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1vy856f</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="ScriptTask_0lp9y03" name="Post Process AAI GET 2" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1vy856f</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_14ggluy</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def dcsi = new DoUpdateE2EServiceInstance()
+dcsi.postProcessAAIGET2(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_1vy856f" sourceRef="CallActivity_069o6fn" targetRef="ScriptTask_0lp9y03" />
+    <bpmn2:sequenceFlow id="SequenceFlow_14ggluy" sourceRef="ScriptTask_0lp9y03" targetRef="ScriptTask_0sis7k0" />
+    <bpmn2:scriptTask id="ScriptTask_0sis7k0" name="Pre Process AAI PUT" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_14ggluy</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1kx5ke9</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def dcsi = new DoUpdateE2EServiceInstance()
+dcsi.preProcessAAIPUT(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_1kx5ke9" sourceRef="ScriptTask_0sis7k0" targetRef="CallActivity_1nm9zq7" />
   </bpmn2:process>
   <bpmn2:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
   <bpmn2:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" />
   <bpmndi:BPMNDiagram id="BPMNDiagram_1">
     <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoUpdateE2EServiceInstance">
       <bpmndi:BPMNShape id="_BPMNShape_StartEvent_47" bpmnElement="createSI_startEvent">
-        <dc:Bounds x="-14" y="334" width="36" height="36" />
+        <dc:Bounds x="74" y="404" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="-20" y="375" width="50" height="12" />
+          <dc:Bounds x="68" y="445" width="50" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_61" bpmnElement="preProcessRequest_ScriptTask">
-        <dc:Bounds x="293" y="312" width="100" height="80" />
+        <dc:Bounds x="293" y="382" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_47" targetElement="_BPMNShape_ScriptTask_61">
-        <di:waypoint xsi:type="dc:Point" x="22" y="352" />
-        <di:waypoint xsi:type="dc:Point" x="293" y="352" />
+        <di:waypoint xsi:type="dc:Point" x="110" y="422" />
+        <di:waypoint xsi:type="dc:Point" x="293" y="422" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="112.5" y="337" width="90" height="0" />
+          <dc:Bounds x="156.5" y="407" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_ScriptTask_61" targetElement="CallActivity_18nvmnn_di">
-        <di:waypoint xsi:type="dc:Point" x="393" y="352" />
-        <di:waypoint xsi:type="dc:Point" x="589" y="352" />
+        <di:waypoint xsi:type="dc:Point" x="393" y="422" />
+        <di:waypoint xsi:type="dc:Point" x="581" y="420" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="446" y="337" width="90" height="0" />
+          <dc:Bounds x="442" y="406" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ScriptTask_0i8cqdy_di" bpmnElement="ScriptTask_0i8cqdy_PostProcessAAIGET">
-        <dc:Bounds x="858" y="312" width="100" height="80" />
+        <dc:Bounds x="858" y="382" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ScriptTask_1azssf7_di" bpmnElement="Task_09laxun">
         <dc:Bounds x="293" y="828" width="100" height="80" />
@@ -410,114 +517,69 @@
         <dc:Bounds x="858" y="828" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ScriptTask_04rn9mp_di" bpmnElement="ScriptTask_04rn9mp">
-        <dc:Bounds x="858" y="1208" width="100" height="80" />
+        <dc:Bounds x="1675" y="1081" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="IntermediateCatchEvent_0jks7by_di" bpmnElement="StartEvent_StartResource">
-        <dc:Bounds x="-14" y="850" width="36" height="36" />
+        <dc:Bounds x="74" y="850" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="-38" y="895" width="84" height="24" />
+          <dc:Bounds x="50" y="895" width="84" height="24" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="IntermediateThrowEvent_0ys6800_di" bpmnElement="IntermediateThrowEvent_1dwg5lz">
-        <dc:Bounds x="1239" y="473" width="36" height="36" />
+        <dc:Bounds x="1951" y="404" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1213" y="513" width="90" height="24" />
+          <dc:Bounds x="1925" y="444" width="90" height="24" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_1rebkae_di" bpmnElement="SequenceFlow_1rebkae">
-        <di:waypoint xsi:type="dc:Point" x="22" y="1248" />
-        <di:waypoint xsi:type="dc:Point" x="283" y="1248" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="107.5" y="1227" width="90" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="IntermediateCatchEvent_05z1jyy_di" bpmnElement="StartEvent_0jhv664">
-        <dc:Bounds x="-14" y="1230" width="36" height="36" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="-31" y="1270" width="70" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="EndEvent_0x8im5g_di" bpmnElement="EndEvent_0x8im5g">
-        <dc:Bounds x="1239" y="1230" width="36" height="36" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1212" y="1270" width="90" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_1lkpfe2_di" bpmnElement="SequenceFlow_1lkpfe2">
-        <di:waypoint xsi:type="dc:Point" x="958" y="1248" />
-        <di:waypoint xsi:type="dc:Point" x="1239" y="1248" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1053.5" y="1227" width="90" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="IntermediateThrowEvent_11jt9tx_di" bpmnElement="IntermediateThrowEvent_GoToFinishProcess">
-        <dc:Bounds x="1239" y="850" width="36" height="36" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1214" y="892" width="86" height="36" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="IntermediateCatchEvent_0v3ecwh_di" bpmnElement="StartEvent_1p7w4fj">
-        <dc:Bounds x="-14" y="473" width="36" height="36" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="-38" y="513" width="86" height="24" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_0e8oxe4_di" bpmnElement="SequenceFlow_0e8oxe4">
-        <di:waypoint xsi:type="dc:Point" x="22" y="491" />
-        <di:waypoint xsi:type="dc:Point" x="158" y="491" />
-        <di:waypoint xsi:type="dc:Point" x="158" y="491" />
-        <di:waypoint xsi:type="dc:Point" x="293" y="491" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="128" y="485" width="90" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ScriptTask_1wk7zcu_di" bpmnElement="ScriptTask_1wk7zcu">
-        <dc:Bounds x="283" y="1208" width="100" height="80" />
+        <dc:Bounds x="1152" y="1081" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ServiceTask_1a6cmdu_di" bpmnElement="ServiceTask_1a6cmdu">
-        <dc:Bounds x="589" y="1208" width="100" height="80" />
+        <dc:Bounds x="1421" y="1081" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0gr3l25_di" bpmnElement="SequenceFlow_0gr3l25">
-        <di:waypoint xsi:type="dc:Point" x="383" y="1248" />
-        <di:waypoint xsi:type="dc:Point" x="589" y="1248" />
+        <di:waypoint xsi:type="dc:Point" x="1252" y="1121" />
+        <di:waypoint xsi:type="dc:Point" x="1421" y="1121" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="441" y="1227" width="90" height="12" />
+          <dc:Bounds x="1291.5" y="1100" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0cnuo36_di" bpmnElement="SequenceFlow_0cnuo36">
-        <di:waypoint xsi:type="dc:Point" x="689" y="1248" />
-        <di:waypoint xsi:type="dc:Point" x="858" y="1248" />
+        <di:waypoint xsi:type="dc:Point" x="1521" y="1121" />
+        <di:waypoint xsi:type="dc:Point" x="1675" y="1121" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="728.5" y="1227" width="90" height="12" />
+          <dc:Bounds x="1553" y="1100" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ScriptTask_1pwo0jp_di" bpmnElement="ScriptTask_1pwo0jp">
-        <dc:Bounds x="293" y="451" width="100" height="80" />
+        <dc:Bounds x="1152" y="382" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0aylb6e_di" bpmnElement="SequenceFlow_0aylb6e">
-        <di:waypoint xsi:type="dc:Point" x="393" y="491" />
-        <di:waypoint xsi:type="dc:Point" x="552" y="491" />
-        <di:waypoint xsi:type="dc:Point" x="552" y="491" />
-        <di:waypoint xsi:type="dc:Point" x="589" y="491" />
+        <di:waypoint xsi:type="dc:Point" x="1252" y="422" />
+        <di:waypoint xsi:type="dc:Point" x="1337" y="422" />
+        <di:waypoint xsi:type="dc:Point" x="1337" y="422" />
+        <di:waypoint xsi:type="dc:Point" x="1421" y="422" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="522" y="485" width="90" height="12" />
+          <dc:Bounds x="1307" y="416" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ServiceTask_1dqzdko_di" bpmnElement="ServiceTask_1dqzdko">
-        <dc:Bounds x="589" y="451" width="100" height="80" />
+        <dc:Bounds x="1421" y="382" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_1r1hl23_di" bpmnElement="SequenceFlow_1r1hl23">
-        <di:waypoint xsi:type="dc:Point" x="689" y="491" />
-        <di:waypoint xsi:type="dc:Point" x="858" y="491" />
+        <di:waypoint xsi:type="dc:Point" x="1521" y="422" />
+        <di:waypoint xsi:type="dc:Point" x="1598" y="422" />
+        <di:waypoint xsi:type="dc:Point" x="1598" y="422" />
+        <di:waypoint xsi:type="dc:Point" x="1675" y="422" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="728.5" y="470" width="90" height="12" />
+          <dc:Bounds x="1568" y="416" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_115mdln_di" bpmnElement="SequenceFlow_115mdln">
-        <di:waypoint xsi:type="dc:Point" x="22" y="868" />
+        <di:waypoint xsi:type="dc:Point" x="110" y="868" />
         <di:waypoint xsi:type="dc:Point" x="293" y="868" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="112.5" y="847" width="90" height="12" />
+          <dc:Bounds x="156.5" y="847" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0yztz2p_di" bpmnElement="SequenceFlow_0yztz2p">
@@ -534,13 +596,6 @@
           <dc:Bounds x="728.5" y="847" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1fr4uwt_di" bpmnElement="SequenceFlow_1fr4uwt">
-        <di:waypoint xsi:type="dc:Point" x="958" y="868" />
-        <di:waypoint xsi:type="dc:Point" x="1239" y="868" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1053.5" y="847" width="90" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ScriptTask_1xxvnst_di" bpmnElement="ScriptTask_1xxvnst">
         <dc:Bounds x="293" y="1081" width="100" height="80" />
       </bpmndi:BPMNShape>
@@ -551,22 +606,18 @@
         <dc:Bounds x="858" y="1081" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="IntermediateCatchEvent_0h6d9jb_di" bpmnElement="IntermediateCatchEvent_0h6d9jb">
-        <dc:Bounds x="-14" y="1103" width="36" height="36" />
+        <dc:Bounds x="74" y="1103" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="-38" y="1143" width="86" height="24" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="IntermediateThrowEvent_1er2v7q_di" bpmnElement="IntermediateThrowEvent_1er2v7q">
-        <dc:Bounds x="1239" y="1103" width="36" height="36" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1224" y="1143" width="70" height="24" />
+          <dc:Bounds x="50" y="1143" width="86" height="24" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_1qn0865_di" bpmnElement="SequenceFlow_1qn0865">
-        <di:waypoint xsi:type="dc:Point" x="22" y="1121" />
+        <di:waypoint xsi:type="dc:Point" x="110" y="1121" />
+        <di:waypoint xsi:type="dc:Point" x="202" y="1121" />
+        <di:waypoint xsi:type="dc:Point" x="202" y="1121" />
         <di:waypoint xsi:type="dc:Point" x="293" y="1121" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="112.5" y="1100" width="90" height="12" />
+          <dc:Bounds x="172" y="1115" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_14rubz2_di" bpmnElement="SequenceFlow_14rubz2">
@@ -583,47 +634,13 @@
           <dc:Bounds x="728.5" y="1100" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0ynd3rm_di" bpmnElement="SequenceFlow_0ynd3rm">
-        <di:waypoint xsi:type="dc:Point" x="958" y="1121" />
-        <di:waypoint xsi:type="dc:Point" x="1239" y="1121" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1053.5" y="1100" width="90" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="SubProcess_0roysbg_di" bpmnElement="SubProcess_0roysbg" isExpanded="true">
-        <dc:Bounds x="-50" y="1386" width="1361" height="147" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="StartEvent_0xtpw6j_di" bpmnElement="StartEvent_0xtpw6j">
-        <dc:Bounds x="-14" y="1453" width="36" height="36" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="-131" y="1494" width="90" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="EndEvent_05a2pr9_di" bpmnElement="EndEvent_05a2pr9">
-        <dc:Bounds x="1229" y="1453" width="36" height="36" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1112" y="1494" width="90" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_0xk9fk3_di" bpmnElement="ScriptTask_0xk9fk3">
-        <dc:Bounds x="585" y="1431" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_19sogyb_di" bpmnElement="SequenceFlow_19sogyb">
-        <di:waypoint xsi:type="dc:Point" x="22" y="1471" />
-        <di:waypoint xsi:type="dc:Point" x="304" y="1471" />
-        <di:waypoint xsi:type="dc:Point" x="304" y="1471" />
-        <di:waypoint xsi:type="dc:Point" x="585" y="1471" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="274" y="1465" width="90" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ScriptTask_0wl77h6_di" bpmnElement="ScriptTask_0wl77h6">
         <dc:Bounds x="858" y="600" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="IntermediateCatchEvent_0gk8ige_di" bpmnElement="IntermediateCatchEvent_0gk8ige">
-        <dc:Bounds x="-14" y="622" width="36" height="36" />
+        <dc:Bounds x="74" y="622" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="-38" y="684" width="89" height="24" />
+          <dc:Bounds x="50" y="684" width="89" height="24" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ScriptTask_1afvv50_di" bpmnElement="ScriptTask_1afvv50">
@@ -639,10 +656,10 @@
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_1vtlt1v_di" bpmnElement="SequenceFlow_1vtlt1v">
-        <di:waypoint xsi:type="dc:Point" x="22" y="640" />
+        <di:waypoint xsi:type="dc:Point" x="110" y="640" />
         <di:waypoint xsi:type="dc:Point" x="293" y="640" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="112.5" y="578" width="90" height="12" />
+          <dc:Bounds x="156.5" y="619" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0h40pn8_di" bpmnElement="SequenceFlow_0h40pn8">
@@ -652,168 +669,330 @@
           <dc:Bounds x="446" y="578" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="IntermediateThrowEvent_09ur9ds_di" bpmnElement="IntermediateThrowEvent_09ur9ds">
-        <dc:Bounds x="1239" y="622" width="36" height="36" />
+      <bpmndi:BPMNShape id="CallActivity_00ftzjj_di" bpmnElement="ServiceTask_02u5iza">
+        <dc:Bounds x="589" y="600" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_18nvmnn_di" bpmnElement="CallActivity_18nvmnn">
+        <dc:Bounds x="581" y="380" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0qg0uyn_di" bpmnElement="SequenceFlow_0qg0uyn">
+        <di:waypoint xsi:type="dc:Point" x="681" y="420" />
+        <di:waypoint xsi:type="dc:Point" x="858" y="422" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1215" y="663" width="84" height="36" />
+          <dc:Bounds x="724.5" y="400" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_17ssed5_di" bpmnElement="ScriptTask_17ssed5">
+        <dc:Bounds x="1675" y="382" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1i45vfx_di" bpmnElement="SequenceFlow_1i45vfx">
+        <di:waypoint xsi:type="dc:Point" x="1775" y="422" />
+        <di:waypoint xsi:type="dc:Point" x="1951" y="422" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1818" y="401" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0acnvkp_di" bpmnElement="ScriptTask_0acnvkp">
+        <dc:Bounds x="1152" y="600" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ServiceTask_17u9q9u_di" bpmnElement="ServiceTask_17u9q9u">
+        <dc:Bounds x="1421" y="600" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0r74c3c_di" bpmnElement="ScriptTask_0r74c3c">
+        <dc:Bounds x="1675" y="600" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0r6c0ci_di" bpmnElement="SequenceFlow_0r6c0ci">
+        <di:waypoint xsi:type="dc:Point" x="1252" y="640" />
+        <di:waypoint xsi:type="dc:Point" x="1421" y="640" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1291.5" y="619" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1muxopq_di" bpmnElement="SequenceFlow_1muxopq">
+        <di:waypoint xsi:type="dc:Point" x="1521" y="640" />
+        <di:waypoint xsi:type="dc:Point" x="1675" y="640" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1553" y="619" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0vneaao_di" bpmnElement="IntermediateThrowEvent_0vneaao">
+        <dc:Bounds x="1951" y="850" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1925" y="890" width="90" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1na4qzo_di" bpmnElement="ScriptTask_1na4qzo">
+        <dc:Bounds x="1152" y="828" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ServiceTask_0c13nyt_di" bpmnElement="ServiceTask_0c13nyt">
+        <dc:Bounds x="1421" y="828" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0iq531p_di" bpmnElement="ScriptTask_0iq531p">
+        <dc:Bounds x="1675" y="828" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0s57qft_di" bpmnElement="SequenceFlow_0s57qft">
+        <di:waypoint xsi:type="dc:Point" x="1775" y="868" />
+        <di:waypoint xsi:type="dc:Point" x="1951" y="868" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1818" y="847" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1eg944u_di" bpmnElement="SequenceFlow_1eg944u">
+        <di:waypoint xsi:type="dc:Point" x="1521" y="868" />
+        <di:waypoint xsi:type="dc:Point" x="1675" y="868" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1553" y="847" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_1nm9zq7_di" bpmnElement="CallActivity_1nm9zq7">
+        <dc:Bounds x="1410" y="1333" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0xtabf8_di" bpmnElement="ScriptTask_0xtabf8">
+        <dc:Bounds x="1666" y="1333" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_0a9bdjw_di" bpmnElement="IntermediateCatchEvent_0a9bdjw">
+        <dc:Bounds x="74" y="1355" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="69" y="1391" width="52" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1demy08_di" bpmnElement="SequenceFlow_1demy08">
+        <di:waypoint xsi:type="dc:Point" x="110" y="1373" />
+        <di:waypoint xsi:type="dc:Point" x="197" y="1373" />
+        <di:waypoint xsi:type="dc:Point" x="197" y="1373" />
+        <di:waypoint xsi:type="dc:Point" x="293" y="1373" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="212" y="1367" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0f76thv_di" bpmnElement="SequenceFlow_0f76thv">
+        <di:waypoint xsi:type="dc:Point" x="1510" y="1373" />
+        <di:waypoint xsi:type="dc:Point" x="1594" y="1373" />
+        <di:waypoint xsi:type="dc:Point" x="1594" y="1373" />
+        <di:waypoint xsi:type="dc:Point" x="1666" y="1373" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1609" y="1367" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_19v8l1w_di" bpmnElement="ScriptTask_19v8l1w">
+        <dc:Bounds x="1460" y="1474" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_0z04o3s_di" bpmnElement="IntermediateCatchEvent_0z04o3s">
+        <dc:Bounds x="74" y="1496" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="57" y="1536" width="70" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0exzmfn_di" bpmnElement="EndEvent_0exzmfn">
+        <dc:Bounds x="1951" y="1496" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1924" y="1536" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0jsblrq_di" bpmnElement="ScriptTask_0jsblrq">
+        <dc:Bounds x="283" y="1474" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ServiceTask_1ydxyw0_di" bpmnElement="ServiceTask_1ydxyw0">
+        <dc:Bounds x="858" y="1474" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0h3kdi2_di" bpmnElement="SequenceFlow_0h3kdi2">
+        <di:waypoint xsi:type="dc:Point" x="958" y="1514" />
+        <di:waypoint xsi:type="dc:Point" x="1460" y="1514" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1209" y="1493" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_07aa121_di" bpmnElement="SequenceFlow_07aa121">
+        <di:waypoint xsi:type="dc:Point" x="1560" y="1514" />
+        <di:waypoint xsi:type="dc:Point" x="1951" y="1514" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1755.5" y="1493" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ku36oy_di" bpmnElement="SequenceFlow_0ku36oy">
+        <di:waypoint xsi:type="dc:Point" x="110" y="1514" />
+        <di:waypoint xsi:type="dc:Point" x="283" y="1514" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="196.5" y="1493" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0mwh16g_di" bpmnElement="SequenceFlow_0mwh16g">
+        <di:waypoint xsi:type="dc:Point" x="383" y="1514" />
+        <di:waypoint xsi:type="dc:Point" x="858" y="1514" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="620.5" y="1493" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_06lo96a_di" bpmnElement="IntermediateThrowEvent_06lo96a">
+        <dc:Bounds x="1951" y="1103" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1939" y="1143" width="82" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ryg78h_di" bpmnElement="SequenceFlow_1ryg78h">
+        <di:waypoint xsi:type="dc:Point" x="1775" y="1121" />
+        <di:waypoint xsi:type="dc:Point" x="1951" y="1121" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1863" y="1100" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0hucdtk_di" bpmnElement="IntermediateThrowEvent_0hucdtk">
+        <dc:Bounds x="1951" y="1355" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1945" y="1395" width="70" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0x0mhlj_di" bpmnElement="SequenceFlow_0x0mhlj">
+        <di:waypoint xsi:type="dc:Point" x="1766" y="1373" />
+        <di:waypoint xsi:type="dc:Point" x="1863" y="1373" />
+        <di:waypoint xsi:type="dc:Point" x="1863" y="1373" />
+        <di:waypoint xsi:type="dc:Point" x="1951" y="1373" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1878" y="1367" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_167wc99_di" bpmnElement="SequenceFlow_167wc99">
+        <di:waypoint xsi:type="dc:Point" x="958" y="422" />
+        <di:waypoint xsi:type="dc:Point" x="1152" y="422" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1055" y="401" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_09ur9ds_di" bpmnElement="IntermediateThrowEvent_09ur9ds">
+        <dc:Bounds x="1951" y="622" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1927" y="663" width="84" height="36" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0l4gosl_di" bpmnElement="SequenceFlow_0l4gosl">
         <di:waypoint xsi:type="dc:Point" x="958" y="640" />
-        <di:waypoint xsi:type="dc:Point" x="1098" y="640" />
-        <di:waypoint xsi:type="dc:Point" x="1098" y="640" />
-        <di:waypoint xsi:type="dc:Point" x="1239" y="640" />
+        <di:waypoint xsi:type="dc:Point" x="1152" y="640" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1068" y="593" width="90" height="12" />
+          <dc:Bounds x="1010" y="619" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="CallActivity_00ftzjj_di" bpmnElement="ServiceTask_02u5iza">
-        <dc:Bounds x="589" y="600" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="IntermediateThrowEvent_0nf1193_di" bpmnElement="IntermediateThrowEvent_0cabwkq">
-        <dc:Bounds x="1235" y="334" width="36" height="36" />
+      <bpmndi:BPMNEdge id="SequenceFlow_1sgsysh_di" bpmnElement="SequenceFlow_1sgsysh">
+        <di:waypoint xsi:type="dc:Point" x="1775" y="640" />
+        <di:waypoint xsi:type="dc:Point" x="1951" y="640" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1215" y="374" width="83" height="36" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="CallActivity_18nvmnn_di" bpmnElement="CallActivity_18nvmnn">
-        <dc:Bounds x="589" y="312" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_0qg0uyn_di" bpmnElement="SequenceFlow_0qg0uyn">
-        <di:waypoint xsi:type="dc:Point" x="689" y="352" />
-        <di:waypoint xsi:type="dc:Point" x="858" y="352" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="728.5" y="331" width="90" height="12" />
+          <dc:Bounds x="1863" y="619" width="0" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0wc7v9z_di" bpmnElement="SequenceFlow_0wc7v9z">
-        <di:waypoint xsi:type="dc:Point" x="958" y="352" />
-        <di:waypoint xsi:type="dc:Point" x="1235" y="352" />
+      <bpmndi:BPMNEdge id="SequenceFlow_1fa1yjd_di" bpmnElement="SequenceFlow_1fa1yjd">
+        <di:waypoint xsi:type="dc:Point" x="1252" y="868" />
+        <di:waypoint xsi:type="dc:Point" x="1421" y="868" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1096.5" y="331" width="0" height="12" />
+          <dc:Bounds x="1336.5" y="847" width="0" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ScriptTask_17ssed5_di" bpmnElement="ScriptTask_17ssed5">
-        <dc:Bounds x="858" y="451" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_1i45vfx_di" bpmnElement="SequenceFlow_1i45vfx">
-        <di:waypoint xsi:type="dc:Point" x="958" y="491" />
-        <di:waypoint xsi:type="dc:Point" x="1239" y="491" />
+      <bpmndi:BPMNEdge id="SequenceFlow_1nqfgvs_di" bpmnElement="SequenceFlow_1nqfgvs">
+        <di:waypoint xsi:type="dc:Point" x="958" y="868" />
+        <di:waypoint xsi:type="dc:Point" x="1152" y="868" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1098.5" y="470" width="0" height="12" />
+          <dc:Bounds x="1055" y="847" width="0" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="IntermediateThrowEvent_1da7q01_di" bpmnElement="IntermediateThrowEvent_1da7q01">
-        <dc:Bounds x="1239" y="718" width="36" height="36" />
+      <bpmndi:BPMNEdge id="SequenceFlow_1uu6uiu_di" bpmnElement="SequenceFlow_1uu6uiu">
+        <di:waypoint xsi:type="dc:Point" x="958" y="1121" />
+        <di:waypoint xsi:type="dc:Point" x="1152" y="1121" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1212" y="760" width="90" height="24" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="IntermediateCatchEvent_1uv1dxj_di" bpmnElement="IntermediateCatchEvent_1uv1dxj">
-        <dc:Bounds x="-14" y="718" width="36" height="36" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="-36" y="760" width="86" height="24" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_0acnvkp_di" bpmnElement="ScriptTask_0acnvkp">
-        <dc:Bounds x="293" y="696" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ServiceTask_17u9q9u_di" bpmnElement="ServiceTask_17u9q9u">
-        <dc:Bounds x="589" y="696" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_0r74c3c_di" bpmnElement="ScriptTask_0r74c3c">
-        <dc:Bounds x="858" y="696" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_16evvx4_di" bpmnElement="SequenceFlow_16evvx4">
-        <di:waypoint xsi:type="dc:Point" x="958" y="736" />
-        <di:waypoint xsi:type="dc:Point" x="1239" y="736" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1098.5" y="753" width="0" height="12" />
+          <dc:Bounds x="1055" y="1100" width="0" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1sphzdm_di" bpmnElement="SequenceFlow_1sphzdm">
-        <di:waypoint xsi:type="dc:Point" x="22" y="736" />
-        <di:waypoint xsi:type="dc:Point" x="158" y="736" />
-        <di:waypoint xsi:type="dc:Point" x="158" y="736" />
-        <di:waypoint xsi:type="dc:Point" x="293" y="736" />
+      <bpmndi:BPMNShape id="SubProcess_0jo0nms_di" bpmnElement="SubProcess_0jo0nms" isExpanded="true">
+        <dc:Bounds x="236" y="1818" width="1428" height="210" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_06768u3_di" bpmnElement="StartEvent_06768u3">
+        <dc:Bounds x="266" y="1895" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="173" y="768" width="0" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0r6c0ci_di" bpmnElement="SequenceFlow_0r6c0ci">
-        <di:waypoint xsi:type="dc:Point" x="393" y="736" />
-        <di:waypoint xsi:type="dc:Point" x="552" y="736" />
-        <di:waypoint xsi:type="dc:Point" x="552" y="736" />
-        <di:waypoint xsi:type="dc:Point" x="589" y="736" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="567" y="768" width="0" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1muxopq_di" bpmnElement="SequenceFlow_1muxopq">
-        <di:waypoint xsi:type="dc:Point" x="689" y="736" />
-        <di:waypoint xsi:type="dc:Point" x="858" y="736" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="773.5" y="753" width="0" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="IntermediateThrowEvent_0vneaao_di" bpmnElement="IntermediateThrowEvent_0vneaao">
-        <dc:Bounds x="1239" y="948" width="36" height="36" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1213" y="988" width="90" height="24" />
+          <dc:Bounds x="239" y="1936" width="0" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="IntermediateCatchEvent_0a418ef_di" bpmnElement="IntermediateCatchEvent_0a418ef">
-        <dc:Bounds x="-14" y="948" width="36" height="36" />
+      <bpmndi:BPMNShape id="EndEvent_014jyvb_di" bpmnElement="EndEvent_014jyvb">
+        <dc:Bounds x="1581" y="1895" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="-38" y="988" width="86" height="24" />
+          <dc:Bounds x="1554" y="1936" width="0" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_1na4qzo_di" bpmnElement="ScriptTask_1na4qzo">
-        <dc:Bounds x="293" y="926" width="100" height="80" />
+      <bpmndi:BPMNShape id="CallActivity_1lu6rx0_di" bpmnElement="CallActivity_1lu6rx0">
+        <dc:Bounds x="923" y="1873" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ServiceTask_0c13nyt_di" bpmnElement="ServiceTask_0c13nyt">
-        <dc:Bounds x="589" y="926" width="100" height="80" />
+      <bpmndi:BPMNShape id="ScriptTask_1awrp72_di" bpmnElement="ScriptTask_1awrp72">
+        <dc:Bounds x="557" y="1873" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_0iq531p_di" bpmnElement="ScriptTask_0iq531p">
-        <dc:Bounds x="858" y="926" width="100" height="80" />
+      <bpmndi:BPMNShape id="ScriptTask_0vc9jgo_di" bpmnElement="ScriptTask_0vc9jgo">
+        <dc:Bounds x="1248" y="1873" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_0s57qft_di" bpmnElement="SequenceFlow_0s57qft">
-        <di:waypoint xsi:type="dc:Point" x="958" y="966" />
-        <di:waypoint xsi:type="dc:Point" x="1239" y="966" />
+      <bpmndi:BPMNEdge id="SequenceFlow_05j3sat_di" bpmnElement="SequenceFlow_05j3sat">
+        <di:waypoint xsi:type="dc:Point" x="302" y="1913" />
+        <di:waypoint xsi:type="dc:Point" x="557" y="1913" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1098.5" y="945" width="0" height="12" />
+          <dc:Bounds x="385.5" y="1898" width="0" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_02taco0_di" bpmnElement="SequenceFlow_02taco0">
-        <di:waypoint xsi:type="dc:Point" x="22" y="966" />
-        <di:waypoint xsi:type="dc:Point" x="158" y="966" />
-        <di:waypoint xsi:type="dc:Point" x="158" y="966" />
-        <di:waypoint xsi:type="dc:Point" x="293" y="966" />
+      <bpmndi:BPMNEdge id="SequenceFlow_02znk15_di" bpmnElement="SequenceFlow_02znk15">
+        <di:waypoint xsi:type="dc:Point" x="1348" y="1913" />
+        <di:waypoint xsi:type="dc:Point" x="1581" y="1913" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="128" y="960" width="0" height="12" />
+          <dc:Bounds x="1420.5" y="1898" width="0" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_07l3twh_di" bpmnElement="SequenceFlow_07l3twh">
-        <di:waypoint xsi:type="dc:Point" x="393" y="966" />
-        <di:waypoint xsi:type="dc:Point" x="552" y="966" />
-        <di:waypoint xsi:type="dc:Point" x="552" y="966" />
-        <di:waypoint xsi:type="dc:Point" x="589" y="966" />
+      <bpmndi:BPMNEdge id="SequenceFlow_19ly8h7_di" bpmnElement="SequenceFlow_19ly8h7">
+        <di:waypoint xsi:type="dc:Point" x="657" y="1913" />
+        <di:waypoint xsi:type="dc:Point" x="923" y="1913" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="522" y="960" width="0" height="12" />
+          <dc:Bounds x="745" y="1898" width="0" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1eg944u_di" bpmnElement="SequenceFlow_1eg944u">
-        <di:waypoint xsi:type="dc:Point" x="689" y="966" />
-        <di:waypoint xsi:type="dc:Point" x="858" y="966" />
+      <bpmndi:BPMNEdge id="SequenceFlow_0jsdqmq_di" bpmnElement="SequenceFlow_0jsdqmq">
+        <di:waypoint xsi:type="dc:Point" x="1023" y="1913" />
+        <di:waypoint xsi:type="dc:Point" x="1248" y="1913" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="728.5" y="945" width="0" height="12" />
+          <dc:Bounds x="1091.5" y="1898" width="0" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0ofhz2u_di" bpmnElement="SequenceFlow_0ofhz2u">
-        <di:waypoint xsi:type="dc:Point" x="685" y="1471" />
-        <di:waypoint xsi:type="dc:Point" x="1229" y="1471" />
+      <bpmndi:BPMNShape id="ScriptTask_195nptq_di" bpmnElement="ScriptTask_195nptq">
+        <dc:Bounds x="293" y="1333" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1cy5gq2_di" bpmnElement="SequenceFlow_1cy5gq2">
+        <di:waypoint xsi:type="dc:Point" x="393" y="1373" />
+        <di:waypoint xsi:type="dc:Point" x="589" y="1373" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="957" y="1450" width="0" height="12" />
+          <dc:Bounds x="491" y="1352" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_069o6fn_di" bpmnElement="CallActivity_069o6fn">
+        <dc:Bounds x="589" y="1333" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0lp9y03_di" bpmnElement="ScriptTask_0lp9y03">
+        <dc:Bounds x="858" y="1333" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1vy856f_di" bpmnElement="SequenceFlow_1vy856f">
+        <di:waypoint xsi:type="dc:Point" x="689" y="1373" />
+        <di:waypoint xsi:type="dc:Point" x="806" y="1373" />
+        <di:waypoint xsi:type="dc:Point" x="806" y="1373" />
+        <di:waypoint xsi:type="dc:Point" x="858" y="1373" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="821" y="1367" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_14ggluy_di" bpmnElement="SequenceFlow_14ggluy">
+        <di:waypoint xsi:type="dc:Point" x="958" y="1373" />
+        <di:waypoint xsi:type="dc:Point" x="1055" y="1373" />
+        <di:waypoint xsi:type="dc:Point" x="1055" y="1373" />
+        <di:waypoint xsi:type="dc:Point" x="1152" y="1373" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1070" y="1367" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0sis7k0_di" bpmnElement="ScriptTask_0sis7k0">
+        <dc:Bounds x="1152" y="1333" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1kx5ke9_di" bpmnElement="SequenceFlow_1kx5ke9">
+        <di:waypoint xsi:type="dc:Point" x="1252" y="1373" />
+        <di:waypoint xsi:type="dc:Point" x="1410" y="1373" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1331" y="1352" width="0" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
     </bpmndi:BPMNPlane>
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoUpdateE2EServiceInstanceRollback.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoUpdateE2EServiceInstanceRollback.bpmn
new file mode 100644
index 0000000..c1974c2
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoUpdateE2EServiceInstanceRollback.bpmn
@@ -0,0 +1,795 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_MagIIMOUEeW8asg-vCEgWQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.11.3" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
+  <bpmn2:process id="DoCreateE2EServiceInstanceRollback" name="DoCreateE2EServiceInstanceRollback" isExecutable="true">
+    <bpmn2:startEvent id="createSIRollback_startEvent" name="Start Flow">
+      <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing>
+    </bpmn2:startEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="createSIRollback_startEvent" targetRef="preProcessRequest_ScriptTask" />
+    <bpmn2:scriptTask id="preProcessRequest_ScriptTask" name="PreProcess Incoming Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def rbk = new DoCreateE2EServiceInstanceRollback()
+rbk.preProcessRequest(execution)
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:endEvent id="EndEvent_3">
+      <bpmn2:incoming>SequenceFlow_01l4ssl</bpmn2:incoming>
+    </bpmn2:endEvent>
+    <bpmn2:subProcess id="UnexpectedError_SubProcess_1" name="Sub-process for Errors" triggeredByEvent="true">
+      <bpmn2:startEvent id="StartEvent_1">
+        <bpmn2:outgoing>SequenceFlow_8</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition id="_ErrorEventDefinition_92" />
+      </bpmn2:startEvent>
+      <bpmn2:endEvent id="EndEvent_1">
+        <bpmn2:incoming>SequenceFlow_7</bpmn2:incoming>
+      </bpmn2:endEvent>
+      <bpmn2:sequenceFlow id="SequenceFlow_8" name="" sourceRef="StartEvent_1" targetRef="ScriptTask_1" />
+      <bpmn2:scriptTask id="ScriptTask_1" name="Handle Errors" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_8</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_7</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def rbk= new DoCreateE2EServiceInstanceRollback()
+rbk.processRollbackException(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_7" name="" sourceRef="ScriptTask_1" targetRef="EndEvent_1" />
+    </bpmn2:subProcess>
+    <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="preProcessRequest_ScriptTask" targetRef="ExclusiveGateway_19tbjgn" />
+    <bpmn2:scriptTask id="PostProcess_ScriptTask" name="Post Process Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1rzlaoy</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_0a83f6m</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_01l4ssl</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def rbk = new DoCreateE2EServiceInstanceRollback()
+rbk.postProcessRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_01l4ssl" sourceRef="PostProcess_ScriptTask" targetRef="EndEvent_3" />
+    <bpmn2:subProcess id="SubProcess_11bi8mc" name="Java Exception Handling Sub Process" triggeredByEvent="true">
+      <bpmn2:startEvent id="StartEvent_1gxe17c">
+        <bpmn2:outgoing>SequenceFlow_1ch4xrf</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition errorRef="Error_1" />
+      </bpmn2:startEvent>
+      <bpmn2:scriptTask id="ScriptTask_15yddb0" name="Process Java Error" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_1ch4xrf</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1pjk2ff</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def rbk= new DoCreateE2EServiceInstanceRollback()
+rbk.processRollbackJavaException(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:endEvent id="EndEvent_12e3h6k">
+        <bpmn2:incoming>SequenceFlow_1pjk2ff</bpmn2:incoming>
+        <bpmn2:terminateEventDefinition />
+      </bpmn2:endEvent>
+      <bpmn2:sequenceFlow id="SequenceFlow_1ch4xrf" name="" sourceRef="StartEvent_1gxe17c" targetRef="ScriptTask_15yddb0" />
+      <bpmn2:sequenceFlow id="SequenceFlow_1pjk2ff" name="" sourceRef="ScriptTask_15yddb0" targetRef="EndEvent_12e3h6k" />
+    </bpmn2:subProcess>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_19tbjgn" name="skip Rollback" default="SequenceFlow_06aasqh">
+      <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1rzlaoy</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_06aasqh</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_1rzlaoy" name="yes" sourceRef="ExclusiveGateway_19tbjgn" targetRef="PostProcess_ScriptTask">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("skipRollback" )  == true}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_0ii31dq" name="RollBack Deleted Resources?">
+      <bpmn2:documentation>rollback Deleted Resources</bpmn2:documentation>
+      <bpmn2:incoming>SequenceFlow_1uw2p9a</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0drjj7b</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_055b52t</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_09wkav2" name="Rollback Added Resources?" default="SequenceFlow_1uw2p9a">
+      <bpmn2:incoming>SequenceFlow_06aasqh</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1uw2p9a</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_11fnnkb</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_1uw2p9a" name="no" sourceRef="ExclusiveGateway_09wkav2" targetRef="ExclusiveGateway_0ii31dq" />
+    <bpmn2:sequenceFlow id="SequenceFlow_11fnnkb" name="yes" sourceRef="ExclusiveGateway_09wkav2" targetRef="IntermediateThrowEvent_11l0okn">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{(execution.getVariable("RollbackAdded" )  == "true" )}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_06aasqh" name="no" sourceRef="ExclusiveGateway_19tbjgn" targetRef="ExclusiveGateway_09wkav2" />
+    <bpmn2:callActivity id="CallActivity_05jnyuq" name="Call DoDeleteResources" calledElement="DoDeleteResources">
+      <bpmn2:extensionElements>
+        <camunda:in source="nsServiceName" target="nsServiceName" />
+        <camunda:in source="nsServiceDescription" target="nsServiceDescription" />
+        <camunda:in source="globalSubscriberId" target="globalSubscriberId" />
+        <camunda:in source="serviceType" target="serviceType" />
+        <camunda:in source="serviceId" target="serviceId" />
+        <camunda:in source="operationId" target="operationId" />
+        <camunda:in source="resourceType" target="resourceType" />
+        <camunda:in source="resourceUUID" target="resourceUUID" />
+        <camunda:in source="resourceParameters" target="resourceParameters" />
+        <camunda:in source="operationType" target="operationType" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1fih4h0</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0pwixhh</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_0pwixhh" sourceRef="CallActivity_05jnyuq" targetRef="ScriptTask_0ngehrz" />
+    <bpmn2:scriptTask id="ScriptTask_1i1ova8" name="PreProcess for Add Resources" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_06xv7b2</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0b73i9r</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def csi = new  DoUpdateE2EServiceInstanceRollback()
+csi.preProcessForAddResource(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="ScriptTask_0ngehrz" name="PostProcess for Add Resource" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0pwixhh</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_08p4pkv</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def csi = new  DoUpdateE2EServiceInstanceRollback()
+csi.postProcessForAddResource(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="ScriptTask_01beerv" name="PreProcess for Delete Resources" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1g4qm2l</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1fih4h0</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def csi = new  DoUpdateE2EServiceInstanceRollback()
+csi.preProcessForDeleteResource(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="CallActivity_0l7jjb1" name="Call DoCreateResources" calledElement="DoCreateResources">
+      <bpmn2:extensionElements>
+        <camunda:in source="nsServiceName" target="nsServiceName" />
+        <camunda:in source="nsServiceDescription" target="nsServiceDescription" />
+        <camunda:in source="globalSubscriberId" target="globalSubscriberId" />
+        <camunda:in source="serviceType" target="serviceType" />
+        <camunda:in source="serviceId" target="serviceId" />
+        <camunda:in source="operationId" target="operationId" />
+        <camunda:in source="resourceType" target="resourceType" />
+        <camunda:in source="resourceUUID" target="resourceUUID" />
+        <camunda:in source="resourceParameters" target="resourceParameters" />
+        <camunda:in source="operationType" target="operationType" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_0b73i9r</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0q9ws1s</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="ScriptTask_1afo620" name="PostProcess for Add Resource" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0q9ws1s</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1bp5oce</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def csi = new  DoUpdateE2EServiceInstanceRollback()
+csi.postProcessForAddResource(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_0ybxh3b" name="RollBackAAI?">
+      <bpmn2:documentation>rollback AAI</bpmn2:documentation>
+      <bpmn2:incoming>SequenceFlow_055b52t</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0a83f6m</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0zijz16</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_0drjj7b" name="yes" sourceRef="ExclusiveGateway_0ii31dq" targetRef="IntermediateThrowEvent_14ed07u">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{(execution.getVariable("RollbackDeleted" )  == "true" )}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_05uesi2" name="StartAddResources">
+      <bpmn2:outgoing>SequenceFlow_06xv7b2</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="StartAddResource" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_1qn9srt" name="StartDeleteResources">
+      <bpmn2:outgoing>SequenceFlow_1g4qm2l</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="StartDeleteResources" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_11l0okn" name="GoTo StartDeleteResources">
+      <bpmn2:incoming>SequenceFlow_11fnnkb</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="StartDeleteResources" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_14ed07u" name="GoTo StartAddResources">
+      <bpmn2:incoming>SequenceFlow_0drjj7b</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="StartAddResource" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0a83f6m" name="no" sourceRef="ExclusiveGateway_0ybxh3b" targetRef="PostProcess_ScriptTask" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1fih4h0" sourceRef="ScriptTask_01beerv" targetRef="CallActivity_05jnyuq" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1g4qm2l" sourceRef="IntermediateCatchEvent_1qn9srt" targetRef="ScriptTask_01beerv" />
+    <bpmn2:sequenceFlow id="SequenceFlow_06xv7b2" sourceRef="IntermediateCatchEvent_05uesi2" targetRef="ScriptTask_1i1ova8" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0b73i9r" sourceRef="ScriptTask_1i1ova8" targetRef="CallActivity_0l7jjb1" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0q9ws1s" sourceRef="CallActivity_0l7jjb1" targetRef="ScriptTask_1afo620" />
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_0546q5i" name="UpdateAAI">
+      <bpmn2:outgoing>SequenceFlow_1a65s3k</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="UpdateAAI" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:scriptTask id="ScriptTask_0gj4dj5" name="Pre Process AAI PUT" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1ixphei</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1lppnhy</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def dcsi = new DoUpdateE2EServiceInstanceRollback()
+dcsi.preProcessAAIPUT(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="CallActivity_0zs5y0x" name="Call Custom E2E Put Service" calledElement="CustomE2EPutService">
+      <bpmn2:extensionElements>
+        <camunda:in source="serviceInstanceId" target="GENGS_serviceInstanceId" />
+        <camunda:in sourceExpression="service-instance" target="GENGS_type" />
+        <camunda:out source="GENGS_FoundIndicator" target="GENGS_FoundIndicator" />
+        <camunda:out source="GENGS_SuccessIndicator" target="GENGS_SuccessIndicator" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="GENGS_siResourceLink" target="GENGS_siResourceLink" />
+        <camunda:out source="GENGS_service" target="GENGS_service" />
+        <camunda:in source="globalSubscriberId" target="GENGS_globalCustomerId" />
+        <camunda:in source="serviceType" target="GENGS_serviceType" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1lppnhy</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0kbisn8</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="ScriptTask_1p96syr" name="Post Process AAI PUT" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0kbisn8</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1azhgda</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def dcsi = new DoUpdateE2EServiceInstanceRollback()
+dcsi.postProcessAAIPUT(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_1a65s3k" sourceRef="IntermediateCatchEvent_0546q5i" targetRef="ScriptTask_13h2onn" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1lppnhy" sourceRef="ScriptTask_0gj4dj5" targetRef="CallActivity_0zs5y0x" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0kbisn8" sourceRef="CallActivity_0zs5y0x" targetRef="ScriptTask_1p96syr" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_1k16vgh" name="RollBackAAI?">
+      <bpmn2:documentation>rollback AAI</bpmn2:documentation>
+      <bpmn2:incoming>SequenceFlow_08p4pkv</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0cbnwwi</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_161uzhj</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_08p4pkv" sourceRef="ScriptTask_0ngehrz" targetRef="ExclusiveGateway_1k16vgh" />
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0x32fw8" name="GoTo UpdateAAI">
+      <bpmn2:incoming>SequenceFlow_0cbnwwi</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="UpdateAAI" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0cbnwwi" sourceRef="ExclusiveGateway_1k16vgh" targetRef="IntermediateThrowEvent_0x32fw8" />
+    <bpmn2:scriptTask id="ScriptTask_1c3q8hc" name="Post Process Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_161uzhj</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_13r4lij</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def rbk = new DoCreateE2EServiceInstanceRollback()
+rbk.postProcessRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_161uzhj" sourceRef="ExclusiveGateway_1k16vgh" targetRef="ScriptTask_1c3q8hc" />
+    <bpmn2:endEvent id="EndEvent_0knjkkx">
+      <bpmn2:incoming>SequenceFlow_13r4lij</bpmn2:incoming>
+    </bpmn2:endEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_13r4lij" sourceRef="ScriptTask_1c3q8hc" targetRef="EndEvent_0knjkkx" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_0g7wcmb" name="RollBackAAI?">
+      <bpmn2:documentation>rollback AAI</bpmn2:documentation>
+      <bpmn2:incoming>SequenceFlow_1bp5oce</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0bkvqao</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_1isdxh1</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0q76lxg" name="GoTo UpdateAAI">
+      <bpmn2:incoming>SequenceFlow_0bkvqao</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="UpdateAAI" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:scriptTask id="ScriptTask_1y4us3g" name="Post Process Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1isdxh1</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0a9xori</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def rbk = new DoCreateE2EServiceInstanceRollback()
+rbk.postProcessRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:endEvent id="EndEvent_0yzh2qs">
+      <bpmn2:incoming>SequenceFlow_0a9xori</bpmn2:incoming>
+    </bpmn2:endEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0bkvqao" sourceRef="ExclusiveGateway_0g7wcmb" targetRef="IntermediateThrowEvent_0q76lxg" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1isdxh1" sourceRef="ExclusiveGateway_0g7wcmb" targetRef="ScriptTask_1y4us3g" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0a9xori" sourceRef="ScriptTask_1y4us3g" targetRef="EndEvent_0yzh2qs" />
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1et42wh" name="GoTo UpdateAAI">
+      <bpmn2:incoming>SequenceFlow_0zijz16</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="UpdateAAI" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0zijz16" name="yes" sourceRef="ExclusiveGateway_0ybxh3b" targetRef="IntermediateThrowEvent_1et42wh">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{(execution.getVariable("RollbackAAI" )  == "true" )}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_1bp5oce" sourceRef="ScriptTask_1afo620" targetRef="ExclusiveGateway_0g7wcmb" />
+    <bpmn2:scriptTask id="ScriptTask_17k4l6y" name="Post Process Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1azhgda</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1n6foyw</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def rbk = new DoCreateE2EServiceInstanceRollback()
+rbk.postProcessRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:endEvent id="EndEvent_193e9tt">
+      <bpmn2:incoming>SequenceFlow_1n6foyw</bpmn2:incoming>
+    </bpmn2:endEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1n6foyw" sourceRef="ScriptTask_17k4l6y" targetRef="EndEvent_193e9tt" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1azhgda" sourceRef="ScriptTask_1p96syr" targetRef="ScriptTask_17k4l6y" />
+    <bpmn2:sequenceFlow id="SequenceFlow_055b52t" name="no" sourceRef="ExclusiveGateway_0ii31dq" targetRef="ExclusiveGateway_0ybxh3b" />
+    <bpmn2:scriptTask id="ScriptTask_13h2onn" name="Pre Process AAI GET" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1a65s3k</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0870pzc</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def dcsi = new DoUpdateE2EServiceInstanceRollback()
+dcsi.preProcessAAIGET(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="CallActivity_1527zgc" name="Call AAI Generic GetService" calledElement="GenericGetService">
+      <bpmn2:extensionElements>
+        <camunda:in source="serviceInstanceId" target="GENGS_serviceInstanceId" />
+        <camunda:in sourceExpression="service-instance" target="GENGS_type" />
+        <camunda:out source="GENGS_FoundIndicator" target="GENGS_FoundIndicator" />
+        <camunda:out source="GENGS_SuccessIndicator" target="GENGS_SuccessIndicator" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="GENGS_siResourceLink" target="GENGS_siResourceLink" />
+        <camunda:out source="GENGS_service" target="GENGS_service" />
+        <camunda:in source="globalSubscriberId" target="GENGS_globalCustomerId" />
+        <camunda:in source="serviceType" target="GENGS_serviceType" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_0870pzc</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1f31l5s</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_0870pzc" sourceRef="ScriptTask_13h2onn" targetRef="CallActivity_1527zgc" />
+    <bpmn2:scriptTask id="ScriptTask_0td1f55" name="Post Process AAI GET" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1f31l5s</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1ixphei</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def dcsi = new DoUpdateE2EServiceInstanceRollback()
+dcsi.postProcessAAIGET(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_1f31l5s" sourceRef="CallActivity_1527zgc" targetRef="ScriptTask_0td1f55" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1ixphei" sourceRef="ScriptTask_0td1f55" targetRef="ScriptTask_0gj4dj5" />
+  </bpmn2:process>
+  <bpmn2:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
+  <bpmn2:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateE2EServiceInstanceRollback">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_47" bpmnElement="createSIRollback_startEvent">
+        <dc:Bounds x="151" y="79" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="146" y="120" width="48" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_61" bpmnElement="preProcessRequest_ScriptTask">
+        <dc:Bounds x="234" y="57" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_47" targetElement="_BPMNShape_ScriptTask_61">
+        <di:waypoint xsi:type="dc:Point" x="187" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="234" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="211" y="82" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_177" bpmnElement="EndEvent_3">
+        <dc:Bounds x="636" y="-160" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="609" y="-119" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_SubProcess_27" bpmnElement="UnexpectedError_SubProcess_1" isExpanded="true">
+        <dc:Bounds x="122" y="981" width="466" height="156" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_70" bpmnElement="StartEvent_1">
+        <dc:Bounds x="190" y="1047" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="163" y="1088" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_219" bpmnElement="EndEvent_1">
+        <dc:Bounds x="483" y="1047" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="456" y="1088" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_8" sourceElement="_BPMNShape_StartEvent_70" targetElement="_BPMNShape_ScriptTask_269">
+        <di:waypoint xsi:type="dc:Point" x="226" y="1065" />
+        <di:waypoint xsi:type="dc:Point" x="294" y="1065" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="216" y="1050" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_ScriptTask_61">
+        <di:waypoint xsi:type="dc:Point" x="334" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="391" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="342.5" y="82" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_269" bpmnElement="ScriptTask_1">
+        <dc:Bounds x="294" y="1025" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="SequenceFlow_7" sourceElement="_BPMNShape_ScriptTask_269" targetElement="_BPMNShape_EndEvent_219">
+        <di:waypoint xsi:type="dc:Point" x="394" y="1065" />
+        <di:waypoint xsi:type="dc:Point" x="483" y="1065" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="394" y="1050" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1wk55es_di" bpmnElement="PostProcess_ScriptTask">
+        <dc:Bounds x="604" y="-62" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_01l4ssl_di" bpmnElement="SequenceFlow_01l4ssl">
+        <di:waypoint xsi:type="dc:Point" x="654" y="-62" />
+        <di:waypoint xsi:type="dc:Point" x="654" y="-89" />
+        <di:waypoint xsi:type="dc:Point" x="654" y="-89" />
+        <di:waypoint xsi:type="dc:Point" x="654" y="-124" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="624" y="-89" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="SubProcess_11bi8mc_di" bpmnElement="SubProcess_11bi8mc" isExpanded="true">
+        <dc:Bounds x="612" y="982" width="463" height="152" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_1gxe17c_di" bpmnElement="StartEvent_1gxe17c">
+        <dc:Bounds x="647" y="1034" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="620" y="1075" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_15yddb0_di" bpmnElement="ScriptTask_15yddb0">
+        <dc:Bounds x="755" y="1012" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_12e3h6k_di" bpmnElement="EndEvent_12e3h6k">
+        <dc:Bounds x="905" y="1034" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="878" y="1075" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ch4xrf_di" bpmnElement="SequenceFlow_1ch4xrf">
+        <di:waypoint xsi:type="dc:Point" x="683" y="1052" />
+        <di:waypoint xsi:type="dc:Point" x="755" y="1052" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="663" y="1052" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1pjk2ff_di" bpmnElement="SequenceFlow_1pjk2ff">
+        <di:waypoint xsi:type="dc:Point" x="855" y="1052" />
+        <di:waypoint xsi:type="dc:Point" x="905" y="1052" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="835" y="1052" width="90" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_19tbjgn_di" bpmnElement="ExclusiveGateway_19tbjgn" isMarkerVisible="true">
+        <dc:Bounds x="391" y="72" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="383" y="54" width="65" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1rzlaoy_di" bpmnElement="SequenceFlow_1rzlaoy">
+        <di:waypoint xsi:type="dc:Point" x="416" y="72" />
+        <di:waypoint xsi:type="dc:Point" x="416" y="-22" />
+        <di:waypoint xsi:type="dc:Point" x="604" y="-22" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="463.0056179775281" y="-39" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0ii31dq_di" bpmnElement="ExclusiveGateway_0ii31dq" isMarkerVisible="true">
+        <dc:Bounds x="687" y="72" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="670" y="39" width="83" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_09wkav2_di" bpmnElement="ExclusiveGateway_09wkav2" isMarkerVisible="true">
+        <dc:Bounds x="520" y="72" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="507" y="38" width="76" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1uw2p9a_di" bpmnElement="SequenceFlow_1uw2p9a">
+        <di:waypoint xsi:type="dc:Point" x="570" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="687" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="592.125" y="107.5" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_11fnnkb_di" bpmnElement="SequenceFlow_11fnnkb">
+        <di:waypoint xsi:type="dc:Point" x="545" y="122" />
+        <di:waypoint xsi:type="dc:Point" x="545" y="218" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="510" y="135.20000000000002" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_06aasqh_di" bpmnElement="SequenceFlow_06aasqh">
+        <di:waypoint xsi:type="dc:Point" x="441" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="520" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="460.5" y="104" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_05jnyuq_di" bpmnElement="CallActivity_05jnyuq">
+        <dc:Bounds x="417" y="345" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0pwixhh_di" bpmnElement="SequenceFlow_0pwixhh">
+        <di:waypoint xsi:type="dc:Point" x="517" y="385" />
+        <di:waypoint xsi:type="dc:Point" x="594" y="385" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="511" y="364" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1i1ova8_di" bpmnElement="ScriptTask_1i1ova8">
+        <dc:Bounds x="230" y="533" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0ngehrz_di" bpmnElement="ScriptTask_0ngehrz">
+        <dc:Bounds x="594" y="345" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_01beerv_di" bpmnElement="ScriptTask_01beerv">
+        <dc:Bounds x="230" y="345" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0l7jjb1_di" bpmnElement="CallActivity_0l7jjb1">
+        <dc:Bounds x="417" y="533" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1afo620_di" bpmnElement="ScriptTask_1afo620">
+        <dc:Bounds x="594" y="533" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0ybxh3b_di" bpmnElement="ExclusiveGateway_0ybxh3b" isMarkerVisible="true">
+        <dc:Bounds x="864" y="72" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="896" y="44" width="66" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0drjj7b_di" bpmnElement="SequenceFlow_0drjj7b">
+        <di:waypoint xsi:type="dc:Point" x="712" y="122" />
+        <di:waypoint xsi:type="dc:Point" x="712" y="218" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="687" y="141.6" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_05uesi2_di" bpmnElement="IntermediateCatchEvent_05uesi2">
+        <dc:Bounds x="159" y="555" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="135" y="600" width="84" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1qn9srt_di" bpmnElement="IntermediateCatchEvent_1qn9srt">
+        <dc:Bounds x="159" y="367" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="135" y="407" width="86" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_11l0okn_di" bpmnElement="IntermediateThrowEvent_11l0okn">
+        <dc:Bounds x="527" y="218" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="502" y="257" width="86" height="36" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_14ed07u_di" bpmnElement="IntermediateThrowEvent_14ed07u">
+        <dc:Bounds x="694" y="218" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="670" y="262" width="84" height="36" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0a83f6m_di" bpmnElement="SequenceFlow_0a83f6m">
+        <di:waypoint xsi:type="dc:Point" x="889" y="72" />
+        <di:waypoint xsi:type="dc:Point" x="889" y="-22" />
+        <di:waypoint xsi:type="dc:Point" x="704" y="-22" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="838" y="19.000000000000007" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1fih4h0_di" bpmnElement="SequenceFlow_1fih4h0">
+        <di:waypoint xsi:type="dc:Point" x="330" y="385" />
+        <di:waypoint xsi:type="dc:Point" x="417" y="385" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="329" y="364" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1g4qm2l_di" bpmnElement="SequenceFlow_1g4qm2l">
+        <di:waypoint xsi:type="dc:Point" x="195" y="385" />
+        <di:waypoint xsi:type="dc:Point" x="230" y="385" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="168" y="364" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_06xv7b2_di" bpmnElement="SequenceFlow_06xv7b2">
+        <di:waypoint xsi:type="dc:Point" x="195" y="573" />
+        <di:waypoint xsi:type="dc:Point" x="230" y="573" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="168" y="552" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0b73i9r_di" bpmnElement="SequenceFlow_0b73i9r">
+        <di:waypoint xsi:type="dc:Point" x="330" y="573" />
+        <di:waypoint xsi:type="dc:Point" x="363" y="573" />
+        <di:waypoint xsi:type="dc:Point" x="363" y="573" />
+        <di:waypoint xsi:type="dc:Point" x="417" y="573" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="333" y="567" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0q9ws1s_di" bpmnElement="SequenceFlow_0q9ws1s">
+        <di:waypoint xsi:type="dc:Point" x="517" y="573" />
+        <di:waypoint xsi:type="dc:Point" x="545" y="573" />
+        <di:waypoint xsi:type="dc:Point" x="545" y="573" />
+        <di:waypoint xsi:type="dc:Point" x="594" y="573" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="515" y="567" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_0546q5i_di" bpmnElement="IntermediateCatchEvent_0546q5i">
+        <dc:Bounds x="156" y="765" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="151" y="801" width="52" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0gj4dj5_di" bpmnElement="ScriptTask_0gj4dj5">
+        <dc:Bounds x="687" y="743" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0zs5y0x_di" bpmnElement="CallActivity_0zs5y0x">
+        <dc:Bounds x="841" y="743" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1p96syr_di" bpmnElement="ScriptTask_1p96syr">
+        <dc:Bounds x="1014" y="743" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1a65s3k_di" bpmnElement="SequenceFlow_1a65s3k">
+        <di:waypoint xsi:type="dc:Point" x="192" y="783" />
+        <di:waypoint xsi:type="dc:Point" x="234" y="783" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="168" y="762" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1lppnhy_di" bpmnElement="SequenceFlow_1lppnhy">
+        <di:waypoint xsi:type="dc:Point" x="787" y="783" />
+        <di:waypoint xsi:type="dc:Point" x="841" y="783" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="769" y="762" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0kbisn8_di" bpmnElement="SequenceFlow_0kbisn8">
+        <di:waypoint xsi:type="dc:Point" x="941" y="783" />
+        <di:waypoint xsi:type="dc:Point" x="978" y="783" />
+        <di:waypoint xsi:type="dc:Point" x="978" y="783" />
+        <di:waypoint xsi:type="dc:Point" x="1014" y="783" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="948" y="777" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1k16vgh_di" bpmnElement="ExclusiveGateway_1k16vgh" isMarkerVisible="true">
+        <dc:Bounds x="778" y="360" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="721" y="358" width="66" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_08p4pkv_di" bpmnElement="SequenceFlow_08p4pkv">
+        <di:waypoint xsi:type="dc:Point" x="694" y="385" />
+        <di:waypoint xsi:type="dc:Point" x="778" y="385" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="691" y="364" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0x32fw8_di" bpmnElement="IntermediateThrowEvent_0x32fw8">
+        <dc:Bounds x="785" y="454" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="762" y="495" width="82" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0cbnwwi_di" bpmnElement="SequenceFlow_0cbnwwi">
+        <di:waypoint xsi:type="dc:Point" x="803" y="410" />
+        <di:waypoint xsi:type="dc:Point" x="803" y="454" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="773" y="426" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1c3q8hc_di" bpmnElement="ScriptTask_1c3q8hc">
+        <dc:Bounds x="879" y="345" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_161uzhj_di" bpmnElement="SequenceFlow_161uzhj">
+        <di:waypoint xsi:type="dc:Point" x="828" y="385" />
+        <di:waypoint xsi:type="dc:Point" x="879" y="385" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="809" y="364" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="EndEvent_0knjkkx_di" bpmnElement="EndEvent_0knjkkx">
+        <dc:Bounds x="1040" y="367" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1013" y="407" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_13r4lij_di" bpmnElement="SequenceFlow_13r4lij">
+        <di:waypoint xsi:type="dc:Point" x="979" y="385" />
+        <di:waypoint xsi:type="dc:Point" x="1040" y="385" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="965" y="364" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0g7wcmb_di" bpmnElement="ExclusiveGateway_0g7wcmb" isMarkerVisible="true">
+        <dc:Bounds x="778" y="548" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="721" y="546" width="66" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0q76lxg_di" bpmnElement="IntermediateThrowEvent_0q76lxg">
+        <dc:Bounds x="785" y="647" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="762" y="693" width="82" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1y4us3g_di" bpmnElement="ScriptTask_1y4us3g">
+        <dc:Bounds x="879" y="533" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0yzh2qs_di" bpmnElement="EndEvent_0yzh2qs">
+        <dc:Bounds x="1040" y="555" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1013" y="595" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0bkvqao_di" bpmnElement="SequenceFlow_0bkvqao">
+        <di:waypoint xsi:type="dc:Point" x="803" y="598" />
+        <di:waypoint xsi:type="dc:Point" x="803" y="647" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="773" y="616.5" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1isdxh1_di" bpmnElement="SequenceFlow_1isdxh1">
+        <di:waypoint xsi:type="dc:Point" x="828" y="573" />
+        <di:waypoint xsi:type="dc:Point" x="879" y="573" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="809" y="552" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0a9xori_di" bpmnElement="SequenceFlow_0a9xori">
+        <di:waypoint xsi:type="dc:Point" x="979" y="573" />
+        <di:waypoint xsi:type="dc:Point" x="1040" y="573" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="965" y="552" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1et42wh_di" bpmnElement="IntermediateThrowEvent_1et42wh">
+        <dc:Bounds x="873" y="218" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="852" y="269" width="82" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0zijz16_di" bpmnElement="SequenceFlow_0zijz16">
+        <di:waypoint xsi:type="dc:Point" x="889" y="122" />
+        <di:waypoint xsi:type="dc:Point" x="891" y="218" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="861.4067820523877" y="137.3057489950117" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1bp5oce_di" bpmnElement="SequenceFlow_1bp5oce">
+        <di:waypoint xsi:type="dc:Point" x="694" y="573" />
+        <di:waypoint xsi:type="dc:Point" x="778" y="573" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="691" y="552" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_17k4l6y_di" bpmnElement="ScriptTask_17k4l6y">
+        <dc:Bounds x="1171" y="743" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_193e9tt_di" bpmnElement="EndEvent_193e9tt">
+        <dc:Bounds x="1327" y="765" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1300" y="805" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1n6foyw_di" bpmnElement="SequenceFlow_1n6foyw">
+        <di:waypoint xsi:type="dc:Point" x="1271" y="783" />
+        <di:waypoint xsi:type="dc:Point" x="1327" y="783" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1254" y="762" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1azhgda_di" bpmnElement="SequenceFlow_1azhgda">
+        <di:waypoint xsi:type="dc:Point" x="1114" y="783" />
+        <di:waypoint xsi:type="dc:Point" x="1171" y="783" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1097.5" y="762" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_055b52t_di" bpmnElement="SequenceFlow_055b52t">
+        <di:waypoint xsi:type="dc:Point" x="737" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="864" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="770" y="106" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_13h2onn_di" bpmnElement="ScriptTask_13h2onn">
+        <dc:Bounds x="234" y="743" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1527zgc_di" bpmnElement="CallActivity_1527zgc">
+        <dc:Bounds x="391" y="743" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0870pzc_di" bpmnElement="SequenceFlow_0870pzc">
+        <di:waypoint xsi:type="dc:Point" x="334" y="783" />
+        <di:waypoint xsi:type="dc:Point" x="391" y="783" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="362.5" y="762" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0td1f55_di" bpmnElement="ScriptTask_0td1f55">
+        <dc:Bounds x="543" y="743" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1f31l5s_di" bpmnElement="SequenceFlow_1f31l5s">
+        <di:waypoint xsi:type="dc:Point" x="491" y="783" />
+        <di:waypoint xsi:type="dc:Point" x="543" y="783" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="517" y="762" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ixphei_di" bpmnElement="SequenceFlow_1ixphei">
+        <di:waypoint xsi:type="dc:Point" x="643" y="783" />
+        <di:waypoint xsi:type="dc:Point" x="687" y="783" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="665" y="762" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn2:definitions>
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/AAITasks/AAICreateOwningEntityTest.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/AAITasks/AAICreateOwningEntityTest.java
new file mode 100644
index 0000000..4f643e1
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/AAITasks/AAICreateOwningEntityTest.java
@@ -0,0 +1,35 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2018 Huawei 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.bpmn.infrastructure.AAITasks;
+
+import org.camunda.bpm.engine.delegate.DelegateExecution;
+import org.camunda.bpm.engine.impl.pvm.runtime.ExecutionImpl;
+import org.junit.Test;
+
+public class AAICreateOwningEntityTest {
+
+    DelegateExecution delegateExecution = new ExecutionImpl();
+
+    @Test(expected = UnsupportedOperationException.class)
+    public void executeTest() throws Exception {
+        new AAICreateServiceInstance().execute(delegateExecution);
+    }
+
+}
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/workflow/serviceTask/client/builder/AbstractBuilderTest.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/workflow/serviceTask/client/builder/AbstractBuilderTest.java
new file mode 100644
index 0000000..e2ec7e0
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/workflow/serviceTask/client/builder/AbstractBuilderTest.java
@@ -0,0 +1,358 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2018 Huawei 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.bpmn.infrastructure.workflow.serviceTask.client.builder;
+
+import org.camunda.bpm.engine.ProcessEngineServices;
+import org.camunda.bpm.engine.delegate.DelegateExecution;
+import org.camunda.bpm.engine.runtime.Incident;
+import org.camunda.bpm.engine.variable.VariableMap;
+import org.camunda.bpm.engine.variable.value.TypedValue;
+import org.camunda.bpm.model.bpmn.BpmnModelInstance;
+import org.camunda.bpm.model.bpmn.instance.FlowElement;
+import org.junit.Test;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+
+public class AbstractBuilderTest {
+
+    AbstractBuilder abstractBuilder = new AbstractBuilder() {
+        @Override
+        Object build(DelegateExecution execution, Object input) throws Exception {
+            return null;
+        }
+    };
+
+    DelegateExecution delegateExecution = new DelegateExecution() {
+        @Override
+        public String getProcessInstanceId() {
+            return null;
+        }
+
+        @Override
+        public String getProcessBusinessKey() {
+            return null;
+        }
+
+        @Override
+        public String getProcessDefinitionId() {
+            return null;
+        }
+
+        @Override
+        public String getParentId() {
+            return null;
+        }
+
+        @Override
+        public String getCurrentActivityId() {
+            return null;
+        }
+
+        @Override
+        public String getCurrentActivityName() {
+            return null;
+        }
+
+        @Override
+        public String getActivityInstanceId() {
+            return null;
+        }
+
+        @Override
+        public String getParentActivityInstanceId() {
+            return null;
+        }
+
+        @Override
+        public String getCurrentTransitionId() {
+            return null;
+        }
+
+        @Override
+        public DelegateExecution getProcessInstance() {
+            return null;
+        }
+
+        @Override
+        public DelegateExecution getSuperExecution() {
+            return null;
+        }
+
+        @Override
+        public boolean isCanceled() {
+            return false;
+        }
+
+        @Override
+        public String getTenantId() {
+            return null;
+        }
+
+        @Override
+        public void setVariable(String s, Object o, String s1) {
+
+        }
+
+        @Override
+        public Incident createIncident(String s, String s1) {
+            return null;
+        }
+
+        @Override
+        public Incident createIncident(String s, String s1, String s2) {
+            return null;
+        }
+
+        @Override
+        public void resolveIncident(String s) {
+
+        }
+
+        @Override
+        public String getId() {
+            return null;
+        }
+
+        @Override
+        public String getEventName() {
+            return null;
+        }
+
+        @Override
+        public String getBusinessKey() {
+            return null;
+        }
+
+        @Override
+        public BpmnModelInstance getBpmnModelInstance() {
+            return null;
+        }
+
+        @Override
+        public FlowElement getBpmnModelElementInstance() {
+            return null;
+        }
+
+        @Override
+        public ProcessEngineServices getProcessEngineServices() {
+            return null;
+        }
+
+        @Override
+        public String getVariableScopeKey() {
+            return null;
+        }
+
+        @Override
+        public Map<String, Object> getVariables() {
+            return null;
+        }
+
+        @Override
+        public VariableMap getVariablesTyped() {
+            return null;
+        }
+
+        @Override
+        public VariableMap getVariablesTyped(boolean b) {
+            return null;
+        }
+
+        @Override
+        public Map<String, Object> getVariablesLocal() {
+            return null;
+        }
+
+        @Override
+        public VariableMap getVariablesLocalTyped() {
+            return null;
+        }
+
+        @Override
+        public VariableMap getVariablesLocalTyped(boolean b) {
+            return null;
+        }
+
+        @Override
+        public Object getVariable(String s) {
+            return null;
+        }
+
+        @Override
+        public Object getVariableLocal(String s) {
+            return null;
+        }
+
+        @Override
+        public <T extends TypedValue> T getVariableTyped(String s) {
+            return null;
+        }
+
+        @Override
+        public <T extends TypedValue> T getVariableTyped(String s, boolean b) {
+            return null;
+        }
+
+        @Override
+        public <T extends TypedValue> T getVariableLocalTyped(String s) {
+            return null;
+        }
+
+        @Override
+        public <T extends TypedValue> T getVariableLocalTyped(String s, boolean b) {
+            return null;
+        }
+
+        @Override
+        public Set<String> getVariableNames() {
+            return null;
+        }
+
+        @Override
+        public Set<String> getVariableNamesLocal() {
+            return null;
+        }
+
+        @Override
+        public void setVariable(String s, Object o) {
+
+        }
+
+        @Override
+        public void setVariableLocal(String s, Object o) {
+
+        }
+
+        @Override
+        public void setVariables(Map<String, ?> map) {
+
+        }
+
+        @Override
+        public void setVariablesLocal(Map<String, ?> map) {
+
+        }
+
+        @Override
+        public boolean hasVariables() {
+            return false;
+        }
+
+        @Override
+        public boolean hasVariablesLocal() {
+            return false;
+        }
+
+        @Override
+        public boolean hasVariable(String s) {
+            return false;
+        }
+
+        @Override
+        public boolean hasVariableLocal(String s) {
+            return false;
+        }
+
+        @Override
+        public void removeVariable(String s) {
+
+        }
+
+        @Override
+        public void removeVariableLocal(String s) {
+
+        }
+
+        @Override
+        public void removeVariables(Collection<String> collection) {
+
+        }
+
+        @Override
+        public void removeVariablesLocal(Collection<String> collection) {
+
+        }
+
+        @Override
+        public void removeVariables() {
+
+        }
+
+        @Override
+        public void removeVariablesLocal() {
+
+        }
+    };
+
+
+    @Test
+    public void buildTest() throws Exception {
+        abstractBuilder.build(null, null);
+    }
+
+    @Test(expected = NullPointerException.class)
+    public void getRequestActoinTest() throws Exception {
+        abstractBuilder.getRequestActoin(delegateExecution);
+    }
+
+    @Test(expected = NullPointerException.class)
+    public void getSvcActionTest() throws Exception {
+        abstractBuilder.getSvcAction(delegateExecution);
+    }
+
+    @Test
+    public void getRequestIdTest() throws Exception {
+        abstractBuilder.getRequestId(delegateExecution);
+    }
+
+    @Test
+    public void getOnapServiceModelInformationEntityTest() throws Exception {
+        abstractBuilder.getOnapServiceModelInformationEntity(delegateExecution);
+    }
+
+    @Test
+    public void getOnapNetworkModelInformationEntityTest() throws Exception {
+        abstractBuilder.getOnapNetworkModelInformationEntity(delegateExecution);
+    }
+
+    @Test
+    public void getParamEntitiesTest() throws Exception {
+        abstractBuilder.getParamEntities(new HashMap<>());
+    }
+
+    @Test(expected = NullPointerException.class)
+    public void getRequestInformationEntityTest() throws Exception {
+        abstractBuilder.getRequestInformationEntity(delegateExecution);
+    }
+
+    @Test
+    public void getServiceInformationEntityTest() throws Exception {
+        abstractBuilder.getServiceInformationEntity(delegateExecution);
+    }
+
+    @Test
+    public void getServiceInstanceNameTest() throws Exception {
+        abstractBuilder.getServiceInstanceName(delegateExecution);
+    }
+
+}
\ No newline at end of file
diff --git a/cloudify-client/pom.xml b/cloudify-client/pom.xml
index f87ee3c..057a1ed 100644
--- a/cloudify-client/pom.xml
+++ b/cloudify-client/pom.xml
@@ -35,12 +35,34 @@
 		<dependency>
 			<groupId>org.apache.httpcomponents</groupId>
 			<artifactId>httpcore</artifactId>
-			<version>4.3.1</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.httpcomponents</groupId>
 			<artifactId>httpclient</artifactId>
-			<version>4.3.1</version>
+		</dependency>
+		<dependency>
+			<groupId>org.hamcrest</groupId>
+			<artifactId>hamcrest-core</artifactId>
+			<version>1.3</version>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.hamcrest</groupId>
+			<artifactId>hamcrest-library</artifactId>
+			<version>1.3</version>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.mockito</groupId>
+			<artifactId>mockito-all</artifactId>
+			<version>1.9.5</version>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>junit</groupId>
+			<artifactId>junit</artifactId>
+			<version>4.11</version>
+			<scope>test</scope>
 		</dependency>
         <dependency>
             <groupId>commons-lang</groupId>
diff --git a/cloudify-client/src/main/java/org/openecomp/mso/cloudify/v3/model/Blueprint.java b/cloudify-client/src/main/java/org/openecomp/mso/cloudify/v3/model/Blueprint.java
index a33c520..4681959 100644
--- a/cloudify-client/src/main/java/org/openecomp/mso/cloudify/v3/model/Blueprint.java
+++ b/cloudify-client/src/main/java/org/openecomp/mso/cloudify/v3/model/Blueprint.java
@@ -57,10 +57,6 @@
     @JsonProperty("updated_at")
     private Date updatedAt;
     
-    // ObjectMapper instance to parse Json stack outputs
-    @JsonIgnore
-	private static ObjectMapper mapper = new ObjectMapper();
-
     public Date getCreatedAt() {
         return createdAt;
     }
@@ -124,6 +120,9 @@
 	 */
 	public <T> T getMapValue (Map<String,Object> map, String key, Class<T> type)
 	{
+
+		ObjectMapper mapper = new ObjectMapper();
+
 		if (map.containsKey(key)) {
 			try {
 				String s = mapper.writeValueAsString(map.get(key));
diff --git a/cloudify-client/src/main/java/org/openecomp/mso/cloudify/v3/model/Deployment.java b/cloudify-client/src/main/java/org/openecomp/mso/cloudify/v3/model/Deployment.java
index 453dd3f..515e8a0 100644
--- a/cloudify-client/src/main/java/org/openecomp/mso/cloudify/v3/model/Deployment.java
+++ b/cloudify-client/src/main/java/org/openecomp/mso/cloudify/v3/model/Deployment.java
@@ -78,10 +78,22 @@
     @JsonProperty("workflows")
     private List<Workflow> workflows;
 
-    // ObjectMapper instance to parse Json object outputs
-    @JsonIgnore
-	private static ObjectMapper mapper = new ObjectMapper();
-
+    public List<Object> getPolicyTriggers() {
+	return policyTriggers;
+    }
+    
+    public void setPolicyTriggers(List<Object> policyTriggers) {
+	this.policyTriggers = policyTriggers;
+    }
+    
+    public List<Object> getPolicyTypes() {
+	return policyTypes;
+    }
+    
+    public void setPolicyTypes(List<Object> policyTypes) {
+	this.policyTypes = policyTypes;
+    }
+    
     public String getBlueprintId() {
         return blueprintId;
     }
@@ -320,6 +332,8 @@
 	 */
 	public <T> T getMapValue (Map<String,Object> map, String key, Class<T> type)
 	{
+
+		ObjectMapper mapper = new ObjectMapper();
 		if (map.containsKey(key)) {
 			try {
 				String s = mapper.writeValueAsString(map.get(key));
diff --git a/cloudify-client/src/main/java/org/openecomp/mso/cloudify/v3/model/DeploymentOutputs.java b/cloudify-client/src/main/java/org/openecomp/mso/cloudify/v3/model/DeploymentOutputs.java
index 11fe7fa..26d2ae2 100644
--- a/cloudify-client/src/main/java/org/openecomp/mso/cloudify/v3/model/DeploymentOutputs.java
+++ b/cloudify-client/src/main/java/org/openecomp/mso/cloudify/v3/model/DeploymentOutputs.java
@@ -41,12 +41,6 @@
     @JsonProperty("outputs")
     private Map<String, Object> outputs = null;
     
-
-    // ObjectMapper instance to parse Json object outputs
-    @JsonIgnore
-	private static ObjectMapper mapper = new ObjectMapper();
-
-
     public Map<String, Object> getOutputs() {
     	return this.outputs;
     }
@@ -67,6 +61,9 @@
 	 */
 	public <T> T getMapValue (Map<String,Object> map, String key, Class<T> type)
 	{
+
+		ObjectMapper mapper = new ObjectMapper();
+
 		if (map.containsKey(key)) {
 			try {
 				String s = mapper.writeValueAsString(map.get(key));
diff --git a/cloudify-client/src/main/java/org/openecomp/mso/cloudify/v3/model/Metadata.java b/cloudify-client/src/main/java/org/openecomp/mso/cloudify/v3/model/Metadata.java
index d44e92b..31e3b0d 100644
--- a/cloudify-client/src/main/java/org/openecomp/mso/cloudify/v3/model/Metadata.java
+++ b/cloudify-client/src/main/java/org/openecomp/mso/cloudify/v3/model/Metadata.java
@@ -54,31 +54,4 @@
 		this.pagination = pagination;
 	}
 
-	public class Pagination {
-		@JsonProperty("total")
-		private int total;
-		@JsonProperty("offset")
-		private int offset;
-		@JsonProperty("size")
-		private int size;
-		
-		public int getTotal() {
-			return total;
-		}
-		public void setTotal(int total) {
-			this.total = total;
-		}
-		public int getOffset() {
-			return offset;
-		}
-		public void setOffset(int offset) {
-			this.offset = offset;
-		}
-		public int getSize() {
-			return size;
-		}
-		public void setSize(int size) {
-			this.size = size;
-		}
-	}
 }
diff --git a/cloudify-client/src/main/java/org/openecomp/mso/cloudify/v3/model/Pagination.java b/cloudify-client/src/main/java/org/openecomp/mso/cloudify/v3/model/Pagination.java
new file mode 100644
index 0000000..a79f053
--- /dev/null
+++ b/cloudify-client/src/main/java/org/openecomp/mso/cloudify/v3/model/Pagination.java
@@ -0,0 +1,51 @@
+/*-
+ * ============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.cloudify.v3.model;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class Pagination {
+	@JsonProperty("total")
+	private int total;
+	@JsonProperty("offset")
+	private int offset;
+	@JsonProperty("size")
+	private int size;
+	
+	public int getTotal() {
+		return total;
+	}
+	public void setTotal(int total) {
+		this.total = total;
+	}
+	public int getOffset() {
+		return offset;
+	}
+	public void setOffset(int offset) {
+		this.offset = offset;
+	}
+	public int getSize() {
+		return size;
+	}
+	public void setSize(int size) {
+		this.size = size;
+	}
+}
\ No newline at end of file
diff --git a/cloudify-client/src/test/java/org/openecomp/mso/cloudify/BeanMultiTest.java b/cloudify-client/src/test/java/org/openecomp/mso/cloudify/BeanMultiTest.java
new file mode 100644
index 0000000..5eaa27f
--- /dev/null
+++ b/cloudify-client/src/test/java/org/openecomp/mso/cloudify/BeanMultiTest.java
@@ -0,0 +1,63 @@
+/*-
+ * ============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.cloudify;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import com.openpojo.reflection.PojoClass;
+import com.openpojo.reflection.PojoClassFilter;
+import com.openpojo.reflection.filters.FilterEnum;
+import com.openpojo.reflection.impl.PojoClassFactory;
+import com.openpojo.validation.Validator;
+import com.openpojo.validation.ValidatorBuilder;
+import com.openpojo.validation.rule.impl.GetterMustExistRule;
+import com.openpojo.validation.rule.impl.SetterMustExistRule;
+import com.openpojo.validation.test.impl.GetterTester;
+import com.openpojo.validation.test.impl.SetterTester;
+
+public class BeanMultiTest {
+
+	Validator validator;
+	 PojoClassFilter enumFilter;
+	 private PojoClassFilter filterTestClasses = new FilterTestClasses();
+	 
+  @Before
+  public void setup(){
+	  enumFilter = new FilterEnum();
+	   validator = ValidatorBuilder.create()
+              .with(new SetterMustExistRule(),
+                    new GetterMustExistRule())
+              .with(new SetterTester(),
+                    new GetterTester())
+              .build();
+  }
+  @Test
+  public void validateBeansMsoApihandlerBeans() {
+      validator.validate("org.openecomp.mso.cloudify.v3.model",enumFilter);
+  }
+  
+  private static class FilterTestClasses implements PojoClassFilter {
+	    public boolean include(PojoClass pojoClass) {
+	      return !pojoClass.getSourcePath().contains("/src/test/java");
+	    }
+	  }
+}
\ No newline at end of file
diff --git a/cloudify-client/src/test/java/org/openecomp/mso/cloudify/connector/http/HttpClientConnectorTest.java b/cloudify-client/src/test/java/org/openecomp/mso/cloudify/connector/http/HttpClientConnectorTest.java
new file mode 100644
index 0000000..b768c93
--- /dev/null
+++ b/cloudify-client/src/test/java/org/openecomp/mso/cloudify/connector/http/HttpClientConnectorTest.java
@@ -0,0 +1,150 @@
+/*-
+ * ============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.cloudify.connector.http;
+
+import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
+import static com.github.tomakehurst.wiremock.client.WireMock.post;
+import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo;
+import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.wireMockConfig;
+
+import com.github.tomakehurst.wiremock.junit.WireMockRule;
+import static com.github.tomakehurst.wiremock.client.WireMock.get;
+import static com.github.tomakehurst.wiremock.client.WireMock.delete;
+import static com.github.tomakehurst.wiremock.client.WireMock.put;
+import static com.github.tomakehurst.wiremock.client.WireMock.equalTo;
+import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;
+import static com.github.tomakehurst.wiremock.client.WireMock.postRequestedFor;
+import static com.github.tomakehurst.wiremock.client.WireMock.verify;
+import static com.github.tomakehurst.wiremock.client.WireMock.getRequestedFor;
+import static com.github.tomakehurst.wiremock.client.WireMock.putRequestedFor;
+import static com.github.tomakehurst.wiremock.client.WireMock.deleteRequestedFor;
+import org.apache.http.HttpStatus;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+import static org.hamcrest.CoreMatchers.*;
+import org.openecomp.mso.cloudify.base.client.CloudifyRequest;
+import org.openecomp.mso.cloudify.base.client.CloudifyResponseException;
+import org.openecomp.mso.cloudify.base.client.HttpMethod;
+import org.openecomp.mso.cloudify.v3.model.Deployment;
+
+public class HttpClientConnectorTest {
+	
+	@Rule
+	public WireMockRule wireMockRule = new WireMockRule(wireMockConfig().dynamicPort());
+	
+	@Rule
+	public ExpectedException thrown = ExpectedException.none();
+	
+	@Test
+	public void sunnyDay_POST(){			
+		wireMockRule.stubFor(post(urlPathEqualTo("/testUrl")).willReturn(aResponse()
+				.withHeader("Content-Type", "application/json").withBody("TEST").withStatus(HttpStatus.SC_OK)));
+		int port = wireMockRule.port();
+		HttpClientConnector conector = new HttpClientConnector();
+		CloudifyRequest<Deployment> request = new CloudifyRequest<Deployment>();
+		Deployment deployment = new Deployment();
+		deployment.setId("id");
+		request.entity(deployment, "application/json");
+		request.endpoint("http://localhost:"+port+"/testUrl");
+		request.setBasicAuthentication("USER","PASSWORD");
+		request.header("Content-Type","application/json");
+		request.method(HttpMethod.POST);
+		conector.request(request);
+		verify(postRequestedFor(urlEqualTo("/testUrl")));
+	}
+	
+	
+	@Test
+	public void sunnyDay_GET(){			
+		wireMockRule.stubFor(get(urlPathEqualTo("/testUrl")).willReturn(aResponse()
+				.withHeader("Content-Type", "application/json").withBody("TEST").withStatus(HttpStatus.SC_OK)));
+		int port = wireMockRule.port();
+		HttpClientConnector conector = new HttpClientConnector();
+		CloudifyRequest<Deployment> request = new CloudifyRequest<Deployment>();
+		request.endpoint("http://localhost:"+port+"/testUrl");
+		request.setBasicAuthentication("USER","PASSWORD");
+		request.method(HttpMethod.GET);
+		conector.request(request);
+		verify(getRequestedFor(urlEqualTo("/testUrl")));
+	}
+	
+	@Test
+	public void sunnyDay_PUT(){			
+		wireMockRule.stubFor(put(urlPathEqualTo("/testUrl")).willReturn(aResponse()
+				.withHeader("Content-Type", "application/json").withBody("TEST").withStatus(HttpStatus.SC_OK)));
+		int port = wireMockRule.port();
+		HttpClientConnector conector = new HttpClientConnector();
+		CloudifyRequest<Deployment> request = new CloudifyRequest<Deployment>();
+		request.endpoint("http://localhost:"+port+"/testUrl");
+		request.setBasicAuthentication("USER","PASSWORD");
+		request.method(HttpMethod.PUT);
+		conector.request(request);
+		verify(putRequestedFor(urlEqualTo("/testUrl")));
+	}
+	
+	
+	@Test
+	public void sunnyDay_DELETE(){			
+		wireMockRule.stubFor(delete(urlPathEqualTo("/testUrl")).willReturn(aResponse()
+				.withHeader("Content-Type", "application/json").withBody("TEST").withStatus(HttpStatus.SC_OK)));
+		int port = wireMockRule.port();
+		HttpClientConnector conector = new HttpClientConnector();
+		CloudifyRequest<Deployment> request = new CloudifyRequest<Deployment>();
+		request.endpoint("http://localhost:"+port+"/testUrl");
+		request.setBasicAuthentication("USER","PASSWORD");
+		request.method(HttpMethod.DELETE);
+		conector.request(request);
+		verify(deleteRequestedFor(urlEqualTo("/testUrl")));
+	}
+	
+	
+	@Test
+	public void rainydDay_PATCH(){			 
+		thrown.expect(HttpClientException.class);
+		thrown.expectMessage("Unrecognized HTTP Method: PATCH");
+		HttpClientConnector conector = new HttpClientConnector();
+		CloudifyRequest<Deployment> request = new CloudifyRequest<Deployment>();
+		request.endpoint("http://localhost:123123/testUrl");
+		request.setBasicAuthentication("USER","PASSWORD");
+		request.method(HttpMethod.PATCH);
+		conector.request(request);
+	
+	}
+	
+	
+	@Test
+	public void rainydDay_RunTimeException(){	
+		wireMockRule.stubFor(post(urlEqualTo("/503")).willReturn(
+                aResponse().withStatus(503).withHeader("Content-Type", "text/plain").withBody("failure")));
+		thrown.expect(RuntimeException.class);
+		thrown.expectMessage("Unexpected client exception");
+		HttpClientConnector conector = new HttpClientConnector();
+		CloudifyRequest<Deployment> request = new CloudifyRequest<Deployment>();
+		request.endpoint("http://localhost:123123/503");
+		request.setBasicAuthentication("USER","PASSWORD");
+		request.method(HttpMethod.POST);
+		conector.request(request);
+	
+	}
+
+
+}
\ No newline at end of file
diff --git a/common/pom.xml b/common/pom.xml
index 4d2d66a..aeef257 100644
--- a/common/pom.xml
+++ b/common/pom.xml
@@ -31,12 +31,12 @@
         <dependency>
             <groupId>ch.qos.logback</groupId>
             <artifactId>logback-classic</artifactId>
-            <version>1.1.1</version>
+            <version>1.2.3</version>
         </dependency>
         <dependency>
             <groupId>ch.qos.logback</groupId>
             <artifactId>logback-core</artifactId>
-            <version>1.1.1</version>
+            <version>1.2.3</version>
         </dependency>
         <dependency>
             <groupId>org.slf4j</groupId>
diff --git a/common/src/main/java/org/openecomp/mso/client/policy/RestClientSSL.java b/common/src/main/java/org/openecomp/mso/client/policy/RestClientSSL.java
index 9216645..6146fc3 100644
--- a/common/src/main/java/org/openecomp/mso/client/policy/RestClientSSL.java
+++ b/common/src/main/java/org/openecomp/mso/client/policy/RestClientSSL.java
@@ -21,10 +21,12 @@
 package org.openecomp.mso.client.policy;
 
 import java.io.FileInputStream;
+import java.io.IOException;
 import java.net.URI;
 import java.security.NoSuchAlgorithmException;
 import java.security.KeyStore;
 import java.util.Optional;
+import java.util.Properties;
 import java.util.UUID;
 
 import javax.net.ssl.SSLContext;
@@ -38,7 +40,7 @@
 public abstract class RestClientSSL extends RestClient {
 	
 	public static final String SSL_KEY_STORE_KEY = "javax.net.ssl.keyStore";
-	public static final String SSL_KEY_STORE_PASSWORD_KEY = "javax.net.ssl.keyStorePassword";
+	public static  String SSL_KEY_STORE_PASSWORD_KEY;
 	public static final String MSO_LOAD_SSL_CLIENT_KEYSTORE_KEY = "mso.load.ssl.client.keystore";
 	
 
@@ -52,9 +54,11 @@
 
 	@Override
 	protected Client getClient() {
-		
 		Client client = null;
+		Properties keyProp = new Properties ();
 		try {
+			keyProp.load (Thread.currentThread ().getContextClassLoader ().getResourceAsStream ("Policy.properties"));
+			SSL_KEY_STORE_PASSWORD_KEY=(String) keyProp.get ("ssl.key.store.password.key");
 			String loadSSLKeyStore = System.getProperty(RestClientSSL.MSO_LOAD_SSL_CLIENT_KEYSTORE_KEY);
 			if(loadSSLKeyStore != null && loadSSLKeyStore.equalsIgnoreCase("true")) {
 				KeyStore ks = getKeyStore();
@@ -67,17 +71,22 @@
 			//Use default SSL context 
 			client = ClientBuilder.newBuilder().sslContext(SSLContext.getDefault()).build();
 			this.msoLogger.debug("RestClientSSL using default SSL context!");
-		} catch (NoSuchAlgorithmException e) {
+		} catch (NoSuchAlgorithmException | IOException e) {
 			this.msoLogger.error(MessageEnum.APIH_GENERAL_EXCEPTION, "AAI", "Client init", MsoLogger.ErrorCode.UnknownError, "could not create SSL client", e);
 			throw new RuntimeException(e);
 		}
 		return client;
 	}
 	
-	private KeyStore getKeyStore() {
+	private KeyStore getKeyStore() throws IOException {
 		KeyStore ks = null;
+		Properties keyProp = new Properties ();
+	
+		keyProp.load (Thread.currentThread ().getContextClassLoader ().getResourceAsStream ("Policy.properties"));
+		SSL_KEY_STORE_PASSWORD_KEY=(String) keyProp.get ("ssl.key.store.password.key");
 	    char[] password = System.getProperty(RestClientSSL.SSL_KEY_STORE_PASSWORD_KEY).toCharArray();
 	    FileInputStream fis = null;
+	    
 	    try {
 	    	ks = KeyStore.getInstance(KeyStore.getDefaultType());
 	        fis = new FileInputStream(System.getProperty(RestClientSSL.SSL_KEY_STORE_KEY));
@@ -86,6 +95,7 @@
 	    catch(Exception e) {
 	    	return null;
 	    }
+	    
 	    finally {
 	        if (fis != null) {
 	            try { 
diff --git a/common/src/main/java/org/openecomp/mso/logger/MsoLogger.java b/common/src/main/java/org/openecomp/mso/logger/MsoLogger.java
index 6588995..45f2746 100644
--- a/common/src/main/java/org/openecomp/mso/logger/MsoLogger.java
+++ b/common/src/main/java/org/openecomp/mso/logger/MsoLogger.java
@@ -979,8 +979,7 @@
         File configFile = new File(CONFIG_FILE);
         String uuid = "";
         BufferedReader in = null;
-        BufferedWriter bw = null;
-        try {
+        try{
             // Verify whether instanceUUID file exist,
             // If yes, read the content; if not, generate the instanceUUID and
             // write to the file
@@ -990,10 +989,11 @@
                 if ((uuid = in.readLine()) == null) {
                     // the file is empty, regenerate the file
                     uuid = UUID.randomUUID().toString();
-                    FileWriter fw = new FileWriter(configFile.getAbsoluteFile());
-                    bw = new BufferedWriter(fw);
+                    try(BufferedWriter bw = new BufferedWriter(new FileWriter(configFile.getAbsoluteFile()))) {
                     bw.write(uuid);
-                    bw.close();
+                    } catch (IOException e) {
+                      LOGGER.log(Level.SEVERE, "Error trying to write UUID file", e);
+					}
                 }
                 in.close();
             } else {
@@ -1002,21 +1002,19 @@
                 uuid = UUID.randomUUID().toString();
                 configFile.getParentFile().mkdirs();
                 configFile.createNewFile();
-                FileWriter fw = new FileWriter(configFile.getAbsoluteFile());
-                bw = new BufferedWriter(fw);
-                bw.write(uuid);
-                bw.close();
+                try(BufferedWriter bw1 = new BufferedWriter(new FileWriter(configFile.getAbsoluteFile()))){
+                bw1.write(uuid);
+                } catch (IOException e) {
+                  LOGGER.log(Level.SEVERE, "Error trying to write UUID file", e);
+				}
             }
         } catch (IOException e) {
-            LOGGER.log(Level.SEVERE, "Error trying to read UUID file", e);
+          LOGGER.log(Level.SEVERE, "Error trying to read UUID file", e);
         } finally {
             try {
                 if (in != null) {
                     in.close();
                 }
-                if (bw != null) {
-                    bw.close();
-                }
             } catch (IOException ex) {
                 LOGGER.log(Level.SEVERE, "Error trying to close UUID file", ex);
             }
diff --git a/common/src/main/resources/Policy.properties b/common/src/main/resources/Policy.properties
index 383aa18..b5b38c4 100644
--- a/common/src/main/resources/Policy.properties
+++ b/common/src/main/resources/Policy.properties
@@ -3,4 +3,5 @@
 AUTHORIZATION = Basic dGVzdHBkcDphbHBoYTEyMw==

 ENVIRONMENT = TEST

 X_ECOMP_REQUESTID = 1234567h

-ECOMP_COMPONENT_NAME = MSO
\ No newline at end of file
+ECOMP_COMPONENT_NAME = MSO

+ssl.key.store.password.key = javax.net.ssl.keyStorePassword
\ No newline at end of file
diff --git a/common/src/test/java/org/openecomp/mso/client/aai/objects/AAIOperationalEnvironmentTest.java b/common/src/test/java/org/openecomp/mso/client/aai/objects/AAIOperationalEnvironmentTest.java
new file mode 100644
index 0000000..f512de8
--- /dev/null
+++ b/common/src/test/java/org/openecomp/mso/client/aai/objects/AAIOperationalEnvironmentTest.java
@@ -0,0 +1,55 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SO
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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.client.aai.objects;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+
+public class AAIOperationalEnvironmentTest {
+
+	AAIOperationalEnvironment aaiOE =new AAIOperationalEnvironment();
+	
+	@Test
+	public void test() {
+		aaiOE.setOperationalEnvironmentId("operationalEnvironmentId");
+		aaiOE.setOperationalEnvironmentName("operationalEnvironmentName");
+		aaiOE.setOperationalEnvironmentStatus("operationalEnvironmentStatus");
+		aaiOE.setOperationalEnvironmentType("operationalEnvironmentType");
+		aaiOE.setResourceVersion("resourceVersion");
+		aaiOE.setTenantContext("tenantContext");
+		aaiOE.setWorkloadContext("workloadContext");
+		assertEquals(aaiOE.getOperationalEnvironmentId(),"operationalEnvironmentId");
+		assertEquals(aaiOE.getOperationalEnvironmentName(),"operationalEnvironmentName");
+		assertEquals(aaiOE.getOperationalEnvironmentStatus(),"operationalEnvironmentStatus");
+		assertEquals(aaiOE.getOperationalEnvironmentType(),"operationalEnvironmentType");
+		assertEquals(aaiOE.getResourceVersion(),"resourceVersion");
+		assertEquals(aaiOE.getTenantContext(),"tenantContext");
+		assertEquals(aaiOE.getWorkloadContext(),"workloadContext");
+		aaiOE.withOperationalEnvironmentId("operationalEnvironmentId");
+		aaiOE.withOperationalEnvironmentName("operationalEnvironmentName");
+		aaiOE.withOperationalEnvironmentStatus("operationalEnvironmentStatus");
+		aaiOE.withOperationalEnvironmentType("operationalEnvironmentType");
+		aaiOE.withResourceVersion("resourceVersion");
+		aaiOE.withTenantContext("tenantContext");
+		aaiOE.withWorkloadContext("workloadContext");
+	}
+
+}
diff --git a/common/src/test/java/org/openecomp/mso/client/aai/objects/AAIOwningEntityTest.java b/common/src/test/java/org/openecomp/mso/client/aai/objects/AAIOwningEntityTest.java
new file mode 100644
index 0000000..bc2ae41
--- /dev/null
+++ b/common/src/test/java/org/openecomp/mso/client/aai/objects/AAIOwningEntityTest.java
@@ -0,0 +1,40 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SO
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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.client.aai.objects;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+import org.openecomp.mso.client.aai.AAIObjectType;
+import org.openecomp.mso.client.aai.entities.uri.AAIResourceUri;
+import org.openecomp.mso.client.aai.entities.uri.AAIUriFactory;
+
+public class AAIOwningEntityTest {
+	AAIOwningEntity aaiOE= new AAIOwningEntity();
+	@Test
+	public void test() {
+		aaiOE.setOwningEntityId("OwningEntityId");
+		aaiOE.setOwningEntityName("OwningEntityName");
+		assertEquals(aaiOE.getOwningEntityId(), "OwningEntityId");
+		assertEquals(aaiOE.getOwningEntityName(), "OwningEntityName");
+		aaiOE.withOwningEntity("OwningEntityId1", "OwningEntityName1");
+		assert(aaiOE.getUri()!=null);
+		}
+}
diff --git a/common/src/test/java/org/openecomp/mso/client/aai/objects/AAIProjectTest.java b/common/src/test/java/org/openecomp/mso/client/aai/objects/AAIProjectTest.java
new file mode 100644
index 0000000..872b17a
--- /dev/null
+++ b/common/src/test/java/org/openecomp/mso/client/aai/objects/AAIProjectTest.java
@@ -0,0 +1,41 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SO
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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.client.aai.objects;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+import org.openecomp.mso.client.aai.AAIObjectType;
+import org.openecomp.mso.client.aai.entities.uri.AAIResourceUri;
+import org.openecomp.mso.client.aai.entities.uri.AAIUriFactory;
+
+public class AAIProjectTest {
+
+	
+	@Test
+	public void test() {
+		AAIProject aaiP =new AAIProject();
+		aaiP.setProjectName("projectName");
+		assertEquals(aaiP.getProjectName(),"projectName");
+		aaiP.withProjectName("projectName");
+		assert(aaiP.getUri()!=null);
+
+		}
+}
diff --git a/common/src/test/java/org/openecomp/mso/client/aai/objects/AAIServiceInstanceTest.java b/common/src/test/java/org/openecomp/mso/client/aai/objects/AAIServiceInstanceTest.java
new file mode 100644
index 0000000..692e3bb
--- /dev/null
+++ b/common/src/test/java/org/openecomp/mso/client/aai/objects/AAIServiceInstanceTest.java
@@ -0,0 +1,53 @@
+/*
+* ============LICENSE_START=======================================================
+* ONAP : SO
+* ================================================================================
+* Copyright 2018 TechMahindra
+*=================================================================================
+* 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.client.aai.objects;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+
+public class AAIServiceInstanceTest {
+
+	@Test
+	public void test() {
+		AAIServiceInstance aaiSI= new AAIServiceInstance();
+		aaiSI.setEnvironmentContext("environmentContext");
+		aaiSI.setModelInvariantUuid("modelInvariantUuid");
+		aaiSI.setModelUuid("modelUuid");
+		aaiSI.setoStatus("oStatus");
+		aaiSI.setServiceInstanceId("serviceInstanceId");
+		aaiSI.setServiceInstanceName("serviceInstanceName");
+		aaiSI.setServiceRole("serviceRole");
+		aaiSI.setServiceType("serviceType");
+		aaiSI.setWorkloadContext("workloadContext");
+		assertEquals(aaiSI.getEnvironmentContext(), "environmentContext");
+		assertEquals(aaiSI.getModelInvariantUuid(), "modelInvariantUuid");
+		assertEquals(aaiSI.getModelUuid(), "modelUuid");
+		assertEquals(aaiSI.getoStatus(), "oStatus");
+		assertEquals(aaiSI.getServiceInstanceId(), "serviceInstanceId");
+		assertEquals(aaiSI.getServiceInstanceName(), "serviceInstanceName");
+		assertEquals(aaiSI.getServiceRole(), "serviceRole");
+		assertEquals(aaiSI.getServiceType(), "serviceType");
+		assertEquals(aaiSI.getWorkloadContext(), "workloadContext");
+		aaiSI.withServiceInstance("serviceInstanceId");
+		assert(aaiSI.getUri()!=null);
+	}
+
+}
diff --git a/common/src/test/java/org/openecomp/mso/client/dmaap/DmaapPublisherTest.java b/common/src/test/java/org/openecomp/mso/client/dmaap/DmaapPublisherTest.java
new file mode 100644
index 0000000..a9bf81d
--- /dev/null
+++ b/common/src/test/java/org/openecomp/mso/client/dmaap/DmaapPublisherTest.java
@@ -0,0 +1,60 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2018 Huawei 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.client.dmaap;
+
+import org.junit.Test;
+
+import javax.ws.rs.ProcessingException;
+import java.io.IOException;
+import java.util.Optional;
+
+public class DmaapPublisherTest {
+
+    DmaapPublisher dmaapPublisher = new DmaapPublisher(120) {
+        @Override
+        public String getUserName() {
+            return "test";
+        }
+
+        @Override
+        public String getPassword() {
+            return "test";
+        }
+
+        @Override
+        public String getTopic() {
+            return "test";
+        }
+
+        @Override
+        public Optional<String> getHost() {
+            return Optional.of("http://localhost:8080");
+        }
+    };
+
+    public DmaapPublisherTest() throws IOException {
+    }
+
+    @Test(expected = ProcessingException.class)
+    public void sendTest() throws Exception {
+            dmaapPublisher.send("{'key': 'value'}");
+    }
+
+}
\ No newline at end of file
diff --git a/mso-api-handlers/mso-api-handler-common/src/test/java/org/openecomp/mso/apihandler/camundabeans/BpmnRequestTest.java b/mso-api-handlers/mso-api-handler-common/src/test/java/org/openecomp/mso/apihandler/camundabeans/BpmnRequestTest.java
new file mode 100644
index 0000000..6490f52
--- /dev/null
+++ b/mso-api-handlers/mso-api-handler-common/src/test/java/org/openecomp/mso/apihandler/camundabeans/BpmnRequestTest.java
@@ -0,0 +1,178 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2018 Huawei 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.camundabeans;
+
+import org.junit.Test;
+
+public class BpmnRequestTest {
+
+    BpmnRequest bpmnRequest = new BpmnRequest();
+
+    @Test
+    public void getHostTest() throws Exception {
+        bpmnRequest.getHost();
+    }
+
+    @Test
+    public void setHostTest() throws Exception {
+        bpmnRequest.setHost(new CamundaInput());
+    }
+
+    @Test
+    public void getRequestIdTest() throws Exception {
+        bpmnRequest.getRequestId();
+    }
+
+    @Test
+    public void setRequestIdTest() throws Exception {
+        bpmnRequest.setRequestId(new CamundaInput());
+    }
+
+    @Test
+    public void getIsBaseVfModuleTest() throws Exception {
+        bpmnRequest.getIsBaseVfModule();
+    }
+
+    @Test
+    public void setIsBaseVfModuleTest() throws Exception {
+        bpmnRequest.setIsBaseVfModule(new CamundaBooleanInput());
+    }
+
+    @Test
+    public void getRecipeTimeoutTest() throws Exception {
+        bpmnRequest.getRecipeTimeout();
+    }
+
+    @Test
+    public void setRecipeTimeoutTest() throws Exception {
+        bpmnRequest.setRecipeTimeout(new CamundaIntegerInput());
+    }
+
+    @Test
+    public void getRequestActionTest() throws Exception {
+        bpmnRequest.getRequestAction();
+    }
+
+    @Test
+    public void setRequestActionTest() throws Exception {
+        bpmnRequest.setRequestAction(new CamundaInput());
+    }
+
+    @Test
+    public void getServiceInstanceIdTest() throws Exception {
+        bpmnRequest.getServiceInstanceId();
+    }
+
+    @Test
+    public void setServiceInstanceIdTest() throws Exception {
+        bpmnRequest.setServiceInstanceId(new CamundaInput());
+    }
+
+    @Test
+    public void getVnfIdTest() throws Exception {
+        bpmnRequest.getVnfId();
+    }
+
+    @Test
+    public void setVnfIdTest() throws Exception {
+        bpmnRequest.setVnfId(new CamundaInput());
+    }
+
+    @Test
+    public void getVfModuleIdTest() throws Exception {
+        bpmnRequest.getVnfId();
+    }
+
+    @Test
+    public void setVfModuleIdTest() throws Exception {
+        bpmnRequest.setVfModuleId(new CamundaInput());
+    }
+
+    @Test
+    public void getVolumeGroupIdTest() throws Exception {
+        bpmnRequest.getVolumeGroupId();
+    }
+
+    @Test
+    public void setVolumeGroupIdTest() throws Exception {
+        bpmnRequest.setVolumeGroupId(new CamundaInput());
+    }
+
+    @Test
+    public void getNetworkIdTest() throws Exception {
+        bpmnRequest.getNetworkId();
+    }
+
+    @Test
+    public void setNetworkIdTest() throws Exception {
+        bpmnRequest.setNetworkId(new CamundaInput());
+    }
+
+    @Test
+    public void getServiceTypeTest() throws Exception {
+        bpmnRequest.getServiceType();
+    }
+
+    @Test
+    public void setServiceTypeTest() throws Exception {
+        bpmnRequest.setServiceType(new CamundaInput());
+    }
+
+    @Test
+    public void getVnfTypeTest() throws Exception {
+        bpmnRequest.getVnfType();
+    }
+
+    @Test
+    public void setVnfTypeTest() throws Exception {
+        bpmnRequest.setVnfType(new CamundaInput());
+    }
+
+    @Test
+    public void getVfModuleTypeTest() throws Exception {
+        bpmnRequest.getVfModuleType();
+    }
+
+    @Test
+    public void setVfModuleTypeTest() throws Exception {
+        bpmnRequest.setVfModuleType(new CamundaInput());
+    }
+
+    @Test
+    public void getNetworkTypeTest() throws Exception {
+        bpmnRequest.getNetworkType();
+    }
+
+    @Test
+    public void setNetworkTypeTest() throws Exception {
+        bpmnRequest.setNetworkType(new CamundaInput());
+    }
+
+    @Test
+    public void getRequestDetailsTest() throws Exception {
+        bpmnRequest.getRequestDetails();
+    }
+
+    @Test
+    public void setRequestDetailsTest() throws Exception {
+        bpmnRequest.setRequestDetails(new CamundaInput());
+    }
+
+}
\ No newline at end of file
diff --git a/mso-api-handlers/mso-api-handler-infra/pom.xml b/mso-api-handlers/mso-api-handler-infra/pom.xml
index 6ee9003..a88c9b6 100644
--- a/mso-api-handlers/mso-api-handler-infra/pom.xml
+++ b/mso-api-handlers/mso-api-handler-infra/pom.xml
@@ -109,6 +109,12 @@
 			<artifactId>scala-library</artifactId>
 			<version>${scala-lang-version}</version>
 		</dependency>
+		<!--bwj added scala-compiler-->
+		<dependency>
+			<groupId>org.scala-lang</groupId>
+			<artifactId>scala-compiler</artifactId>
+			<version>2.12.4</version>
+		</dependency>
 		<dependency>
 			<groupId>org.reflections</groupId>
 			<artifactId>reflections</artifactId>
diff --git a/mso-api-handlers/mso-requests-db/src/main/resources/InfraActiveRequests.hbm.xml b/mso-api-handlers/mso-requests-db/src/main/resources/InfraActiveRequests.hbm.xml
index fcc6b28..79ead1d 100644
--- a/mso-api-handlers/mso-requests-db/src/main/resources/InfraActiveRequests.hbm.xml
+++ b/mso-api-handlers/mso-requests-db/src/main/resources/InfraActiveRequests.hbm.xml
@@ -113,7 +113,7 @@
             <column name="AAI_SERVICE_ID" length="50"/>
         </property>
         <property name="aicCloudRegion" type="string">
-            <column name="AIC_CLOUD_REGION" length="11"/>
+            <column name="AIC_CLOUD_REGION" length="200"/>
         </property>
         <property name="callBackUrl" type="string">
             <column name="CALLBACK_URL" length="200"/>
diff --git a/packages/arquillian-unit-tests/src/test/resources/resource-examples/asdc/service_Rg511NfmService.csar b/packages/arquillian-unit-tests/src/test/resources/resource-examples/asdc/service_Rg511NfmService.csar
index 2686e4b..f052ef9 100644
--- a/packages/arquillian-unit-tests/src/test/resources/resource-examples/asdc/service_Rg511NfmService.csar
+++ b/packages/arquillian-unit-tests/src/test/resources/resource-examples/asdc/service_Rg511NfmService.csar
Binary files differ
diff --git a/packages/arquillian-unit-tests/src/test/resources/resource-examples/asdc/service_Rg516VmmscSrvc_csar.csar b/packages/arquillian-unit-tests/src/test/resources/resource-examples/asdc/service_Rg516VmmscSrvc_csar.csar
index d2983ce..eb83644 100644
--- a/packages/arquillian-unit-tests/src/test/resources/resource-examples/asdc/service_Rg516VmmscSrvc_csar.csar
+++ b/packages/arquillian-unit-tests/src/test/resources/resource-examples/asdc/service_Rg516VmmscSrvc_csar.csar
Binary files differ
diff --git a/pom.xml b/pom.xml
index 1383aa1..0ca4836 100644
--- a/pom.xml
+++ b/pom.xml
@@ -48,7 +48,7 @@
     <!-- this is used for Chef mso-code cookbook -->
     <swm.version>2.19.3-1</swm.version>
     <!-- <openstack.version>1.2.0-SNAPSHOT</openstack.version> -->
-	<openstack.version>1.1.0</openstack.version>
+	<openstack.version>1.2.0</openstack.version>
     <nexusproxy>https://nexus.onap.org</nexusproxy>
     <maven.build.timestamp.format>yyyyMMdd'T'HHmm</maven.build.timestamp.format>
     <resteasy.version>3.0.19.Final</resteasy.version>
@@ -543,13 +543,13 @@
       <dependency>
         <groupId>org.apache.httpcomponents</groupId>
         <artifactId>httpclient</artifactId>
-        <version>4.5</version>
+        <version>4.5.5</version>
         <scope>compile</scope>
       </dependency>
       <dependency>
         <groupId>org.apache.httpcomponents</groupId>
         <artifactId>httpcore</artifactId>
-        <version>4.4.1</version>
+        <version>4.4.4</version>
         <scope>compile</scope>
       </dependency>
       <dependency>
diff --git a/version.properties b/version.properties
index 1eaa4fa..d3e09bb 100644
--- a/version.properties
+++ b/version.properties
@@ -1,10 +1,10 @@
 # Versioning variables
 # Note that these variables cannot be structured (e.g. : version.release or version.snapshot etc... )
-# because they are used in Jenkins, whose plug-in doesn't support
+# because they are used in Jenkins, whose plug-in doesn't support...
 
 major=1
-minor=18020100
-patch=63
+minor=2
+patch=1
 
 base_version=${major}.${minor}.${patch}