diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateCustomE2EServiceInstance.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateCustomE2EServiceInstance.groovy
index 450c5b1..1464aed 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateCustomE2EServiceInstance.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateCustomE2EServiceInstance.groovy
@@ -1,321 +1,341 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * Copyright (C) 2017 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.common.scripts.AbstractServiceTaskProcessor
-import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil
-
-import org.openecomp.mso.bpmn.core.WorkflowException
-import org.openecomp.mso.bpmn.core.json.JsonUtils
-import org.openecomp.mso.rest.APIResponse
-
-import java.util.List;
-import java.util.UUID;
-
-import org.camunda.bpm.engine.delegate.BpmnError
-import org.camunda.bpm.engine.runtime.Execution
-import org.apache.commons.lang3.*
-import org.apache.commons.codec.binary.Base64;
-import org.springframework.web.util.UriUtils
-
-/**
- * This groovy class supports the <class>CreateServiceInstance.bpmn</class> process.
- * AlaCarte flow for 1702 ServiceInstance Create
- *
- */
-public class CreateCustomE2EServiceInstance extends AbstractServiceTaskProcessor {
-	String Prefix="CRESI_"
-	ExceptionUtil exceptionUtil = new ExceptionUtil()
-	JsonUtils jsonUtil = new JsonUtils()
-
-
-	public void preProcessRequest (Execution execution) {
-		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
-		execution.setVariable("prefix",Prefix)
-		String msg = ""
-		utils.log("INFO", " *** preProcessRequest() *** ", isDebugEnabled)
-
-		try {
-
-			String siRequest = execution.getVariable("bpmnRequest")
-			utils.logAudit(siRequest)
-
-			String requestId = execution.getVariable("mso-request-id")
-			execution.setVariable("msoRequestId", requestId)
-			utils.log("INFO", "Input Request:" + siRequest + " reqId:" + requestId, isDebugEnabled)
-
-			String serviceInstanceId = execution.getVariable("serviceInstanceId")
-			if (isBlank(serviceInstanceId)) {
-				serviceInstanceId = UUID.randomUUID().toString()
-			}
-			utils.log("INFO", "Generated new Service Instance:" + serviceInstanceId, isDebugEnabled)
-			serviceInstanceId = UriUtils.encode(serviceInstanceId,"UTF-8")
-			execution.setVariable("serviceInstanceId", serviceInstanceId)
-
-			//subscriberInfo
-			String globalSubscriberId = jsonUtil.getJsonValue(siRequest, "requestDetails.subscriberInfo.globalSubscriberId")
-			if (isBlank(globalSubscriberId)) {
-				msg = "Input globalSubscriberId' is null"
-				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
-			} else {
-				execution.setVariable("globalSubscriberId", globalSubscriberId)
-			}
-
-			//requestInfo
-			execution.setVariable("source", jsonUtil.getJsonValue(siRequest, "requestDetails.requestInfo.source"))
-			execution.setVariable("serviceInstanceName", jsonUtil.getJsonValue(siRequest, "requestDetails.requestInfo.instanceName"))
-			execution.setVariable("disableRollback", jsonUtil.getJsonValue(siRequest, "requestDetails.requestInfo.suppressRollback"))
-			String productFamilyId = jsonUtil.getJsonValue(siRequest, "requestDetails.requestInfo.productFamilyId")
-			if (isBlank(productFamilyId))
-			{
-				msg = "Input productFamilyId is null"
-				utils.log("INFO", msg, isDebugEnabled)
-				//exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
-			} else {
-				execution.setVariable("productFamilyId", productFamilyId)
-			}
-	         String userParams = jsonUtil.getJsonValue(siRequest, "requestDetails.requestParameters.userParams")      
-             utils.log("INFO", "userParams:" + userParams, isDebugEnabled)
-	         List<String> paramList = jsonUtil.StringArrayToList(execution, userParams)
-	         String uuiRequest = jsonUtil.getJsonValue(paramList.get(0), "UUIRequest")
-			//modelInfo
-			if (isBlank(uuiRequest)) {
-				msg = "Input uuiRequest is null"
-				utils.log("INFO", msg, isDebugEnabled)
-				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
-			} else
-			{
-				execution.setVariable("uuiRequest", uuiRequest)
-			}
-
-			utils.log("INFO", "uuiRequest:\n" + uuiRequest,  isDebugEnabled)
-
-			//requestParameters
-			String serviceType = jsonUtil.getJsonValue(uuiRequest, "service.parameters.serviceType")
-			if (isBlank(serviceType)) {
-				msg = "Input serviceType is null"
-				utils.log("INFO", msg, isDebugEnabled)
-				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
-			} else {
-				execution.setVariable("serviceType", serviceType)
-			}
-			execution.setVariable("URN_mso_adapters_openecomp_db_endpoint","http://mso.mso.testlab.openecomp.org:8080/dbadapters/RequestsDbAdapter")
-
-		} 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)
-	}
-
-	public void sendSyncResponse (Execution execution) {
-		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
-		utils.log("INFO", " *** sendSyncResponse *** ", isDebugEnabled)
-
-		try {
-			String operationId = execution.getVariable("operationId")
-			String serviceInstanceId = execution.getVariable("serviceInstanceId")
-			// RESTResponse for API Handler (APIH) Reply Task
-			String createServiceRestRequest = """{"service":{"serviceId":"${serviceInstanceId}","operationId":"${operationId}"}}""".trim()
-			utils.log("INFO", " sendSyncResponse to APIH:" + "\n" + createServiceRestRequest, isDebugEnabled)
-			sendWorkflowResponse(execution, 202, createServiceRestRequest)
-			execution.setVariable("sentSyncResponse", true)
-
-		} catch (Exception ex) {
-			String msg = "Exceptuion in sendSyncResponse:" + ex.getMessage()
-			utils.log("INFO", msg, isDebugEnabled)
-			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
-		}
-		utils.log("INFO"," ***** Exit sendSyncResopnse *****",  isDebugEnabled)
-	}
-
-
-	public void sendSyncError (Execution execution) {
-		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
-		utils.log("INFO", " *** sendSyncError *** ", isDebugEnabled)
-
-		try {
-			String errorMessage = ""
-			if (execution.getVariable("WorkflowException") instanceof WorkflowException) {
-				WorkflowException wfe = execution.getVariable("WorkflowException")
-				errorMessage = wfe.getErrorMessage()
-			} else {
-				errorMessage = "Sending Sync Error."
-			}
-
-			String buildworkflowException =
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2017 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.common.scripts.AbstractServiceTaskProcessor
+import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil
+
+import org.openecomp.mso.bpmn.core.WorkflowException
+import org.openecomp.mso.bpmn.core.json.JsonUtils
+import org.openecomp.mso.rest.APIResponse
+
+import java.util.UUID;
+
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.delegate.DelegateExecution
+import org.apache.commons.lang3.*
+import org.apache.commons.codec.binary.Base64;
+import org.springframework.web.util.UriUtils
+
+/**
+ * This groovy class supports the <class>CreateServiceInstance.bpmn</class> process.
+ * AlaCarte flow for 1702 ServiceInstance Create
+ *
+ */
+public class CreateCustomE2EServiceInstance extends AbstractServiceTaskProcessor {
+	String Prefix="CRESI_"
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+	JsonUtils jsonUtil = new JsonUtils()
+
+
+	public void preProcessRequest (DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		execution.setVariable("prefix",Prefix)
+		String msg = ""
+		utils.log("DEBUG", " *** preProcessRequest() *** ", isDebugEnabled)
+
+		try {
+
+			String siRequest = execution.getVariable("bpmnRequest")
+			utils.logAudit(siRequest)
+
+			String requestId = execution.getVariable("mso-request-id")
+			execution.setVariable("msoRequestId", requestId)
+			utils.log("DEBUG", "Input Request:" + siRequest + " reqId:" + requestId, isDebugEnabled)
+
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")
+			if (isBlank(serviceInstanceId)) {
+				serviceInstanceId = UUID.randomUUID().toString()
+			}
+			utils.log("DEBUG", "Generated new Service Instance:" + serviceInstanceId, isDebugEnabled)
+			serviceInstanceId = UriUtils.encode(serviceInstanceId,"UTF-8")
+			execution.setVariable("serviceInstanceId", serviceInstanceId)
+
+			//subscriberInfo
+			String globalSubscriberId = jsonUtil.getJsonValue(siRequest, "requestDetails.subscriberInfo.globalSubscriberId")
+			if (isBlank(globalSubscriberId)) {
+				msg = "Input globalSubscriberId' is null"
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			} else {
+				execution.setVariable("globalSubscriberId", globalSubscriberId)
+			}
+
+			//requestInfo
+			execution.setVariable("source", jsonUtil.getJsonValue(siRequest, "requestDetails.requestInfo.source"))
+			execution.setVariable("serviceInstanceName", jsonUtil.getJsonValue(siRequest, "requestDetails.requestInfo.instanceName"))
+			execution.setVariable("disableRollback", jsonUtil.getJsonValue(siRequest, "requestDetails.requestInfo.suppressRollback"))
+			String productFamilyId = jsonUtil.getJsonValue(siRequest, "requestDetails.requestInfo.productFamilyId")
+			if (isBlank(productFamilyId))
+			{
+				msg = "Input productFamilyId is null"
+				utils.log("DEBUG", msg, isDebugEnabled)
+				//exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			} else {
+				execution.setVariable("productFamilyId", productFamilyId)
+			}
+
+			//modelInfo
+			String serviceModelInfo = jsonUtil.getJsonValue(siRequest, "requestDetails.modelInfo")
+			if (isBlank(serviceModelInfo)) {
+				msg = "Input serviceModelInfo is null"
+				utils.log("DEBUG", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			} else
+			{
+				execution.setVariable("serviceModelInfo", serviceModelInfo)
+			}
+
+			utils.log("DEBUG", "modelInfo" + serviceModelInfo,  isDebugEnabled)
+
+			//requestParameters
+			String subscriptionServiceType = jsonUtil.getJsonValue(siRequest, "requestDetails.requestParameters.subscriptionServiceType")
+			if (isBlank(subscriptionServiceType)) {
+				msg = "Input subscriptionServiceType is null"
+				utils.log("DEBUG", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			} else {
+				execution.setVariable("subscriptionServiceType", subscriptionServiceType)
+			}
+
+			
+			/*
+			 * Extracting User Parameters from incoming Request and converting into a Map
+			 */
+			def jsonSlurper = new JsonSlurper()
+			def jsonOutput = new JsonOutput()
+
+			Map reqMap = jsonSlurper.parseText(siRequest)
+
+			//InputParams
+			def userParams = reqMap.requestDetails?.requestParameters?.userParams
+
+			Map<String, String> inputMap = [:]
+			if (userParams) {
+				userParams.each {
+					userParam -> inputMap.put(userParam.name, userParam.value.toString())
+				}
+			}
+			
+			utils.log("DEBUG", "User Input Parameters map: " + userParams.toString(), isDebugEnabled)
+			execution.setVariable("serviceInputParams", inputMap)
+			execution.setVariable("URN_mso_adapters_openecomp_db_endpoint","http://mso.mso.testlab.openecomp.org:8080/dbadapters/RequestsDbAdapter")
+			//TODO
+			//execution.setVariable("serviceInputParams", jsonUtil.getJsonValue(siRequest, "requestDetails.requestParameters.userParams"))
+			//execution.setVariable("failExists", true)
+
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception ex){
+			msg = "Exception in preProcessRequest " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		utils.log("DEBUG"," ***** Exit preProcessRequest *****",  isDebugEnabled)
+	}
+
+	public void sendSyncResponse (DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG", " *** sendSyncResponse *** ", isDebugEnabled)
+
+		try {
+			String operationId = execution.getVariable("operationId")
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")
+			// RESTResponse for API Handler (APIH) Reply Task
+			String createServiceRestRequest = """{"service":{"serviceId":"${serviceInstanceId}","operationId":"${operationId}"}}""".trim()
+			utils.log("DEBUG", " sendSyncResponse to APIH:" + "\n" + createServiceRestRequest, isDebugEnabled)
+			sendWorkflowResponse(execution, 202, createServiceRestRequest)
+			execution.setVariable("sentSyncResponse", true)
+
+		} catch (Exception ex) {
+			String msg = "Exceptuion in sendSyncResponse:" + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		utils.log("DEBUG"," ***** Exit sendSyncResopnse *****",  isDebugEnabled)
+	}
+
+
+	public void sendSyncError (DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG", " *** sendSyncError *** ", isDebugEnabled)
+
+		try {
+			String errorMessage = ""
+			if (execution.getVariable("WorkflowException") instanceof WorkflowException) {
+				WorkflowException wfe = execution.getVariable("WorkflowException")
+				errorMessage = wfe.getErrorMessage()
+			} else {
+				errorMessage = "Sending Sync Error."
+			}
+
+			String buildworkflowException =
 					"""<aetgt:WorkflowException xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1">
-					<aetgt:ErrorMessage>${errorMessage}</aetgt:ErrorMessage>
-					<aetgt:ErrorCode>7000</aetgt:ErrorCode>
-				   </aetgt:WorkflowException>"""
-
-			utils.logAudit(buildworkflowException)
-			sendWorkflowResponse(execution, 500, buildworkflowException)
-
-		} catch (Exception ex) {
-			utils.log("INFO", " Sending Sync Error Activity Failed. " + "\n" + ex.getMessage(), isDebugEnabled)
-		}
-
-	}
-
-	public void prepareCompletionRequest (Execution execution) {
-		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
-		utils.log("INFO", " *** prepareCompletion *** ", isDebugEnabled)
-
-		try {
-			String requestId = execution.getVariable("msoRequestId")
-			String serviceInstanceId = execution.getVariable("serviceInstanceId")
-			String source = execution.getVariable("source")
-			
-			String msoCompletionRequest =
+					<aetgt:ErrorMessage>${errorMessage}</aetgt:ErrorMessage>
+					<aetgt:ErrorCode>7000</aetgt:ErrorCode>
+				   </aetgt:WorkflowException>"""
+
+			utils.logAudit(buildworkflowException)
+			sendWorkflowResponse(execution, 500, buildworkflowException)
+
+		} catch (Exception ex) {
+			utils.log("DEBUG", " Sending Sync Error Activity Failed. " + "\n" + ex.getMessage(), isDebugEnabled)
+		}
+
+	}
+
+	public void prepareCompletionRequest (DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG", " *** prepareCompletion *** ", isDebugEnabled)
+
+		try {
+			String requestId = execution.getVariable("msoRequestId")
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")
+			String source = execution.getVariable("source")
+			
+			String msoCompletionRequest =
 					"""<aetgt:MsoCompletionRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
 								xmlns:ns="http://org.openecomp/mso/request/types/v1">
 						<request-info xmlns="http://org.openecomp/mso/infra/vnf-request/v1">
-							<request-id>${requestId}</request-id>
-							<action>CREATE</action>
-							<source>${source}</source>
-			   			</request-info>
-						<status-message>Service Instance was created successfully.</status-message>
-						<serviceInstanceId>${serviceInstanceId}</serviceInstanceId>
-			   			<mso-bpel-name>CreateGenericALaCarteServiceInstance</mso-bpel-name>
-					</aetgt:MsoCompletionRequest>"""
-
-			// Format Response
-			String xmlMsoCompletionRequest = utils.formatXml(msoCompletionRequest)
-
-			execution.setVariable("completionRequest", xmlMsoCompletionRequest)
-			utils.log("INFO", " Overall SUCCESS Response going to CompleteMsoProcess - " + "\n" + xmlMsoCompletionRequest, isDebugEnabled)
-
-		} catch (Exception ex) {
-			String msg = " Exception in prepareCompletion:" + ex.getMessage()
-			utils.log("INFO", msg, isDebugEnabled)
-			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
-		}
-		utils.log("INFO", "*** Exit prepareCompletionRequest ***", isDebugEnabled)
-	}
-
-	public void prepareFalloutRequest(Execution execution){
-		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
-		utils.log("INFO", " *** prepareFalloutRequest *** ", isDebugEnabled)
-
-		try {
-			WorkflowException wfex = execution.getVariable("WorkflowException")
-			utils.log("INFO", " Input Workflow Exception: " + wfex.toString(), isDebugEnabled)
-			String requestId = execution.getVariable("msoRequestId")
-			String source = execution.getVariable("source")
-			String requestInfo =
+							<request-id>${requestId}</request-id>
+							<action>CREATE</action>
+							<source>${source}</source>
+			   			</request-info>
+						<status-message>Service Instance was created successfully.</status-message>
+						<serviceInstanceId>${serviceInstanceId}</serviceInstanceId>
+			   			<mso-bpel-name>CreateGenericALaCarteServiceInstance</mso-bpel-name>
+					</aetgt:MsoCompletionRequest>"""
+
+			// Format Response
+			String xmlMsoCompletionRequest = utils.formatXml(msoCompletionRequest)
+
+			execution.setVariable("completionRequest", xmlMsoCompletionRequest)
+			utils.log("DEBUG", " Overall SUCCESS Response going to CompleteMsoProcess - " + "\n" + xmlMsoCompletionRequest, isDebugEnabled)
+
+		} catch (Exception ex) {
+			String msg = " Exception in prepareCompletion:" + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		utils.log("DEBUG", "*** Exit prepareCompletionRequest ***", isDebugEnabled)
+	}
+
+	public void prepareFalloutRequest(DelegateExecution execution){
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG", " *** prepareFalloutRequest *** ", isDebugEnabled)
+
+		try {
+			WorkflowException wfex = execution.getVariable("WorkflowException")
+			utils.log("DEBUG", " Input Workflow Exception: " + wfex.toString(), isDebugEnabled)
+			String requestId = execution.getVariable("msoRequestId")
+			String source = execution.getVariable("source")
+			String requestInfo =
 					"""<request-info xmlns="http://org.openecomp/mso/infra/vnf-request/v1">
-					<request-id>${requestId}</request-id>
-					<action>CREATE</action>
-					<source>${source}</source>
-				   </request-info>"""
-
-			String falloutRequest = exceptionUtil.processMainflowsBPMNException(execution, requestInfo)
-			execution.setVariable("falloutRequest", falloutRequest)
-		} catch (Exception ex) {
-			utils.log("INFO", "Exception prepareFalloutRequest:" + ex.getMessage(), isDebugEnabled)
-			String errorException = "  Bpmn error encountered in CreateGenericALaCarteServiceInstance flow. FalloutHandlerRequest,  buildErrorResponse() - " + ex.getMessage()
-			String requestId = execution.getVariable("msoRequestId")
-			String falloutRequest =
+					<request-id>${requestId}</request-id>
+					<action>CREATE</action>
+					<source>${source}</source>
+				   </request-info>"""
+
+			String falloutRequest = exceptionUtil.processMainflowsBPMNException(execution, requestInfo)
+			execution.setVariable("falloutRequest", falloutRequest)
+		} catch (Exception ex) {
+			utils.log("DEBUG", "Exception prepareFalloutRequest:" + ex.getMessage(), isDebugEnabled)
+			String errorException = "  Bpmn error encountered in CreateGenericALaCarteServiceInstance flow. FalloutHandlerRequest,  buildErrorResponse() - " + ex.getMessage()
+			String requestId = execution.getVariable("msoRequestId")
+			String falloutRequest =
 					"""<aetgt:FalloutHandlerRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
 					                             xmlns:ns="http://org.openecomp/mso/request/types/v1"
 					                             xmlns:wfsch="http://org.openecomp/mso/workflow/schema/v1">
 					   <request-info xmlns="http://org.openecomp/mso/infra/vnf-request/v1">
-					      <request-id>${requestId}</request-id>
-					      <action>CREATE</action>
-					      <source>UUI</source>
-					   </request-info>
+					      <request-id>${requestId}</request-id>
+					      <action>CREATE</action>
+					      <source>UUI</source>
+					   </request-info>
 						<aetgt:WorkflowException xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1">
-							<aetgt:ErrorMessage>${errorException}</aetgt:ErrorMessage>
-							<aetgt:ErrorCode>7000</aetgt:ErrorCode>
-						</aetgt:WorkflowException>
-					</aetgt:FalloutHandlerRequest>"""
-
-			execution.setVariable("falloutRequest", falloutRequest)
-		}
-		utils.log("INFO", "*** Exit prepareFalloutRequest ***", isDebugEnabled)
-	}
-	
-	/**
-	 * Init the service Operation Status
-	 */
-	public void prepareInitServiceOperationStatus(Execution execution){
-        def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
-        utils.log("INFO", " ======== STARTED prepareInitServiceOperationStatus Process ======== ", isDebugEnabled)
-        try{
-            String serviceId = execution.getVariable("serviceInstanceId")
-            String operationId = UUID.randomUUID().toString()
-            String serviceName = execution.getVariable("serviceInstanceName")
-            String operationType = "CREATE"
-            String userId = ""
-            String result = "processing"
-            String progress = "0"
-            String reason = ""
-            String operationContent = "Prepare service creation"
-            utils.log("INFO", "Generated new operation for Service Instance serviceId:" + serviceId + " operationId:" + operationId, isDebugEnabled)
-            serviceId = UriUtils.encode(serviceId,"UTF-8")
-            execution.setVariable("serviceInstanceId", serviceId)
-            execution.setVariable("operationId", operationId)
-            execution.setVariable("operationType", operationType)
-
-            def dbAdapterEndpoint = execution.getVariable("URN_mso_adapters_openecomp_db_endpoint")
-            execution.setVariable("CVFMI_dbAdapterEndpoint", dbAdapterEndpoint)
-            utils.log("INFO", "DB Adapter Endpoint is: " + dbAdapterEndpoint, isDebugEnabled)
-
-            String payload =
-                """<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
-                        xmlns:ns="http://org.openecomp.mso/requestsdb">
-                        <soapenv:Header/>
-                        <soapenv:Body>
-                            <ns:updateServiceOperationStatus xmlns:ns="http://org.openecomp.mso/requestsdb">
-                            <serviceId>${serviceId}</serviceId>
-                            <operationId>${operationId}</operationId>
-                            <serviceName>${serviceName}</serviceName>
-                            <operationType>${operationType}</operationType>
-                            <userId>${userId}</userId>
-                            <result>${result}</result>
-                            <operationContent>${operationContent}</operationContent>
-                            <progress>${progress}</progress>
-                            <reason>${reason}</reason>
-                        </ns:updateServiceOperationStatus>
-                    </soapenv:Body>
-                </soapenv:Envelope>"""
-
-            payload = utils.formatXml(payload)
-            execution.setVariable("CVFMI_updateServiceOperStatusRequest", payload)
-            utils.log("INFO", "Outgoing updateServiceOperStatusRequest: \n" + payload, isDebugEnabled)
-            utils.logAudit("CreateVfModuleInfra Outgoing updateServiceOperStatusRequest Request: " + payload)
-
-        }catch(Exception e){
-            utils.log("ERROR", "Exception Occured Processing prepareInitServiceOperationStatus. Exception is:\n" + e, isDebugEnabled)
-            execution.setVariable("CVFMI_ErrorResponse", "Error Occurred during prepareInitServiceOperationStatus Method:\n" + e.getMessage())
-        }
-        utils.log("INFO", "======== COMPLETED prepareInitServiceOperationStatus Process ======== ", isDebugEnabled)    
-	}
-	
-}
+							<aetgt:ErrorMessage>${errorException}</aetgt:ErrorMessage>
+							<aetgt:ErrorCode>7000</aetgt:ErrorCode>
+						</aetgt:WorkflowException>
+					</aetgt:FalloutHandlerRequest>"""
+
+			execution.setVariable("falloutRequest", falloutRequest)
+		}
+		utils.log("DEBUG", "*** Exit prepareFalloutRequest ***", isDebugEnabled)
+	}
+	
+	/**
+	 * Init the service Operation Status
+	 */
+	public void prepareInitServiceOperationStatus(DelegateExecution execution){
+        def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+        utils.log("DEBUG", " ======== STARTED prepareInitServiceOperationStatus Process ======== ", isDebugEnabled)
+        try{
+            String serviceId = execution.getVariable("serviceInstanceId")
+            String operationId = UUID.randomUUID().toString()
+            String operationType = "CREATE"
+            String userId = ""
+            String result = "processing"
+            String progress = "0"
+            String reason = ""
+            String operationContent = "Prepare service creation"
+            utils.log("DEBUG", "Generated new operation for Service Instance serviceId:" + serviceId + " operationId:" + operationId, isDebugEnabled)
+            serviceId = UriUtils.encode(serviceId,"UTF-8")
+            execution.setVariable("serviceInstanceId", serviceId)
+            execution.setVariable("operationId", operationId)
+            execution.setVariable("operationType", operationType)
+
+            def dbAdapterEndpoint = execution.getVariable("URN_mso_adapters_openecomp_db_endpoint")
+            execution.setVariable("CVFMI_dbAdapterEndpoint", dbAdapterEndpoint)
+            utils.log("DEBUG", "DB Adapter Endpoint is: " + dbAdapterEndpoint, isDebugEnabled)
+
+            String payload =
+                """<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
+                        xmlns:ns="http://org.openecomp.mso/requestsdb">
+                        <soapenv:Header/>
+                        <soapenv:Body>
+                            <ns:updateServiceOperationStatus xmlns:ns="http://org.openecomp.mso/requestsdb">
+                            <serviceId>${serviceId}</serviceId>
+                            <operationId>${operationId}</operationId>
+                            <operationType>${operationType}</operationType>
+                            <userId>${userId}</userId>
+                            <result>${result}</result>
+                            <operationContent>${operationContent}</operationContent>
+                            <progress>${progress}</progress>
+                            <reason>${reason}</reason>
+                        </ns:updateServiceOperationStatus>
+                    </soapenv:Body>
+                </soapenv:Envelope>"""
+
+            payload = utils.formatXml(payload)
+            execution.setVariable("CVFMI_updateServiceOperStatusRequest", payload)
+            utils.log("DEBUG", "Outgoing updateServiceOperStatusRequest: \n" + payload, isDebugEnabled)
+            utils.logAudit("CreateVfModuleInfra Outgoing updateServiceOperStatusRequest Request: " + payload)
+
+        }catch(Exception e){
+            utils.log("ERROR", "Exception Occured Processing prepareInitServiceOperationStatus. Exception is:\n" + e, isDebugEnabled)
+            execution.setVariable("CVFMI_ErrorResponse", "Error Occurred during prepareInitServiceOperationStatus Method:\n" + e.getMessage())
+        }
+        utils.log("DEBUG", "======== COMPLETED prepareInitServiceOperationStatus Process ======== ", isDebugEnabled)    
+	}
+	
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateGenericALaCarteServiceInstance.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateGenericALaCarteServiceInstance.groovy
index 80d7148..0de28f7 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateGenericALaCarteServiceInstance.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateGenericALaCarteServiceInstance.groovy
@@ -25,7 +25,7 @@
 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.VidUtils
+import org.openecomp.mso.bpmn.core.domain.ServiceDecomposition
 import org.openecomp.mso.bpmn.core.WorkflowException
 import org.openecomp.mso.bpmn.core.json.JsonUtils
 import org.openecomp.mso.rest.APIResponse
@@ -33,7 +33,7 @@
 import java.util.UUID;
 
 import org.camunda.bpm.engine.delegate.BpmnError
-import org.camunda.bpm.engine.runtime.Execution
+import org.camunda.bpm.engine.delegate.DelegateExecution
 import org.apache.commons.lang3.*
 import org.apache.commons.codec.binary.Base64;
 import org.springframework.web.util.UriUtils
@@ -48,13 +48,12 @@
 	String Prefix="CRESI_"
 	ExceptionUtil exceptionUtil = new ExceptionUtil()
 	JsonUtils jsonUtil = new JsonUtils()
-	VidUtils vidUtils = new VidUtils()
 
-	public void preProcessRequest (Execution execution) {
+	public void preProcessRequest (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 		String msg = ""
-		utils.log("DEBUG", " *** preProcessRequest() *** ", isDebugEnabled)
+		utils.log("DEBUG", " *** preProcessRequest() of CreateGenericALaCarteServiceInstance *** ", isDebugEnabled)
 
 		try {
 
@@ -68,8 +67,11 @@
 			String serviceInstanceId = execution.getVariable("serviceInstanceId")
 			if (isBlank(serviceInstanceId)) {
 				serviceInstanceId = UUID.randomUUID().toString()
+				utils.log("DEBUG", "Generated new Service Instance ID:" + serviceInstanceId, isDebugEnabled)
+			} else {
+				utils.log("DEBUG", "Using provided Service Instance ID:" + serviceInstanceId, isDebugEnabled)
 			}
-			utils.log("DEBUG", "Generated new Service Instance:" + serviceInstanceId, isDebugEnabled)
+
 			serviceInstanceId = UriUtils.encode(serviceInstanceId,"UTF-8")
 			execution.setVariable("serviceInstanceId", serviceInstanceId)
 
@@ -113,7 +115,7 @@
 			}
 
 			utils.log("DEBUG", "modelInfo" + serviceModelInfo,  isDebugEnabled)
-
+		
 			//requestParameters
 			String subscriptionServiceType = jsonUtil.getJsonValue(siRequest, "requestDetails.requestParameters.subscriptionServiceType")
 			if (isBlank(subscriptionServiceType)) {
@@ -139,7 +141,7 @@
 			Map<String, String> inputMap = [:]
 			if (userParams) {
 				userParams.each {
-					userParam -> inputMap.put(userParam.name, userParam.value)
+					userParam -> inputMap.put(userParam.name, userParam.value.toString())
 				}
 			}
 			
@@ -156,10 +158,10 @@
 			utils.log("DEBUG", msg, isDebugEnabled)
 			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
 		}
-		utils.log("DEBUG"," ***** Exit preProcessRequest *****",  isDebugEnabled)
+		utils.log("DEBUG"," ***** Exit preProcessRequest of CreateGenericALaCarteServiceInstance *****",  isDebugEnabled)
 	}
 
-	public void sendSyncResponse (Execution execution) {
+	public void sendSyncResponse (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		utils.log("DEBUG", " *** sendSyncResponse *** ", isDebugEnabled)
 
@@ -181,7 +183,7 @@
 	}
 
 
-	public void sendSyncError (Execution execution) {
+	public void sendSyncError (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		utils.log("DEBUG", " *** sendSyncError *** ", isDebugEnabled)
 
@@ -209,7 +211,75 @@
 
 	}
 
-	public void prepareCompletionRequest (Execution execution) {
+	// *******************************
+	//
+	// *******************************
+	public void prepareDecomposeService(DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG", " ***** Inside prepareDecomposeService of CreateGenericALaCarteServiceInstance ***** ", isDebugEnabled)
+		try {
+			String siRequest = execution.getVariable("bpmnRequest")
+			String serviceModelInfo = jsonUtil.getJsonValue(siRequest, "requestDetails.modelInfo")
+			execution.setVariable("serviceModelInfo", serviceModelInfo)
+		} catch (Exception ex) {
+			// try error in method block
+			String exceptionMessage = "Bpmn error encountered in CreateGenericALaCarteServiceInstance flow. Unexpected Error from method prepareDecomposeService() - " + ex.getMessage()
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+		}
+		utils.log("DEBUG", " ***** Completed prepareDecomposeService of CreateGenericALaCarteServiceInstance ***** ", isDebugEnabled)
+	 }
+	 
+	 
+	 // *******************************
+	 //
+	 // *******************************
+	 public void prepareCreateServiceInstance(DelegateExecution execution) {
+		 def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+ 
+		 try {
+			 utils.log("DEBUG", " ***** Inside prepareCreateServiceInstance of CreateGenericALaCarteServiceInstance ***** ", isDebugEnabled)
+ 
+			 /*
+			  * Extracting User Parameters from incoming Request and converting into a Map
+			  */
+			 def jsonSlurper = new JsonSlurper()
+			 def jsonOutput = new JsonOutput()
+			 def siRequest = execution.getVariable("bpmnRequest")
+			 Map reqMap = jsonSlurper.parseText(siRequest)
+			 //InputParams
+			 def userParams = reqMap.requestDetails?.requestParameters?.userParams
+			 Map<String, String> inputMap = [:]
+			 if (userParams != null) {
+				 userParams.each {
+					 userParam -> inputMap.put(userParam.name, userParam.value)
+				 }
+			 }
+			 
+			 utils.log("DEBUG", "User Input Parameters map: " + userParams.toString(), isDebugEnabled)
+			 execution.setVariable("serviceInputParams", inputMap)
+			 
+			 ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition")
+			
+			 String serviceInstanceId = execution.getVariable("serviceInstanceId")
+			 serviceDecomposition.getServiceInstance().setInstanceId(serviceInstanceId)
+			 
+			 String serviceInstanceName = jsonUtil.getJsonValue(siRequest, "requestDetails.requestInfo.instanceName")
+			 serviceDecomposition.getServiceInstance().setInstanceName(serviceInstanceName)
+			 execution.setVariable("serviceInstanceName", serviceInstanceName)
+			 execution.setVariable("serviceDecomposition", serviceDecomposition)
+			 execution.setVariable("serviceDecompositionString", serviceDecomposition.toJsonString())
+			 utils.log("DEBUG", "serviceDecomposition.serviceInstanceName: " + serviceDecomposition.getServiceInstance().getInstanceName(), isDebugEnabled)
+			 			 
+			 utils.log("DEBUG", " ***** Completed prepareCreateServiceInstance of CreateGenericALaCarteServiceInstance ***** ", isDebugEnabled)
+		 } catch (Exception ex) {
+			 // try error in method block
+			 String exceptionMessage = "Bpmn error encountered in CreateGenericALaCarteServiceInstance flow. Unexpected Error from method prepareCreateServiceInstance() - " + ex.getMessage()
+			 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+		 }
+	  }
+	  
+	  
+	public void prepareCompletionRequest (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		utils.log("DEBUG", " *** prepareCompletion *** ", isDebugEnabled)
 
@@ -245,7 +315,7 @@
 		utils.log("DEBUG", "*** Exit prepareCompletionRequest ***", isDebugEnabled)
 	}
 
-	public void prepareFalloutRequest(Execution execution){
+	public void prepareFalloutRequest(DelegateExecution execution){
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		utils.log("DEBUG", " *** prepareFalloutRequest *** ", isDebugEnabled)
 
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateNetworkInstance.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateNetworkInstance.groovy
index c37355e..5f7d1e3 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateNetworkInstance.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateNetworkInstance.groovy
@@ -31,7 +31,7 @@
 import java.util.UUID;
 
 import org.camunda.bpm.engine.delegate.BpmnError
-import org.camunda.bpm.engine.runtime.Execution
+import org.camunda.bpm.engine.delegate.DelegateExecution
 import org.apache.commons.lang3.*
 import org.apache.commons.codec.binary.Base64;
 import org.springframework.web.util.UriUtils
@@ -45,7 +45,7 @@
 	ExceptionUtil exceptionUtil = new ExceptionUtil()
 	JsonUtils jsonUtil = new JsonUtils()
 
-	public InitializeProcessVariables(Execution execution){
+	public InitializeProcessVariables(DelegateExecution execution){
 		
 		execution.setVariable(Prefix + "source", "")
 		execution.setVariable(Prefix + "Success", false)
@@ -69,7 +69,7 @@
 	 * This method is executed during the preProcessRequest task of the <class>CreateNetworkInstance.bpmn</class> process.
 	 * @param execution
 	 */
-	public void preProcessRequest (Execution execution) {
+	public void preProcessRequest (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 
@@ -154,7 +154,7 @@
 		}
 	}
 
-	public void sendSyncResponse (Execution execution) {
+	public void sendSyncResponse (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 
@@ -178,7 +178,7 @@
 	}
 	
 	
-	public void getNetworkModelInfo (Execution execution) {
+	public void getNetworkModelInfo (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix", Prefix)
 
@@ -203,7 +203,7 @@
 	}
 	
 	
-	public void sendSyncError (Execution execution) {
+	public void sendSyncError (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix", Prefix)
 
@@ -224,7 +224,7 @@
 
 	}
 
-	public void prepareDBRequestError (Execution execution) {
+	public void prepareDBRequestError (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 
@@ -272,7 +272,7 @@
 
 	 }
 	
-	public void prepareCompletion (Execution execution) {
+	public void prepareCompletion (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 
@@ -320,7 +320,7 @@
 	//     Post or Validate Response Section
 	// **************************************************
 
-	public void postProcessResponse (Execution execution) {
+	public void postProcessResponse (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix", Prefix)
 	
@@ -354,7 +354,7 @@
 	//     Build Error Section
 	// *******************************
 
-	public void processRollbackData (Execution execution) {
+	public void processRollbackData (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix", Prefix)
 
@@ -375,7 +375,7 @@
 	}
 	
 	// Prepare for FalloutHandler
-	public void buildErrorResponse (Execution execution) {
+	public void buildErrorResponse (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix", Prefix)
 
@@ -436,7 +436,7 @@
 
 	}
 	
-	public void processJavaException(Execution execution){
+	public void processJavaException(DelegateExecution execution){
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 		try{
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 400b0d4..d2d93d5 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
@@ -32,7 +32,7 @@
 import java.util.UUID;
 
 import org.camunda.bpm.engine.delegate.BpmnError 
-import org.camunda.bpm.engine.runtime.Execution
+import org.camunda.bpm.engine.delegate.DelegateExecution
 import org.apache.commons.lang3.*
 import org.apache.commons.codec.binary.Base64;
 import org.springframework.web.util.UriUtils 
@@ -60,7 +60,7 @@
      * generate the nsOperationKey
      * generate the nsParameters
      */
-    public void preProcessRequest (Execution execution) {
+    public void preProcessRequest (DelegateExecution execution) {
 	   def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
        String msg = ""
        utils.log("INFO", " *** preProcessRequest() *** ", isDebugEnabled)
@@ -120,7 +120,7 @@
      * url: the url of the request
      * requestBody: the body of the request
      */
-    private APIResponse postRequest(Execution execution, String url, String requestBody){
+    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)
@@ -138,7 +138,7 @@
         return apiResponse
     }
     
-    public void postCreateSDNCCall(Execution execution){
+    public void postCreateSDNCCall(DelegateExecution execution){
         
     }
 }
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateVFCNSResource.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateVFCNSResource.groovy
index 970a4f7..0279c2c 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateVFCNSResource.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateVFCNSResource.groovy
@@ -32,7 +32,7 @@
 import java.util.UUID;
 
 import org.camunda.bpm.engine.delegate.BpmnError 
-import org.camunda.bpm.engine.runtime.Execution
+import org.camunda.bpm.engine.delegate.DelegateExecution
 import org.apache.commons.lang3.*
 import org.apache.commons.codec.binary.Base64;
 import org.springframework.web.util.UriUtils 
@@ -47,20 +47,21 @@
 public class CreateVFCNSResource extends AbstractServiceTaskProcessor {
 
     String vfcUrl = "/vfc/rest/v1/vfcadapter"
-    
+            
     String host = "http://mso.mso.testlab.openecomp.org:8080"
     
     ExceptionUtil exceptionUtil = new ExceptionUtil()
 
     JsonUtils jsonUtil = new JsonUtils()
-    
-    /**CreateVFCNSResource
+
+    /**
+     * CreateVFCNSResource
      * Pre Process the BPMN Flow Request
      * Inclouds:
      * generate the nsOperationKey
      * generate the nsParameters
      */
-    public void preProcessRequest (Execution execution) {
+    public void preProcessRequest (DelegateExecution execution) {
 	   def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
        String msg = ""
        utils.log("INFO", " *** preProcessRequest() *** ", isDebugEnabled)
@@ -117,7 +118,7 @@
     /**
      * create NS task
      */
-    public void createNetworkService(Execution execution) {
+    public void createNetworkService(DelegateExecution execution) {
         def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
         utils.log("INFO"," *****  createNetworkService *****",  isDebugEnabled)
         String nsOperationKey = execution.getVariable("nsOperationKey");
@@ -144,8 +145,8 @@
     /**
      * instantiate NS task
      */
-    public void instantiateNetworkService(Execution execution) {
-        def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+    public void instantiateNetworkService(DelegateExecution execution) {
+        def isDebugEnabled= execution.getVariable("isDebugLogEnabled")
         utils.log("INFO"," *****  instantiateNetworkService *****",  isDebugEnabled)
         String nsOperationKey = execution.getVariable("nsOperationKey");
         String nsParameters = execution.getVariable("nsParameters");
@@ -173,7 +174,7 @@
     /**
      * query NS task
      */
-    public void queryNSProgress(Execution execution) {
+    public void queryNSProgress(DelegateExecution execution) {
         def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
         utils.log("INFO"," *****  queryNSProgress *****",  isDebugEnabled)
         String jobId = execution.getVariable("jobId")
@@ -193,8 +194,8 @@
     /**
      * delay 5 sec 
      */
-    public void timeDelay(Execution execution) {
-        def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+    public void timeDelay(DelegateExecution execution) {
+        def isDebugEnabled= execution.getVariable("isDebugLogEnabled")
         try {
             Thread.sleep(5000);
         } catch(InterruptedException e) {           
@@ -205,7 +206,7 @@
     /**
      * finish NS task
      */
-    public void addNSRelationship(Execution execution) {
+    public void addNSRelationship(DelegateExecution execution) {
         def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
         utils.log("INFO"," ***** addNSRelationship *****",  isDebugEnabled)
         String nsInstanceId = execution.getVariable("nsInstanceId")
@@ -241,7 +242,7 @@
         utils.log("INFO"," *****Exit addNSRelationship *****",  isDebugEnabled)
     }
     
-    public APIResponse executeAAIPutCall(Execution execution, String url, String payload){
+    public APIResponse executeAAIPutCall(DelegateExecution execution, String url, String payload){
         def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
         utils.log("INFO", " ======== Started Execute AAI Put Process ======== ",  isDebugEnabled) 
         APIResponse apiResponse = null
@@ -265,13 +266,13 @@
         }
         return apiResponse
     }
-    
+
     /**
      * post request
      * url: the url of the request
      * requestBody: the body of the request
      */
-    private APIResponse postRequest(Execution execution, String url, String requestBody){
+    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)
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateVfModuleInfra.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateVfModuleInfra.groovy
index 37ff494..3b2c4ea 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateVfModuleInfra.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateVfModuleInfra.groovy
@@ -24,7 +24,7 @@
 import groovy.json.JsonOutput
 
 import org.camunda.bpm.engine.delegate.BpmnError
-import org.camunda.bpm.engine.runtime.Execution
+import org.camunda.bpm.engine.delegate.DelegateExecution
 import org.apache.commons.lang3.*
 import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor;
 import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil;
@@ -44,7 +44,7 @@
 	 * Validates the request message and sets up the workflow.
 	 * @param execution the execution
 	 */
-	public void preProcessRequest(Execution execution) {
+	public void preProcessRequest(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.preProcessRequest(' +
 			'execution=' + execution.getId() +
 			')'
@@ -127,7 +127,7 @@
 			Map<String, String> userParamsMap = [:]
 			if (userParams != null) {
 				userParams.each { userParam ->
-					userParamsMap.put(userParam.name, userParam.value)
+					userParamsMap.put(userParam.name, jsonOutput.toJson(userParam.value).toString())
 				}							
 			}		
 						
@@ -171,6 +171,9 @@
 			def usePreload = reqMap.requestDetails?.requestParameters?.usePreload
 			execution.setVariable(prefix + 'usePreload', usePreload)
 			
+			// This is aLaCarte flow, so aLaCarte flag is always on				
+			execution.setVariable(prefix + 'aLaCarte', true)
+			
 			def cloudConfiguration = reqMap.requestDetails?.cloudConfiguration
 			def lcpCloudRegionId	= cloudConfiguration.lcpCloudRegionId
 			execution.setVariable(prefix + 'lcpCloudRegionId', lcpCloudRegionId)
@@ -239,7 +242,7 @@
 	 * @param responseCodeVar the execution variable in which the response code is stored
 	 * @param errorResponseVar the execution variable in which the error response is stored
 	 */
-	public void validateWorkflowResponse(Execution execution, String responseVar,
+	public void validateWorkflowResponse(DelegateExecution execution, String responseVar,
 			String responseCodeVar, String errorResponseVar) {
 		SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
 		sdncAdapterUtils.validateSDNCResponse(execution, responseVar, responseCodeVar, errorResponseVar)
@@ -250,7 +253,7 @@
 	 * Sends the empty, synchronous response back to the API Handler.
 	 * @param execution the execution
 	 */
-	public void sendResponse(Execution execution) {
+	public void sendResponse(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.sendResponse(' +
 			'execution=' + execution.getId() +
 			')'
@@ -283,7 +286,7 @@
 	 *
 	 * @param execution the execution
 	 */
-	public void postProcessResponse(Execution execution){
+	public void postProcessResponse(DelegateExecution execution){
 		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
 
 		utils.log("DEBUG", " ======== STARTED PostProcessResponse Process ======== ", isDebugEnabled)
@@ -329,7 +332,7 @@
 	 * @param execution the execution
 	 * @return the validated request
 	 */
-	public String validateInfraRequest(Execution execution) {
+	public String validateInfraRequest(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.validateInfraRequest(' +
 			'execution=' + execution.getId() +
 			')'
@@ -392,7 +395,7 @@
 		}
 	}
 
-	public void prepareUpdateInfraRequest(Execution execution){
+	public void prepareUpdateInfraRequest(DelegateExecution execution){
 		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
 
 		utils.log("DEBUG", " ======== STARTED prepareUpdateInfraRequest Process ======== ", isDebugEnabled)
@@ -449,7 +452,7 @@
 	 * @param execution the execution
 	 * @param resultVar the execution variable in which the result will be stored
 	 */
-	public void falloutHandlerPrep(Execution execution, String resultVar) {
+	public void falloutHandlerPrep(DelegateExecution execution, String resultVar) {
 		def method = getClass().getSimpleName() + '.falloutHandlerPrep(' +
 			'execution=' + execution.getId() +
 			', resultVar=' + resultVar +
@@ -496,7 +499,7 @@
 		}
 	}
 
-	public void logAndSaveOriginalException(Execution execution) {
+	public void logAndSaveOriginalException(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.validateRollbackResponse(' +
 			'execution=' + execution.getId() +
 			')'
@@ -507,7 +510,7 @@
 		saveWorkflowException(execution, 'CVFMI_originalWorkflowException')
 	}
 
-	public void validateRollbackResponse(Execution execution) {
+	public void validateRollbackResponse(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.validateRollbackResponse(' +
 			'execution=' + execution.getId() +
 			')'
@@ -521,7 +524,7 @@
 
 	}
 	
-	public void sendErrorResponse(Execution execution){
+	public void sendErrorResponse(DelegateExecution execution){
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 
 		utils.log("DEBUG", " *** STARTED CreateVfModulenfra sendErrorResponse Process *** ", isDebugEnabled)
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateVfModuleVolumeInfraV1.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateVfModuleVolumeInfraV1.groovy
index a881ed2..49d67cb 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateVfModuleVolumeInfraV1.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateVfModuleVolumeInfraV1.groovy
@@ -32,7 +32,7 @@
 import groovy.json.JsonSlurper
 
 import org.camunda.bpm.engine.delegate.BpmnError
-import org.camunda.bpm.engine.runtime.Execution;
+import org.camunda.bpm.engine.delegate.DelegateExecution;
 import org.apache.commons.lang3.*
 
 class CreateVfModuleVolumeInfraV1 extends AbstractServiceTaskProcessor {
@@ -43,7 +43,7 @@
 	 * Perform initial processing, such as request validation, initialization of variables, etc.
 	 * * @param execution
 	 */
-	public void preProcessRequest (Execution execution) {
+	public void preProcessRequest (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		setBasicDBAuthHeader(execution, isDebugEnabled)
 		preProcessRequest(execution, isDebugEnabled)
@@ -55,7 +55,7 @@
 	 * @param execution
 	 * @param isDebugEnabled
 	 */
-	public void preProcessRequest (Execution execution, isDebugEnabled) {
+	public void preProcessRequest (DelegateExecution execution, isDebugEnabled) {
 
 		execution.setVariable("prefix",prefix)
 		setSuccessIndicator(execution, false)
@@ -87,7 +87,7 @@
 	 * @param serviceInstanceId
 	 * @param isDebugLogEnabled
 	 */
-	public void setupVariables(Execution execution, Map requestMap, isDebugLogEnabled) {
+	public void setupVariables(DelegateExecution execution, Map requestMap, isDebugLogEnabled) {
 		
 		def jsonOutput = new JsonOutput()
 		
@@ -142,7 +142,7 @@
 		Map<String, String> vfModuleInputMap = [:]
 		
 		userParams.each { userParam ->
-			vfModuleInputMap.put(userParam.name, userParam.value)
+			vfModuleInputMap.put(userParam.name, userParam.value.toString())
 		}
 		execution.setVariable('vfModuleInputParams', vfModuleInputMap)
 
@@ -155,7 +155,7 @@
 
 	
 	
-	public void sendSyncResponse (Execution execution, isDebugEnabled) {
+	public void sendSyncResponse (DelegateExecution execution, isDebugEnabled) {
 		def volumeGroupId = execution.getVariable('volumeGroupId')
 		def requestId = execution.getVariable("mso-request-id")
 		def serviceInstanceId = execution.getVariable("serviceInstanceId")
@@ -169,7 +169,7 @@
 	}
 
 
-	public void sendSyncError (Execution execution, isDebugEnabled) {
+	public void sendSyncError (DelegateExecution execution, isDebugEnabled) {
 		WorkflowException we = execution.getVariable('WorkflowException')
 		def errorCode = we?.getErrorCode()
 		def errorMessage = we?.getErrorMessage()
@@ -183,7 +183,7 @@
 	 * @param execution
 	 * @param isDebugEnabled
 	 */
-	public void buildWorkflowException(Execution execution, int errorCode, errorMessage, isDebugEnabled) {
+	public void buildWorkflowException(DelegateExecution execution, int errorCode, errorMessage, isDebugEnabled) {
 		utils.log("DEBUG", errorMessage, isDebugEnabled)
 		(new ExceptionUtil()).buildWorkflowException(execution, 2500, errorMessage)
 	}
@@ -194,7 +194,7 @@
 	 * @param execution
 	 * @param isDebugEnabled
 	 */
-	public void prepareDbInfraSuccessRequest(Execution execution, isDebugEnabled) {
+	public void prepareDbInfraSuccessRequest(DelegateExecution execution, isDebugEnabled) {
 		def dbVnfOutputs = execution.getVariable(prefix+'volumeOutputs')
 		def requestId = execution.getVariable('mso-request-id')
 		def statusMessage = "VolumeGroup successfully created."
@@ -237,7 +237,7 @@
 	 * @param execution
 	 * @param isDebugEnabled
 	 */
-	public void postProcessResponse (Execution execution, isDebugEnabled) {
+	public void postProcessResponse (DelegateExecution execution, isDebugEnabled) {
 
 		def dbReturnCode = execution.getVariable(prefix+'dbReturnCode')
 		def createDBResponse =  execution.getVariable(prefix+'createDBResponse')
@@ -270,7 +270,7 @@
 
 	}
 
-	public void prepareFalloutHandlerRequest(Execution execution, isDebugEnabled) {
+	public void prepareFalloutHandlerRequest(DelegateExecution execution, isDebugEnabled) {
 
 		WorkflowException we = execution.getVariable('WorkflowException')
 		def errorCode = we?.getErrorCode()
@@ -309,7 +309,7 @@
 	 * @param execution
 	 * @param isDebugEnabled
 	 */
-	public void callRESTQueryAAIServiceInstance(Execution execution, isDebugEnabled) {
+	public void callRESTQueryAAIServiceInstance(DelegateExecution execution, isDebugEnabled) {
 
 		def request = execution.getVariable(prefix+"Request")
 		def serviceInstanceId = utils.getNodeText1(request, "service-instance-id")
@@ -348,12 +348,12 @@
 		}
 	}
 	
-	public void logAndSaveOriginalException(Execution execution, isDebugLogEnabled) {
+	public void logAndSaveOriginalException(DelegateExecution execution, isDebugLogEnabled) {
 		logWorkflowException(execution, 'CreateVfModuleVolumeInfraV1 caught an event')
 		saveWorkflowException(execution, 'CVMVINFRAV1_originalWorkflowException')
 	}
 	
-	public void validateRollbackResponse(Execution execution, isDebugLogEnabled) {
+	public void validateRollbackResponse(DelegateExecution execution, isDebugLogEnabled) {
 
 		def originalException = execution.getVariable("CVMVINFRAV1_originalWorkflowException")
 		execution.setVariable("WorkflowException", originalException)
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateVnfInfra.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateVnfInfra.groovy
index 1c98b87..24487d5 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateVnfInfra.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateVnfInfra.groovy
@@ -23,7 +23,7 @@
 import java.util.UUID;
 
 import org.camunda.bpm.engine.delegate.BpmnError
-import org.camunda.bpm.engine.runtime.Execution;
+import org.camunda.bpm.engine.delegate.DelegateExecution;
 
 import static org.apache.commons.lang3.StringUtils.*;
 import org.openecomp.mso.bpmn.common.scripts.CatalogDbUtils;
@@ -38,6 +38,7 @@
 import org.openecomp.mso.bpmn.core.WorkflowException
 import org.openecomp.mso.bpmn.core.domain.VnfResource
 import org.openecomp.mso.bpmn.core.json.JsonUtils;
+import org.openecomp.mso.bpmn.infrastructure.aai.AAICreateResources;
 
 
 /**
@@ -52,6 +53,7 @@
 	JsonUtils jsonUtil = new JsonUtils()
 	VidUtils vidUtils = new VidUtils(this)
 	CatalogDbUtils cutils = new CatalogDbUtils()
+	AAICreateResources aaiCR = new AAICreateResources()
 
 	/**
 	 * This method gets and validates the incoming
@@ -60,7 +62,7 @@
 	 * @param - execution
 	 *
 	 */
-	public void preProcessRequest(Execution execution) {
+	public void preProcessRequest(DelegateExecution execution) {
 		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 		utils.log("DEBUG", " *** STARTED CreateVnfInfra PreProcessRequest Process*** ", isDebugEnabled)
@@ -191,7 +193,7 @@
 		utils.log("DEBUG", "*** COMPLETED CreateVnfInfra PreProcessRequest Process ***", isDebugEnabled)
 	}
 
-	public void sendSyncResponse (Execution execution) {
+	public void sendSyncResponse (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 
@@ -218,7 +220,7 @@
 	}
 
 	
-	public void preProcessSDNCAssignRequest(Execution execution){
+	public void preProcessSDNCAssignRequest(DelegateExecution execution){
 		def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix", Prefix)
 		logDebug(" ======== STARTED preProcessSDNCAssignRequest ======== ", isDebugLogEnabled)
@@ -244,7 +246,7 @@
 		logDebug("======== COMPLETED preProcessSDNCAssignRequest ======== ", isDebugLogEnabled)
 	}
 	
-	public void preProcessSDNCActivateRequest(Execution execution) {
+	public void preProcessSDNCActivateRequest(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.preProcessSDNCActivateRequest(' +
 			'execution=' + execution.getId() +
 			')'
@@ -269,7 +271,7 @@
 		logDebug("======== COMPLETED  preProcessSDNCActivateRequest Process ======== ", isDebugLogEnabled)
 	}
 	
-	public String buildSDNCRequest(Execution execution, String svcInstId, String action){
+	public String buildSDNCRequest(DelegateExecution execution, String svcInstId, String action){
 		
 				String uuid = execution.getVariable('testReqId') // for junits
 				if(uuid==null){
@@ -332,7 +334,7 @@
 			return sdncRequest		
 	}
 		
-	public void validateSDNCResponse(Execution execution, String response, String method){
+	public void validateSDNCResponse(DelegateExecution execution, String response, String method){
 		def isDebugLogEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 		logDebug(" *** STARTED ValidateSDNCResponse Process*** ", isDebugLogEnabled)
@@ -358,7 +360,7 @@
 		logDebug(" *** COMPLETED ValidateSDNCResponse Process*** ", isDebugLogEnabled)
 	}
 
-	public void prepareCompletionHandlerRequest(Execution execution){
+	public void prepareCompletionHandlerRequest(DelegateExecution execution){
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 
@@ -391,7 +393,7 @@
 		utils.log("DEBUG", "*** COMPLETED CreateVnfInfra PrepareCompletionHandlerRequest Process ***", isDebugEnabled)
 	}
 
-	public void sendErrorResponse(Execution execution){
+	public void sendErrorResponse(DelegateExecution execution){
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 
@@ -416,7 +418,7 @@
 		utils.log("DEBUG", "*** COMPLETED CreateVnfInfra sendErrorResponse Process ***", isDebugEnabled)
 	}
 
-	public void prepareFalloutRequest(Execution execution){
+	public void prepareFalloutRequest(DelegateExecution execution){
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 
@@ -442,7 +444,7 @@
 	}
 
 	
-	public void queryCatalogDB (Execution execution) {
+	public void queryCatalogDB (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 
@@ -455,8 +457,7 @@
 						
 			JSONArray vnfs = cutils.getAllVnfsByVnfModelCustomizationUuid(execution,
 							vnfModelCustomizationUuid, "v2")
-			utils.log("DEBUG", "obtained VNF list: " + vnfs, isDebugEnabled)			
-			execution.setVariable("CREVI_vnfs", vnfs)
+			utils.log("DEBUG", "obtained VNF list: " + vnfs, isDebugEnabled)
 			
 			if (vnfs == null) {
 				utils.log("ERROR", "No matching VNFs in Catalog DB for vnfModelCustomizationUuid=" + vnfModelCustomizationUuid, isDebugEnabled)
@@ -493,4 +494,58 @@
 		
 		utils.log("DEBUG", "*** COMPLETED CreateVnfInfra QueryCatalogDb Process ***", isDebugEnabled)
 	}
+	public void createPlatform (DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG"," ***** START createPlatform *****",  isDebugEnabled)
+		
+		String request = execution.getVariable("bpmnRequest")
+		String platformName = jsonUtil.getJsonValue(request, "requestDetails.platform.platformName")
+		String vnfId = execution.getVariable("CREVI_vnfId")
+	
+		utils.log("DEBUG","Platform NAME: " + platformName, isDebugEnabled)
+		utils.log("DEBUG","VnfID: " + vnfId, isDebugEnabled)
+		
+		if(platformName == null||platformName.equals("")){
+			String msg = "Exception in createPlatform. platformName was not found in the request.";
+			utils.log("DEBUG", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}else{
+			utils.log("DEBUG", "platformName was found.", isDebugEnabled)
+			try{
+				AAICreateResources aaiCR = new AAICreateResources()
+				aaiCR.createAAIPlatform(platformName, vnfId)
+			}catch(Exception ex){
+				String msg = "Exception in createPlatform. " + ex.getMessage();
+				utils.log("DEBUG", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+			}
+		}
+		utils.log("DEBUG"," *** Exit createPlatform *** ", isDebugEnabled)
+	}
+	public void createLineOfBusiness (DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG"," ***** START createLineOfBusiness *****",  isDebugEnabled)
+		
+		String request = execution.getVariable("bpmnRequest")
+		String lineOfBusiness = jsonUtil.getJsonValue(request, "requestDetails.lineOfBusiness.lineOfBusinessName")
+		String vnfId = execution.getVariable("CREVI_vnfId")
+	
+		utils.log("DEBUG","LineOfBusiness NAME: " + lineOfBusiness, isDebugEnabled)
+		utils.log("DEBUG","VnfID: " + vnfId, isDebugEnabled)
+		
+		if(lineOfBusiness == null || lineOfBusiness.equals("")){
+			utils.log("DEBUG", "LineOfBusiness was not found. Continuing on with flow...", isDebugEnabled)
+		}else{
+			utils.log("DEBUG", "LineOfBusiness was found.", isDebugEnabled)
+			try{
+				AAICreateResources aaiCR = new AAICreateResources()
+				aaiCR.createAAILineOfBusiness(lineOfBusiness, vnfId)
+			}catch(Exception ex){
+				String msg = "Exception in LineOfBusiness. " + ex.getMessage();
+				utils.log("DEBUG", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+			}
+		}
+		utils.log("DEBUG"," *** Exit createLineOfBusiness *** ", isDebugEnabled)
+	}
 }
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteCustomE2EServiceInstance.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteCustomE2EServiceInstance.groovy
index 49e4cc9..d4b8531 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteCustomE2EServiceInstance.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteCustomE2EServiceInstance.groovy
@@ -35,7 +35,7 @@
 import javax.xml.parsers.DocumentBuilderFactory
 
 import org.camunda.bpm.engine.delegate.BpmnError
-import org.camunda.bpm.engine.runtime.Execution
+import org.camunda.bpm.engine.delegate.DelegateExecution
 import org.json.JSONObject;
 import org.apache.commons.lang3.*
 import org.apache.commons.codec.binary.Base64;
@@ -59,7 +59,7 @@
 	JsonUtils jsonUtil = new JsonUtils()
 	VidUtils vidUtils = new VidUtils()
 	
-	public void preProcessRequest (Execution execution) {
+	public void preProcessRequest (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 		String msg = ""
@@ -81,17 +81,36 @@
 				msg = "Input serviceInstanceId' is null"
 				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
 			}
-						
-			String serviceType = execution.getVariable("serviceType")
-			if (isBlank(serviceType)) {
-				msg = "Input serviceType' is null"
-				utils.log("INFO", msg, isDebugEnabled)
-			} else {
-				execution.setVariable("serviceType", serviceType)
+		
+			//String xmlRequestDetails = vidUtils.getJsonRequestDetailstoXml(siRequest)
+			//execution.setVariable("requestDetails", xmlRequestDetails)
+			
+			//modelInfo
+			String serviceModelInfo = jsonUtil.getJsonValue(siRequest, "requestDetails.modelInfo")
+			if (isBlank(serviceModelInfo)) {
+				msg = "Input serviceModelInfo is null"
+				utils.log("DEBUG", msg, isDebugEnabled)
+			} else
+			{
+				execution.setVariable("serviceModelInfo", serviceModelInfo)
+				//utils.log("DEBUG", "modelInfo" + serviceModelInfo,  isDebugEnabled)
 			}
 			
+			//requestInfo
+			String productFamilyId = jsonUtil.getJsonValue(siRequest, "requestDetails.requestInfo.productFamilyId")
+			if (isBlank(productFamilyId))
+			{
+				msg = "Input productFamilyId is null"
+				utils.log("INFO", msg, isDebugEnabled)
+				//exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			} else {
+				execution.setVariable("productFamilyId", productFamilyId)
+			}
+			String source = jsonUtil.getJsonValue(siRequest, "requestDetails.requestInfo.source")
+			execution.setVariable("source", source)
+			
 			//subscriberInfo
-			String globalSubscriberId = jsonUtil.getJsonValue(siRequest, "globalSubscriberId")
+			String globalSubscriberId = jsonUtil.getJsonValue(siRequest, "requestDetails.subscriberInfo.globalSubscriberId")
 			if (isBlank(globalSubscriberId)) {
 				msg = "Input globalSubscriberId' is null"
 				utils.log("INFO", msg, isDebugEnabled)
@@ -99,16 +118,38 @@
 				execution.setVariable("globalSubscriberId", globalSubscriberId)
 			}
 			
-			//operationId
-			String operationId = jsonUtil.getJsonValue(siRequest, "operationId")
-		 	if (isBlank(operationId)) {
-		 		operationId = UUID.randomUUID().toString()
-		 	 }   
-			execution.setVariable("operationId", operationId) 
+			//requestParameters
+			String subscriptionServiceType = jsonUtil.getJsonValue(siRequest, "requestDetails.requestParameters.subscriptionServiceType")
+			if (isBlank(subscriptionServiceType)) {
+				msg = "Input subscriptionServiceType is null"
+				utils.log("DEBUG", msg, isDebugEnabled)
+				//exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+			} else {
+				execution.setVariable("subscriptionServiceType", subscriptionServiceType)
+			}
+			
+			/*
+			 * Extracting User Parameters from incoming Request and converting into a Map
+			 */
+			def jsonSlurper = new JsonSlurper()
+			def jsonOutput = new JsonOutput()
+
+			Map reqMap = jsonSlurper.parseText(siRequest)
+
+			//InputParams
+			def userParams = reqMap.requestDetails?.requestParameters?.userParams
+
+			Map<String, String> inputMap = [:]
+			if (userParams) {
+				userParams.each {
+					userParam -> inputMap.put(userParam.name, userParam.value.toString())
+				}
+			}
 			execution.setVariable("operationType", "DELETE") 
 			
-			execution.setVariable("URN_mso_adapters_openecomp_db_endpoint","http://mso.mso.testlab.openecomp.org:8080/dbadapters/RequestsDbAdapter")
-			
+			utils.log("DEBUG", "User Input Parameters map: " + userParams.toString(), isDebugEnabled)
+			execution.setVariable("serviceInputParams", inputMap)
+
 		} catch (BpmnError e) {
 			throw e;
 		} catch (Exception ex){
@@ -119,15 +160,16 @@
 		utils.log("INFO"," ***** Exit preProcessRequest *****",  isDebugEnabled)
 	}
 
-	public void sendSyncResponse (Execution execution) {
+	public void sendSyncResponse (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		utils.log("INFO", " *** sendSyncResponse  *** ", isDebugEnabled)
 
 		try {
-			String operationId = execution.getVariable("operationId")
-			
-			// RESTResponse (for API Handler (APIH) Reply Task) :  :  
-			String syncResponse = """{"operationId":"${operationId}"}""".trim()
+			String requestId = execution.getVariable("msoRequestId")
+			String serviceInstanceId = execution.getVariable("serviceInstanceId")
+
+			// RESTResponse (for API Handler (APIH) Reply Task)
+			String syncResponse = """{"requestReferences":{"instanceId":"${serviceInstanceId}","requestId":"${requestId}"}}""".trim()
 			utils.log("INFO", " sendSynchResponse: xmlSyncResponse - " + "\n" + syncResponse, isDebugEnabled)
 			sendWorkflowResponse(execution, 202, syncResponse)
 
@@ -138,7 +180,7 @@
 		utils.log("INFO"," ***** Exit sendSyncResopnse *****",  isDebugEnabled)
 	}
 	
-	public void sendSyncError (Execution execution) {
+	public void sendSyncError (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		utils.log("INFO", " *** sendSyncError *** ", isDebugEnabled)
 
@@ -166,7 +208,7 @@
 
 	}
 	
-	public void prepareCompletionRequest (Execution execution) {
+	public void prepareCompletionRequest (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		utils.log("INFO", " *** prepareCompletion *** ", isDebugEnabled)
 
@@ -199,7 +241,7 @@
 		utils.log("INFO", "*** Exit prepareCompletionRequest ***", isDebugEnabled)
 	}
 	
-	public void prepareFalloutRequest(Execution execution){
+	public void prepareFalloutRequest(DelegateExecution execution){
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		utils.log("INFO", " *** prepareFalloutRequest *** ", isDebugEnabled)
 
@@ -245,7 +287,7 @@
 	// *******************************
 	//     Build DB request Section
 	// *******************************
-	public void prepareDBRequest (Execution execution) {
+	public void prepareDBRequest (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix", Prefix)
 
@@ -287,7 +329,7 @@
 	// *******************************
 	//     Build Error Section
 	// *******************************
-	public void prepareDBRequestError (Execution execution) {
+	public void prepareDBRequestError (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix", Prefix)
 
@@ -332,7 +374,7 @@
 
 	 }
 
-	public void processJavaException(Execution execution) {
+	public void processJavaException(DelegateExecution execution) {
 		//TODO:
 	}
 }
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteGenericALaCarteServiceInstance.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteGenericALaCarteServiceInstance.groovy
index abf949e..c731a61 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteGenericALaCarteServiceInstance.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteGenericALaCarteServiceInstance.groovy
@@ -34,7 +34,7 @@
 import javax.xml.parsers.DocumentBuilderFactory
 
 import org.camunda.bpm.engine.delegate.BpmnError
-import org.camunda.bpm.engine.runtime.Execution
+import org.camunda.bpm.engine.delegate.DelegateExecution
 import org.json.JSONObject;
 import org.apache.commons.lang3.*
 import org.apache.commons.codec.binary.Base64;
@@ -58,7 +58,7 @@
 	JsonUtils jsonUtil = new JsonUtils()
 	VidUtils vidUtils = new VidUtils()
 	
-	public void preProcessRequest (Execution execution) {
+	public void preProcessRequest (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 		String msg = ""
@@ -141,7 +141,7 @@
 			Map<String, String> inputMap = [:]
 			if (userParams) {
 				userParams.each {
-					userParam -> inputMap.put(userParam.name, userParam.value)
+					userParam -> inputMap.put(userParam.name, userParam.value.toString())
 				}
 			}
 			
@@ -158,7 +158,7 @@
 		utils.log("DEBUG"," ***** Exit preProcessRequest *****",  isDebugEnabled)
 	}
 
-	public void sendSyncResponse (Execution execution) {
+	public void sendSyncResponse (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		utils.log("DEBUG", " *** sendSyncResponse  *** ", isDebugEnabled)
 
@@ -178,7 +178,7 @@
 		utils.log("DEBUG"," ***** Exit sendSyncResopnse *****",  isDebugEnabled)
 	}
 	
-	public void sendSyncError (Execution execution) {
+	public void sendSyncError (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		utils.log("DEBUG", " *** sendSyncError *** ", isDebugEnabled)
 
@@ -206,7 +206,7 @@
 
 	}
 	
-	public void prepareCompletionRequest (Execution execution) {
+	public void prepareCompletionRequest (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		utils.log("DEBUG", " *** prepareCompletion *** ", isDebugEnabled)
 
@@ -239,7 +239,7 @@
 		utils.log("DEBUG", "*** Exit prepareCompletionRequest ***", isDebugEnabled)
 	}
 	
-	public void prepareFalloutRequest(Execution execution){
+	public void prepareFalloutRequest(DelegateExecution execution){
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		utils.log("DEBUG", " *** prepareFalloutRequest *** ", isDebugEnabled)
 
@@ -285,7 +285,7 @@
 	// *******************************
 	//     Build DB request Section
 	// *******************************
-	public void prepareDBRequest (Execution execution) {
+	public void prepareDBRequest (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix", Prefix)
 
@@ -327,7 +327,7 @@
 	// *******************************
 	//     Build Error Section
 	// *******************************
-	public void prepareDBRequestError (Execution execution) {
+	public void prepareDBRequestError (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix", Prefix)
 
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteNetworkInstance.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteNetworkInstance.groovy
index dab1892..a9aef7f 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteNetworkInstance.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteNetworkInstance.groovy
@@ -29,7 +29,7 @@
 import org.openecomp.mso.rest.APIResponse
 import java.util.UUID;
 import org.camunda.bpm.engine.delegate.BpmnError
-import org.camunda.bpm.engine.runtime.Execution
+import org.camunda.bpm.engine.delegate.DelegateExecution
 import org.apache.commons.lang3.*
 import org.apache.commons.codec.binary.Base64;
 import org.springframework.web.util.UriUtils
@@ -45,7 +45,7 @@
 	NetworkUtils networkUtils = new NetworkUtils()
 
 
-	public InitializeProcessVariables(Execution execution){
+	public InitializeProcessVariables(DelegateExecution execution){
 		
 		execution.setVariable(Prefix + "Success", false)
 		
@@ -59,7 +59,7 @@
 	//     Pre or Prepare Request Section
 	// **************************************************
 
-	public void preProcessRequest (Execution execution) {
+	public void preProcessRequest (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 
@@ -145,7 +145,7 @@
 
 	}
 
-	public void getNetworkModelInfo (Execution execution) {
+	public void getNetworkModelInfo (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix", Prefix)
 
@@ -169,7 +169,7 @@
 
 	}
 	
-	public void sendSyncResponse (Execution execution) {
+	public void sendSyncResponse (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 
@@ -196,7 +196,7 @@
 
 	}
 
-	public void prepareCompletion (Execution execution) {
+	public void prepareCompletion (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 
@@ -236,7 +236,7 @@
 
 	}
 	
-	public void prepareDBRequestError (Execution execution) {
+	public void prepareDBRequestError (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix", Prefix)
 
@@ -284,7 +284,7 @@
 	//     Post or Validate Response Section
 	// **************************************************
 
-	public void postProcessResponse (Execution execution) {
+	public void postProcessResponse (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix", Prefix)
 	
@@ -318,7 +318,7 @@
 	// *******************************
 
 	// Prepare for FalloutHandler
-	public void buildErrorResponse (Execution execution) {
+	public void buildErrorResponse (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix", Prefix)
 
@@ -380,7 +380,7 @@
 	}
 
 
-	public void sendSyncError (Execution execution) {
+	public void sendSyncError (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix", Prefix)
 
@@ -400,7 +400,7 @@
 		}
 	}
 
-	public void processJavaException(Execution execution){
+	public void processJavaException(DelegateExecution execution){
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 		try{
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteVfModuleInfra.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteVfModuleInfra.groovy
index c4c151f..0aef817 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteVfModuleInfra.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteVfModuleInfra.groovy
@@ -27,7 +27,7 @@
 import java.io.Serializable;
 
 import org.camunda.bpm.engine.delegate.BpmnError
-import org.camunda.bpm.engine.runtime.Execution
+import org.camunda.bpm.engine.delegate.DelegateExecution
 
 import groovy.json.JsonSlurper
 
@@ -49,7 +49,7 @@
 	 *
 	 * @param execution The flow's execution instance.
 	 */
-	public void initProcessVariables(Execution execution) {
+	public void initProcessVariables(DelegateExecution execution) {
 		execution.setVariable('prefix', 'DELVfModI_')
 		execution.setVariable('DELVfModI_requestInfo', null)
 		execution.setVariable('DELVfModI_requestId', null)
@@ -70,7 +70,7 @@
 	 *
 	 * @param execution The flow's execution instance.
 	 */
-	public void preProcessRequest(Execution execution) {
+	public void preProcessRequest(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.preProcessRequest(' +
 			'execution=' + execution.getId() +
 			')'
@@ -103,7 +103,10 @@
 
 			execution.setVariable("vfModuleModelInfo", vfModuleModelInfo)
 			utils.log("DEBUG", "VfModuleModelInfo is: " + vfModuleModelInfo, isDebugLogEnabled)
-
+			
+			// This is aLaCarte flow, so aLaCarte flag is always on
+			execution.setVariable('aLaCarte', true)
+			
 			def vidUtils = new VidUtils(this)
 
 			String requestInXmlFormat = vidUtils.createXmlVfModuleRequest(execution, reqMap, 'DELETE_VF_MODULE', serviceInstanceId)
@@ -165,7 +168,7 @@
 	 *
 	 * @param execution The flow's execution instance.
 	 */
-	public void sendSynchResponse(Execution execution) {
+	public void sendSynchResponse(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.sendResponse(' +
 			'execution=' + execution.getId() +
 			')'
@@ -208,7 +211,7 @@
 	 *
 	 * @param execution The flow's execution instance.
 	 */
-	public void prepDoDeleteVfModule(Execution execution) {
+	public void prepDoDeleteVfModule(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.prepDoDeleteVfModule(' +
 			'execution=' + execution.getId() +
 			')'
@@ -231,7 +234,7 @@
 	 *
 	 * @param execution The flow's execution instance.
 	 */
-	public void prepUpdateInfraRequest(Execution execution) {
+	public void prepUpdateInfraRequest(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.prepUpdateInfraRequest(' +
 			'execution=' + execution.getId() +
 			')'
@@ -280,7 +283,7 @@
 	 * @param execution the execution
 	 * @param resultVar the execution variable in which the result will be stored
 	 */
-	public void completionHandlerPrep(Execution execution, String resultVar) {
+	public void completionHandlerPrep(DelegateExecution execution, String resultVar) {
 		def method = getClass().getSimpleName() + '.completionHandlerPrep(' +
 			'execution=' + execution.getId() +
 			', resultVar=' + resultVar +
@@ -324,7 +327,7 @@
 	 * @param execution the execution
 	 * @param resultVar the execution variable in which the result will be stored
 	 */
-	public void falloutHandlerPrep(Execution execution, String resultVar) {
+	public void falloutHandlerPrep(DelegateExecution execution, String resultVar) {
 		def method = getClass().getSimpleName() + '.falloutHandlerPrep(' +
 			'execution=' + execution.getId() +
 			', resultVar=' + resultVar +
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteVfModuleVolumeInfraV1.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteVfModuleVolumeInfraV1.groovy
index 77a8f8e..5a38d9f 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteVfModuleVolumeInfraV1.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteVfModuleVolumeInfraV1.groovy
@@ -26,7 +26,7 @@
 
 import org.springframework.web.util.UriUtils
 import org.camunda.bpm.engine.delegate.BpmnError
-import org.camunda.bpm.engine.runtime.Execution
+import org.camunda.bpm.engine.delegate.DelegateExecution
 import org.apache.commons.lang3.*
 import org.openecomp.mso.bpmn.common.scripts.AaiUtil;
 import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor;
@@ -45,7 +45,7 @@
 	 * This method is executed during the preProcessRequest task of the <class>DeleteVfModuleVolume.bpmn</class> process.
 	 * @param execution
 	 */
-	public InitializeProcessVariables(Execution execution){
+	public InitializeProcessVariables(DelegateExecution execution){
 		execution.setVariable('prefix', 'DELVfModVol_')
 		execution.setVariable("DELVfModVol_volumeRequest", null)
 		execution.setVariable('DELVfModVol_requestInfo', null)
@@ -76,7 +76,7 @@
 	 * Perform initial processing, such as request validation, initialization of variables, etc.
 	 * * @param execution
 	 */
-	public void preProcessRequest (Execution execution) {
+	public void preProcessRequest (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		preProcessRequest(execution, isDebugEnabled)
 	}
@@ -85,7 +85,7 @@
 	 * This method is executed during the preProcessRequest task of the <class>DeleteVfModuleVolume.bpmn</class> process.
 	 * @param execution
 	 */
-	public void preProcessRequest (Execution execution, isDebugLogEnabled) {
+	public void preProcessRequest (DelegateExecution execution, isDebugLogEnabled) {
 
 		InitializeProcessVariables(execution)
 
@@ -137,7 +137,7 @@
 		logDebug('Request: ' + createVolumeIncoming, isDebugLogEnabled)
 	}
 
-	public void sendSyncResponse (Execution execution, isDebugEnabled) {
+	public void sendSyncResponse (DelegateExecution execution, isDebugEnabled) {
 
 		String volumeRequest = execution.getVariable("DELVfModVol_volumeRequest")
 		utils.log("DEBUG", " DELVfModVol_volumeRequest - " + "\n" + volumeRequest, isDebugEnabled)
@@ -169,7 +169,7 @@
 	}
 
 
-	public void sendSyncError (Execution execution, isDebugEnabled) {
+	public void sendSyncError (DelegateExecution execution, isDebugEnabled) {
 		WorkflowException we = execution.getVariable('WorkflowException')
 		def errorCode = we?.getErrorCode()
 		def errorMessage = we?.getErrorMessage()
@@ -178,7 +178,7 @@
 	}
 
 
-	public void callRESTQueryAAICloudRegion (Execution execution, isDebugEnabled) {
+	public void callRESTQueryAAICloudRegion (DelegateExecution execution, isDebugEnabled) {
 
 		String cloudRegion = execution.getVariable('DELVfModVol_cloudRegion')
 
@@ -216,7 +216,7 @@
 	 * Query volume group by id
 	 * @param execution
 	 */
-	public void queryAAIForVolumeGroup(Execution execution, isDebugLogEnabled) {
+	public void queryAAIForVolumeGroup(DelegateExecution execution, isDebugLogEnabled) {
 
 		ExceptionUtil exceptionUtil = new ExceptionUtil()
 
@@ -343,7 +343,7 @@
 		return false
 	}
 
-	public void prepareVnfAdapterDeleteRequest(Execution execution, isDebugLogEnabled) {
+	public void prepareVnfAdapterDeleteRequest(DelegateExecution execution, isDebugLogEnabled) {
 		def cloudRegion = execution.getVariable('DELVfModVol_cloudRegion')
 		def tenantId = execution.getVariable('DELVfModVol_tenantId')
 		def volumeGroupId = execution.getVariable('DELVfModVol_volumeGroupId')
@@ -379,7 +379,7 @@
 	}
 
 
-	public void deleteVolGrpId(Execution execution, isDebugEnabled) {
+	public void deleteVolGrpId(DelegateExecution execution, isDebugEnabled) {
 
 		// get variables
 		String queryAAIVolGrpIdResponse = execution.getVariable("DELVfModVol_queryAAIVolGrpResponse")
@@ -422,7 +422,7 @@
 	}
 
 
-	public void prepareDBRequest (Execution execution, isDebugLogEnabled) {
+	public void prepareDBRequest (DelegateExecution execution, isDebugLogEnabled) {
 
 		WorkflowException workflowExceptionObj = execution.getVariable("WorkflowException")
 		ExceptionUtil exceptionUtil = new ExceptionUtil();
@@ -464,7 +464,7 @@
 	}
 
 
-	public void prepareCompletionHandlerRequest (Execution execution, isDebugLogEnabled) {
+	public void prepareCompletionHandlerRequest (DelegateExecution execution, isDebugLogEnabled) {
 		def requestId = execution.getVariable("mso-request-id")
 		def source = execution.getVariable("DELVfModVol_source")
 
@@ -488,7 +488,7 @@
 
 
 
-	public void prepareFalloutHandler (Execution execution, isDebugEnabled) {
+	public void prepareFalloutHandler (DelegateExecution execution, isDebugEnabled) {
 
 		execution.setVariable("DELVfModVol_Success", false)
 		String requestId = execution.getVariable("DELVfModVol_requestId")
@@ -529,7 +529,7 @@
 	 *
 	 * @param execution The flow's execution instance.
 	 */
-	public void handleTenantIdMismatch(Execution execution, isDebugLogEnabled) {
+	public void handleTenantIdMismatch(DelegateExecution execution, isDebugLogEnabled) {
 
 		def volumeGroupId = execution.getVariable('DELVfModVol_volumeGroupId')
 		def aicCloudRegion = execution.getVariable('DELVfModVol_aicCloudRegion')
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteVnfInfra.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteVnfInfra.groovy
index f1911ac..c789769 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteVnfInfra.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteVnfInfra.groovy
@@ -26,7 +26,7 @@
 
 import org.apache.commons.lang3.*
 import org.camunda.bpm.engine.delegate.BpmnError
-import org.camunda.bpm.engine.runtime.Execution
+import org.camunda.bpm.engine.delegate.DelegateExecution
 import org.w3c.dom.Document
 import org.w3c.dom.Element
 import org.w3c.dom.Node
@@ -59,7 +59,7 @@
 	 *
 	 * @param - execution
 	 */
-	public void preProcessRequest(Execution execution) {
+	public void preProcessRequest(DelegateExecution execution) {
 		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 		utils.log("DEBUG", " *** STARTED DeleteVnfInfra PreProcessRequest Process*** ", isDebugEnabled)
@@ -129,7 +129,7 @@
 		utils.log("DEBUG", "*** COMPLETED DeleteVnfInfra PreProcessRequest Process ***", isDebugEnabled)
 	}
 
-	public void sendSyncResponse (Execution execution) {
+	public void sendSyncResponse (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 
@@ -154,7 +154,7 @@
 		utils.log("DEBUG", "*** COMPLETED DeleteVnfInfra SendSyncResponse Process ***", isDebugEnabled)
 	}
 
-	public void prepareCompletionHandlerRequest(Execution execution){
+	public void prepareCompletionHandlerRequest(DelegateExecution execution){
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 
@@ -187,7 +187,7 @@
 		utils.log("DEBUG", "*** COMPLETED DeleteVnfInfra PrepareCompletionHandlerRequest Process ***", isDebugEnabled)
 	}
 
-	public void sendErrorResponse(Execution execution){
+	public void sendErrorResponse(DelegateExecution execution){
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 
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 fd9b6d4..1f63216 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
@@ -51,7 +51,7 @@
 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
 import org.json.JSONObject;
 import org.json.JSONArray;
 import org.apache.commons.lang3.*
@@ -90,7 +90,7 @@
 	JsonUtils jsonUtil = new JsonUtils()
 	CatalogDbUtils cutils = new CatalogDbUtils()
 
-	public void preProcessRequest (Execution execution) {
+	public void preProcessRequest (DelegateExecution execution) {
 		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
 		String msg = ""
 		utils.log("INFO"," ***** preProcessRequest *****",  isDebugEnabled)
@@ -185,7 +185,7 @@
 		utils.log("INFO"," ***** Exit preProcessRequest *****",  isDebugEnabled)
 	}
 	
-   public void prepareDecomposeService(Execution execution) {
+   public void prepareDecomposeService(DelegateExecution execution) {
         def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 
         try {
@@ -208,7 +208,7 @@
         }
      }
 
-    public void processDecomposition (Execution execution) {
+    public void processDecomposition(DelegateExecution execution) {
         def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
     
         utils.log("DEBUG", " ***** Inside processDecomposition() of  create generic e2e service flow ***** ", isDebugEnabled)    
@@ -221,11 +221,11 @@
         }
     }
     
-    public void doServiceHoming(Execution execution) {
+    public void doServiceHoming(DelegateExecution execution) {
         //Now Homing is not clear. So to be implemented.
     }
     
-	public void postProcessAAIGET(Execution execution) {
+	public void postProcessAAIGET(DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		utils.log("INFO"," ***** postProcessAAIGET ***** ", isDebugEnabled)
 		String msg = ""
@@ -267,7 +267,7 @@
 		utils.log("INFO"," *** Exit postProcessAAIGET *** ", isDebugEnabled)
 	}
 
-	public void postProcessAAIPUT(Execution execution) {
+	public void postProcessAAIPUT(DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		utils.log("INFO"," ***** postProcessAAIPUT ***** ", isDebugEnabled)
 		String msg = ""
@@ -305,7 +305,7 @@
 		utils.log("INFO"," *** Exit postProcessAAIPUT *** ", isDebugEnabled)
 	}
 	
-	public void postProcessAAIGET2(Execution execution) {
+	public void postProcessAAIGET2(DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		utils.log("INFO"," ***** postProcessAAIGET2 ***** ", isDebugEnabled)
 		String msg = ""
@@ -348,7 +348,7 @@
 		utils.log("INFO"," *** Exit postProcessAAIGET2 *** ", isDebugEnabled)
 	}
 
-	public void preProcessRollback (Execution execution) {
+	public void preProcessRollback (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		utils.log("INFO"," ***** preProcessRollback ***** ", isDebugEnabled)
 		try {
@@ -369,7 +369,7 @@
 		utils.log("INFO"," *** Exit preProcessRollback *** ", isDebugEnabled)
 	}
 
-	public void postProcessRollback (Execution execution) {
+	public void postProcessRollback (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		utils.log("INFO"," ***** postProcessRollback ***** ", isDebugEnabled)
 		String msg = ""
@@ -390,7 +390,7 @@
 		utils.log("INFO"," *** Exit postProcessRollback *** ", isDebugEnabled)
 	}
 
-	public void preInitResourcesOperStatus(Execution execution){
+	public void preInitResourcesOperStatus(DelegateExecution execution){
         def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
 
         utils.log("INFO", " ======== STARTED preInitResourcesOperStatus Process ======== ", isDebugEnabled)
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateE2EServiceInstanceRollback.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateE2EServiceInstanceRollback.groovy
index 743eb1a..84dd0e4 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateE2EServiceInstanceRollback.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateE2EServiceInstanceRollback.groovy
@@ -37,7 +37,7 @@
 import java.util.UUID;
 
 import org.camunda.bpm.engine.delegate.BpmnError
-import org.camunda.bpm.engine.runtime.Execution
+import org.camunda.bpm.engine.delegate.DelegateExecution
 import org.json.JSONObject;
 import org.apache.commons.lang3.*
 import org.apache.commons.codec.binary.Base64;
@@ -66,7 +66,7 @@
 
 	String Prefix="DCRESIRB_"
 
-	public void preProcessRequest(Execution execution) {
+	public void preProcessRequest(DelegateExecution execution) {
 		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 		String msg = ""
@@ -136,7 +136,7 @@
 		utils.log("DEBUG"," ***** Exit preProcessRequest *****",  isDebugEnabled)
 	}
 
-	public void validateSDNCResponse(Execution execution, String response, String method) {
+	public void validateSDNCResponse(DelegateExecution execution, String response, String method) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		utils.log("DEBUG"," ***** validateSDNCResponse ***** ", isDebugEnabled)
 		String msg = ""
@@ -169,7 +169,7 @@
 		utils.log("DEBUG"," ***** Exit validateSDNCResponse ***** ", isDebugEnabled)
 	}
 
-	public void postProcessRequest(Execution execution) {
+	public void postProcessRequest(DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		utils.log("DEBUG"," ***** postProcessRequest ***** ", isDebugEnabled)
 		String msg = ""
@@ -203,7 +203,7 @@
 
 	}
 
-	public void processRollbackException(Execution execution){
+	public void processRollbackException(DelegateExecution execution){
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		utils.log("DEBUG"," ***** processRollbackException ***** ", isDebugEnabled)
 		try{
@@ -221,7 +221,7 @@
 		utils.log("DEBUG", " Exit processRollbackException", isDebugEnabled)
 	}
 
-	public void processRollbackJavaException(Execution execution){
+	public void processRollbackJavaException(DelegateExecution execution){
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		utils.log("DEBUG"," ***** processRollbackJavaException ***** ", isDebugEnabled)
 		try{
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateE2EServiceInstanceV2.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateE2EServiceInstanceV2.groovy
index ea29de9..2d96ac7 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateE2EServiceInstanceV2.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateE2EServiceInstanceV2.groovy
@@ -21,33 +21,22 @@
 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.domain.ServiceDecomposition
-import org.openecomp.mso.bpmn.core.domain.ServiceInstance
-import org.openecomp.mso.bpmn.core.domain.ModelInfo
-import org.openecomp.mso.bpmn.core.json.JsonUtils
+import org.apache.commons.lang3.*
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.delegate.DelegateExecution
+import org.json.JSONArray;
+import org.json.JSONObject;
 import org.openecomp.mso.bpmn.common.scripts.AaiUtil
 import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor
 import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil
-import org.openecomp.mso.bpmn.common.scripts.SDNCAdapterUtils
 import org.openecomp.mso.bpmn.core.RollbackData
 import org.openecomp.mso.bpmn.core.WorkflowException
-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.runtime.Execution
-import org.json.JSONObject;
-import org.json.JSONArray;
-import org.apache.commons.lang3.*
-import org.apache.commons.codec.binary.Base64;
+import org.openecomp.mso.bpmn.core.json.JsonUtils
 import org.springframework.web.util.UriUtils;
 
+import groovy.json.*
+
 /**
  * This groovy class supports the <class>DoCreateServiceInstance.bpmn</class> process.
  *
@@ -81,7 +70,7 @@
 	ExceptionUtil exceptionUtil = new ExceptionUtil()
 	JsonUtils jsonUtil = new JsonUtils()
 
-	public void preProcessRequest (Execution execution) {
+	public void preProcessRequest (DelegateExecution execution) {
 	    //only for dug
 		execution.setVariable("isDebugLogEnabled","true")
 		execution.setVariable("unit_test", "true")
@@ -217,7 +206,7 @@
 		utils.log("INFO", "Exited " + method, isDebugEnabled)
 	}
 
-	public void postProcessAAIGET(Execution execution) {
+	public void postProcessAAIGET(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.postProcessAAIGET(' +'execution=' + execution.getId() +')'
 		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
 		utils.log("INFO","Entered " + method, isDebugEnabled)
@@ -261,7 +250,7 @@
 		utils.log("INFO", "Exited " + method, isDebugEnabled)
 	}
 
-	public void postProcessAAIPUT(Execution execution) {
+	public void postProcessAAIPUT(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.postProcessAAIPUT(' +'execution=' + execution.getId() +')'
 		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
 		utils.log("INFO","Entered " + method, isDebugEnabled)
@@ -301,7 +290,7 @@
 		utils.log("INFO", "Exited " + method, isDebugEnabled)
 	}
 	
-	public void postProcessAAIGET2(Execution execution) {
+	public void postProcessAAIGET2(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.postProcessAAIGET2(' +'execution=' + execution.getId() +')'
 		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
 		utils.log("INFO","Entered " + method, isDebugEnabled)
@@ -346,7 +335,7 @@
 		utils.log("INFO", "Exited " + method, isDebugEnabled)
 	}
 
-	public void preProcessRollback (Execution execution) {
+	public void preProcessRollback (DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.preProcessRollback(' +'execution=' + execution.getId() +')'
 		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
 		utils.log("INFO","Entered " + method, isDebugEnabled)
@@ -369,7 +358,7 @@
 		utils.log("INFO", "Exited " + method, isDebugEnabled)
 	}
 
-	public void postProcessRollback (Execution execution) {
+	public void postProcessRollback (DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.postProcessRollback(' +'execution=' + execution.getId() +')'
 		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
 		utils.log("INFO","Entered " + method, isDebugEnabled)
@@ -395,7 +384,7 @@
 	/**
 	 * Init the service Operation Status
 	 */
-	public void preUpdateServiceOperationStatus(Execution execution){
+	public void preUpdateServiceOperationStatus(DelegateExecution execution){
         def method = getClass().getSimpleName() + '.preUpdateServiceOperationStatus(' +'execution=' + execution.getId() +')'
 		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
 		utils.log("INFO","Entered " + method, isDebugEnabled)
@@ -460,7 +449,7 @@
 	}
 	
 
-	public void preInitResourcesOperStatus(Execution execution){
+	public void preInitResourcesOperStatus(DelegateExecution execution){
         def method = getClass().getSimpleName() + '.preInitResourcesOperStatus(' +'execution=' + execution.getId() +')'
 		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
 		utils.log("INFO","Entered " + method, isDebugEnabled)
@@ -576,7 +565,7 @@
 	
     /***********************************************************************************************/
 
-	private void loadResourcesProperties(Execution execution) {
+	private void loadResourcesProperties(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.loadResourcesProperties(' +'execution=' + execution.getId() +')'
 		def isDebugEnabled = execution.getVariable("isDebugEnabled")
 		utils.log("INFO","Entered " + method, isDebugEnabled)
@@ -610,7 +599,7 @@
         }
 	    utils.log("INFO", "Exited " + method, isDebugEnabled)
 	}
-	private sortCreateResource(Execution execution) {
+	private sortCreateResource(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.sortCreateResource(' +'execution=' + execution.getId() +')'
 		def isDebugEnabled = execution.getVariable("isDebugEnabled")
 		utils.log("INFO","Entered " + method, isDebugEnabled)
@@ -714,7 +703,7 @@
 	/**
 	 * get service resources
 	 */
-	public void getServiceResources(Execution execution){
+	public void getServiceResources(DelegateExecution execution){
         def method = getClass().getSimpleName() + '.getServiceResources(' +'execution=' + execution.getId() +')'
 		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
 		utils.log("INFO","Entered " + method, isDebugEnabled)
@@ -758,7 +747,7 @@
 	/**
 	 * prepare Decompose next resource to create request
 	 */
-	public void preProcessDecomposeNextResource(Execution execution){
+	public void preProcessDecomposeNextResource(DelegateExecution execution){
         def method = getClass().getSimpleName() + '.preProcessDecomposeNextResource(' +'execution=' + execution.getId() +')'
 		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
 		utils.log("INFO","Entered " + method, isDebugEnabled)
@@ -808,7 +797,7 @@
 	/**
 	 * post Decompose next resource to create request
 	 */
-	public void postProcessDecomposeNextResource(Execution execution){
+	public void postProcessDecomposeNextResource(DelegateExecution execution){
         def method = getClass().getSimpleName() + '.postProcessDecomposeNextResource(' +'execution=' + execution.getId() +')'
 		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
 		utils.log("INFO","Entered " + method, isDebugEnabled)
@@ -849,7 +838,7 @@
 	/**
 	* prepare check Resource Type 
 	*/
-	public void checkResourceType(Execution execution){
+	public void checkResourceType(DelegateExecution execution){
         def method = getClass().getSimpleName() + '.checkResourceType(' +'execution=' + execution.getId() +')'
 		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
 		utils.log("INFO","Entered " + method, isDebugEnabled)
@@ -966,7 +955,7 @@
 	/**
 	* prepare post Unkown Resource Type 
 	*/
-	public void postOtherControllerType(Execution execution){
+	public void postOtherControllerType(DelegateExecution execution){
         def method = getClass().getSimpleName() + '.postOtherControllerType(' +'execution=' + execution.getId() +')'
 		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
 		utils.log("INFO","Entered " + method, isDebugEnabled)
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateNetworkInstance.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateNetworkInstance.groovy
index e2bd1dd..7d21a06 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateNetworkInstance.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateNetworkInstance.groovy
@@ -38,7 +38,7 @@
 import java.util.UUID;
 
 import org.camunda.bpm.engine.delegate.BpmnError
-import org.camunda.bpm.engine.runtime.Execution
+import org.camunda.bpm.engine.delegate.DelegateExecution
 import org.apache.commons.lang3.*
 import org.apache.commons.codec.binary.Base64;
 import org.springframework.web.util.UriUtils
@@ -61,7 +61,7 @@
 	 * This method is executed during the preProcessRequest task of the <class>DoCreateNetworkInstance.bpmn</class> process.
 	 * @param execution
 	 */
-	public InitializeProcessVariables(Execution execution){
+	public InitializeProcessVariables(DelegateExecution execution){
 		/* Initialize all the process variables in this block */
 
 		execution.setVariable(Prefix + "networkRequest", "")
@@ -174,7 +174,7 @@
 	 * This method is executed during the preProcessRequest task of the <class>DoCreateNetworkInstance.bpmn</class> process.
 	 * @param execution
 	 */
-	public void preProcessRequest (Execution execution) {
+	public void preProcessRequest (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 		
@@ -312,7 +312,7 @@
 
 	}
 	
-	public void callRESTQueryAAINetworkName (Execution execution) {
+	public void callRESTQueryAAINetworkName (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 		
@@ -388,7 +388,7 @@
 
 	}
 
-	public void callRESTQueryAAICloudRegion (Execution execution) {
+	public void callRESTQueryAAICloudRegion (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 				
@@ -438,7 +438,7 @@
 
 	}
 
-	public void callRESTQueryAAINetworkId(Execution execution) {
+	public void callRESTQueryAAINetworkId(DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 
@@ -481,7 +481,7 @@
 			String aai_endpoint = execution.getVariable("URN_aai_endpoint")
 			AaiUtil aaiUriUtil = new AaiUtil(this)
 			String aai_uri = aaiUriUtil.getNetworkL3NetworkUri(execution)
-			String queryIdAAIRequest = "${aai_endpoint}${aai_uri}/" + networkId + "?depth=1"
+			String queryIdAAIRequest = "${aai_endpoint}${aai_uri}/" + networkId + "?depth=all"
 			utils.logAudit(queryIdAAIRequest)
 			execution.setVariable(Prefix + "queryIdAAIRequest", queryIdAAIRequest)
 			utils.log("DEBUG", Prefix + "queryIdAAIRequest - " + "\n" + queryIdAAIRequest, isDebugEnabled)
@@ -538,7 +538,7 @@
 
 	}
 
-	public void callRESTReQueryAAINetworkId(Execution execution) {
+	public void callRESTReQueryAAINetworkId(DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 
@@ -554,7 +554,7 @@
 			String aai_endpoint = execution.getVariable("URN_aai_endpoint")
 			AaiUtil aaiUriUtil = new AaiUtil(this)
 			String aai_uri = aaiUriUtil.getNetworkL3NetworkUri(execution)
-			String requeryIdAAIRequest = "${aai_endpoint}${aai_uri}/" + networkId + "?depth=1"
+			String requeryIdAAIRequest = "${aai_endpoint}${aai_uri}/" + networkId + "?depth=all"
 			utils.logAudit(requeryIdAAIRequest)
 			execution.setVariable(Prefix + "requeryIdAAIRequest", requeryIdAAIRequest)
 			utils.log("DEBUG", Prefix + "requeryIdAAIRequest - " + "\n" + requeryIdAAIRequest, isDebugEnabled)
@@ -614,7 +614,7 @@
 
 	}
 
-	public void callRESTQueryAAINetworkVpnBinding(Execution execution) {
+	public void callRESTQueryAAINetworkVpnBinding(DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 
@@ -686,9 +686,19 @@
 						utils.log("DEBUG", " AAI Query Vpn Binding Success REST Response, , vpnBinding #" + counting + " : " + "\n" + aaiResponseAsString, isDebugEnabled)
 
 						String routeTarget = ""
-						if (utils.nodeExists(aaiResponseAsString, "global-route-target")) {
-							routeTarget  = utils.getNodeText1(aaiResponseAsString, "global-route-target")
-							routeTargets += "<routeTargets>" + routeTarget + "</routeTargets>" + '\n'
+						String routeRole = ""
+						if (utils.nodeExists(aaiResponseAsString, "route-targets")) {
+							String aaiRouteTargets = utils.getNodeXml(aaiResponseAsString, "route-targets", false)
+							def aaiRouteTargetsXml = new XmlSlurper().parseText(aaiRouteTargets)
+							def aaiRouteTarget = aaiRouteTargetsXml.'**'.findAll {it.name() == "route-target"}
+							for (j in 0..aaiRouteTarget.size()-1) {
+								routeTarget  = utils.getNodeText1(XmlUtil.serialize(aaiRouteTarget[j]), "global-route-target")
+								routeRole  = utils.getNodeText1(XmlUtil.serialize(aaiRouteTarget[j]), "route-target-role")
+								routeTargets += "<routeTargets>" + '\n' +
+								                " <routeTarget>" + routeTarget + "</routeTarget>" + '\n' +
+												" <routeTargetRole>" + routeRole + "</routeTargetRole>" + '\n' +
+												"</routeTargets>" + '\n'
+							}
 						}
 
 					} else {
@@ -748,7 +758,7 @@
 
 	}
 
-	public void callRESTQueryAAINetworkPolicy(Execution execution) {
+	public void callRESTQueryAAINetworkPolicy(DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 
@@ -884,7 +894,7 @@
 
 	}
 
-	public void callRESTQueryAAINetworkTableRef(Execution execution) {
+	public void callRESTQueryAAINetworkTableRef(DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 
@@ -1021,7 +1031,7 @@
 	}
 
 
-	public void callRESTUpdateContrailAAINetwork(Execution execution) {
+	public void callRESTUpdateContrailAAINetwork(DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 
@@ -1038,7 +1048,7 @@
 			String aai_endpoint = execution.getVariable("URN_aai_endpoint")
 			AaiUtil aaiUriUtil = new AaiUtil(this)
 			String aai_uri = aaiUriUtil.getNetworkL3NetworkUri(execution)
-			String updateContrailAAIUrlRequest = "${aai_endpoint}${aai_uri}/" + networkId + "?depth=1"
+			String updateContrailAAIUrlRequest = "${aai_endpoint}${aai_uri}/" + networkId + "?depth=all"
 
 			utils.logAudit(updateContrailAAIUrlRequest)
 			execution.setVariable(Prefix + "updateContrailAAIUrlRequest", updateContrailAAIUrlRequest)
@@ -1103,7 +1113,7 @@
 
 	}
 
-	public void prepareCreateNetworkRequest (Execution execution) {
+	public void prepareCreateNetworkRequest (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 
@@ -1146,7 +1156,7 @@
 
 	}
 
-	public void prepareSDNCRequest (Execution execution) {
+	public void prepareSDNCRequest (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 
@@ -1188,7 +1198,7 @@
 
 	}
 
-	public void prepareRpcSDNCRequest (Execution execution) {
+	public void prepareRpcSDNCRequest (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 
@@ -1221,7 +1231,7 @@
 
 	}
 	
-	public void prepareRpcSDNCActivateRequest (Execution execution) {
+	public void prepareRpcSDNCActivateRequest (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 		
@@ -1260,7 +1270,7 @@
 	//     Post or Validate Response Section
 	// **************************************************
 
-	public void validateCreateNetworkResponse (Execution execution) {
+	public void validateCreateNetworkResponse (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 
@@ -1333,7 +1343,7 @@
 
 	}
 
-	public void validateSDNCResponse (Execution execution) {
+	public void validateSDNCResponse (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 
@@ -1361,7 +1371,7 @@
 
 	}
 
-	public void validateRpcSDNCActivateResponse (Execution execution) {
+	public void validateRpcSDNCActivateResponse (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 
@@ -1390,7 +1400,7 @@
 	}
 
 
-	public void prepareSDNCRollbackRequest (Execution execution) {
+	public void prepareSDNCRollbackRequest (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 
@@ -1422,7 +1432,7 @@
 
 	}
 
-	public void prepareRpcSDNCRollbackRequest (Execution execution) {
+	public void prepareRpcSDNCRollbackRequest (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 
@@ -1454,7 +1464,7 @@
 
 	}
 	
-	public void prepareRpcSDNCActivateRollback(Execution execution) {
+	public void prepareRpcSDNCActivateRollback(DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 
@@ -1487,7 +1497,7 @@
 
 	}
 	
-	public void prepareRollbackData(Execution execution) {
+	public void prepareRollbackData(DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 		
@@ -1529,7 +1539,7 @@
 		
 	}
 	
-	public void postProcessResponse(Execution execution) {
+	public void postProcessResponse(DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 		
@@ -1590,7 +1600,7 @@
 		
 	}
 	
-	public void prepareSuccessRollbackData(Execution execution) {
+	public void prepareSuccessRollbackData(DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 		
@@ -1639,7 +1649,7 @@
 		
 	}
 
-	public void setExceptionFlag(Execution execution){
+	public void setExceptionFlag(DelegateExecution execution){
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 		
@@ -1671,7 +1681,7 @@
 
 
 	
-	public void processJavaException(Execution execution){
+	public void processJavaException(DelegateExecution execution){
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 		
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateNetworkInstanceRollback.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateNetworkInstanceRollback.groovy
index 0bd5893..760389e 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateNetworkInstanceRollback.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateNetworkInstanceRollback.groovy
@@ -36,7 +36,7 @@
 import java.util.UUID;
 
 import org.camunda.bpm.engine.delegate.BpmnError
-import org.camunda.bpm.engine.runtime.Execution
+import org.camunda.bpm.engine.delegate.DelegateExecution
 import org.apache.commons.lang3.*
 import org.apache.commons.codec.binary.Base64;
 import org.springframework.web.util.UriUtils
@@ -59,7 +59,7 @@
 	 * This method is executed during the preProcessRequest task of the <class>DoCreateNetworkInstanceRollback.bpmn</class> process.
 	 * @param execution
 	 */
-	public InitializeProcessVariables(Execution execution){
+	public InitializeProcessVariables(DelegateExecution execution){
 		/* Initialize all the process variables in this block */
 
 		execution.setVariable(Prefix + "rollbackNetworkRequest", null)
@@ -93,7 +93,7 @@
 	 * This method is executed during the preProcessRequest task of the <class>DoCreateNetworkInstanceRollback.bpmn</class> process.
 	 * @param execution
 	 */
-	public void preProcessRequest (Execution execution) {
+	public void preProcessRequest (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 		
@@ -180,7 +180,7 @@
 
 	}
 	
-	public void callPONetworkAdapter (Execution execution) {
+	public void callPONetworkAdapter (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 
@@ -222,7 +222,7 @@
 	}
 	
 	
-	public void validateRollbackResponses (Execution execution) {
+	public void validateRollbackResponses (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 
@@ -365,7 +365,7 @@
 
 
 	
-	public void processJavaException(Execution execution){
+	public void processJavaException(DelegateExecution execution){
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 		
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateServiceInstance.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateServiceInstance.groovy
index 91ecabc..5789e71 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateServiceInstance.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateServiceInstance.groovy
@@ -19,28 +19,38 @@
  */
 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.domain.ServiceDecomposition
-import org.openecomp.mso.bpmn.core.domain.ServiceInstance
-import org.openecomp.mso.bpmn.core.domain.ModelInfo
-import org.openecomp.mso.bpmn.core.json.JsonUtils
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.delegate.DelegateExecution
 import org.openecomp.mso.bpmn.common.scripts.AaiUtil
 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.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.bpmn.core.domain.ModelInfo
+import org.openecomp.mso.bpmn.core.domain.ServiceDecomposition
+import org.openecomp.mso.bpmn.core.domain.ServiceInstance
+import org.openecomp.mso.bpmn.core.json.JsonUtils
+import org.openecomp.mso.bpmn.infrastructure.aai.AAICreateResources
+import org.openecomp.mso.rest.APIResponse
+import org.springframework.web.util.UriUtils
+
+import static org.apache.commons.lang3.StringUtils.*;
+import groovy.xml.XmlUtil
+import groovy.json.*
+
 import org.openecomp.mso.rest.RESTClient
 import org.openecomp.mso.rest.RESTConfig
+import org.openecomp.mso.client.aai.AAIResourcesClient
+
+import java.util.logging.Logger;
+import java.net.URI;
 
 import java.util.UUID;
 
 import org.camunda.bpm.engine.delegate.BpmnError
-import org.camunda.bpm.engine.runtime.Execution
+import org.camunda.bpm.engine.delegate.DelegateExecution
 import org.json.JSONObject;
 import org.apache.commons.lang3.*
 import org.apache.commons.codec.binary.Base64;
@@ -70,14 +80,16 @@
  * @param - WorkflowException
  * @param - serviceInstanceName - (GET from AAI if null in input)
  *
+ * This BB processes Macros(except TRANSPORT all sent to sdnc) and Alacartes(sdncSvcs && nonSdncSvcs) 
  */
 public class DoCreateServiceInstance extends AbstractServiceTaskProcessor {
 
 	String Prefix="DCRESI_"
 	ExceptionUtil exceptionUtil = new ExceptionUtil()
 	JsonUtils jsonUtil = new JsonUtils()
+	CatalogDbUtils cutils = new CatalogDbUtils()
 
-	public void preProcessRequest (Execution execution) {
+	public void preProcessRequest (DelegateExecution execution) {
 		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
 		String msg = ""
 		utils.log("DEBUG"," ***** preProcessRequest *****",  isDebugEnabled)
@@ -131,31 +143,19 @@
 			String serviceInstanceId = ""
 			String serviceType = ""
 			String serviceRole = ""
-			
+					
 			ServiceDecomposition serviceDecomp = (ServiceDecomposition) execution.getVariable("serviceDecomposition")
 			if (serviceDecomp != null)
 			{
-				serviceType = serviceDecomp.getServiceType()
-				if (serviceType == null)
-				{
-					utils.log("DEBUG", "null serviceType", isDebugEnabled)
-					serviceType = ""
-				}
-				else
-				{
-					utils.log("DEBUG", "serviceType:" + serviceType, isDebugEnabled)
-				}
-				serviceRole = serviceDecomp.getServiceRole()
-				if (serviceRole == null)
-				{
-					serviceRole = ""
-				}
+				serviceType = serviceDecomp.getServiceType() ?: ""
+				utils.log("DEBUG", "serviceType:" + serviceType, isDebugEnabled)
+				serviceRole = serviceDecomp.getServiceRole() ?: ""
 				
 				ServiceInstance serviceInstance = serviceDecomp.getServiceInstance()
 				if (serviceInstance != null)
 				{
-					serviceInstanceId = serviceInstance.getInstanceId()
-					serviceInstanceName = serviceInstance.getInstanceName()
+					serviceInstanceId = serviceInstance.getInstanceId() ?: ""
+					serviceInstanceName = serviceInstance.getInstanceName() ?: ""
 					execution.setVariable("serviceInstanceId", serviceInstanceId)
 					execution.setVariable("serviceInstanceName", serviceInstanceName)
 				}
@@ -163,10 +163,10 @@
 				ModelInfo modelInfo = serviceDecomp.getModelInfo()
 				if (modelInfo != null)
 				{
-					modelInvariantUuid = modelInfo.getModelInvariantUuid()
-					modelVersion = modelInfo.getModelVersion()
-					modelUuid = modelInfo.getModelUuid()
-					modelName = modelInfo.getModelName()
+					modelInvariantUuid = modelInfo.getModelInvariantUuid() ?: ""
+					modelVersion = modelInfo.getModelVersion() ?: ""
+					modelUuid = modelInfo.getModelUuid() ?: ""
+					modelName = modelInfo.getModelName() ?: ""
 				}
 				else 
 				{
@@ -178,52 +178,78 @@
 			else
 			{
 				//requestDetails.requestInfo. for AAI GET/PUT serviceInstanceData & SDNC assignToplology
-				serviceInstanceName = execution.getVariable("serviceInstanceName")
-				serviceInstanceId = execution.getVariable("serviceInstanceId")
+				serviceInstanceName = execution.getVariable("serviceInstanceName") ?: ""
+				serviceInstanceId = execution.getVariable("serviceInstanceId") ?: ""
 				
 				String serviceModelInfo = execution.getVariable("serviceModelInfo")
 				if (isBlank(serviceModelInfo)) {
 					msg = "Input serviceModelInfo is null"
 					utils.log("DEBUG", msg, isDebugEnabled)
 					exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
-				}
-				modelInvariantUuid = jsonUtil.getJsonValue(serviceModelInfo, "modelInvariantUuid")
-				modelVersion = jsonUtil.getJsonValue(serviceModelInfo, "modelVersion")
-				modelUuid = jsonUtil.getJsonValue(serviceModelInfo, "modelUuid")
-				modelName = jsonUtil.getJsonValue(serviceModelInfo, "modelName")
+				}			
+				modelInvariantUuid = jsonUtil.getJsonValue(serviceModelInfo, "modelInvariantUuid") ?: ""
+				modelVersion = jsonUtil.getJsonValue(serviceModelInfo, "modelVersion") ?: ""
+				modelUuid = jsonUtil.getJsonValue(serviceModelInfo, "modelUuid") ?: ""
+				modelName = jsonUtil.getJsonValue(serviceModelInfo, "modelName") ?: ""
 				//modelCustomizationUuid NA for SI
 	
 			}
+			
 			execution.setVariable("serviceType", serviceType)
 			execution.setVariable("serviceRole", serviceRole)
+			execution.setVariable("serviceInstanceName", serviceInstanceName)
+
+			execution.setVariable("modelInvariantUuid", modelInvariantUuid)
+			execution.setVariable("modelVersion", modelVersion)
+			execution.setVariable("modelUuid", modelUuid)
+			execution.setVariable("modelName", modelName)
 			
-			if (serviceInstanceName == null) {
-				execution.setVariable("serviceInstanceName", "")
-				serviceInstanceName = ""
+			//alacarte SIs are NOT sent to sdnc. exceptions are listed in config variable
+			String svcTypes = execution.getVariable("URN_sdnc_si_svc_types") ?: ""
+			utils.log("DEBUG", "SDNC SI serviceTypes:" + svcTypes, isDebugEnabled)
+			List<String> svcList = Arrays.asList(svcTypes.split("\\s*,\\s*"));
+			boolean isSdncService= false
+			for (String listEntry : svcList){
+				if (listEntry.equalsIgnoreCase(serviceType)){
+					isSdncService = true
+					break;
+				}
 			}
+			
+			//All Macros are sent to SDNC, TRANSPORT(Macro) is sent to SDNW
+			//Alacartes are sent to SDNC if they are listed in config variable above
+			execution.setVariable("sendToSDNC", true)
+			if(execution.getVariable("sdncVersion").equals("1610")) //alacarte
+			{
+				if(!isSdncService){ 
+					execution.setVariable("sendToSDNC", false)
+					//alacarte non-sdnc svcs must provide name (sdnc provides name for rest)
+					if (isBlank(execution.getVariable("serviceInstanceName" )))
+					{
+						msg = "Input serviceInstanceName must be provided for alacarte"
+						utils.log("DEBUG", msg, isDebugEnabled)
+						exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
+					}
+				}
+			}
+			
+			utils.log("DEBUG", "isSdncService: " + isSdncService, isDebugEnabled)
+			utils.log("DEBUG", "Send To SDNC: " + execution.getVariable("sendToSDNC"), isDebugEnabled)
+			utils.log("DEBUG", "Service Type: " + execution.getVariable("serviceType"), isDebugEnabled)
+			
+			//macro may provide name and alacarte-portm may provide name
+			execution.setVariable("checkAAI", false)
+			if (!isBlank(execution.getVariable("serviceInstanceName" )))
+			{
+				execution.setVariable("checkAAI", true)
+			}
+			
 			if (isBlank(serviceInstanceId)){
 				msg = "Input serviceInstanceId is null"
 				utils.log("DEBUG", msg, isDebugEnabled)
 				exceptionUtil.buildAndThrowWorkflowException(execution, 500, msg)
 			}
 			
-			if (modelInvariantUuid == null) {
-				modelInvariantUuid = ""
-			}
-			if (modelUuid == null) {
-				modelUuid = ""
-			}
-			if (modelVersion == null) {
-				modelVersion = ""
-			}
-			if (modelName == null) {
-				modelName = ""
-			}
-			
-			execution.setVariable("modelInvariantUuid", modelInvariantUuid)
-			execution.setVariable("modelVersion", modelVersion)
-			execution.setVariable("modelUuid", modelUuid)
-			execution.setVariable("modelName", modelName)
 			
 			StringBuilder sbParams = new StringBuilder()
 			Map<String, String> paramsMap = execution.getVariable("serviceInputParams")
@@ -250,7 +276,7 @@
 			execution.setVariable("siParamsXml", siParamsXml)
 
 			//AAI PUT
-			String oStatus = execution.getVariable("initialStatus") ?: ""
+			String oStatus = execution.getVariable("initialStatus") ?: "Active"
 			if ("TRANSPORT".equalsIgnoreCase(serviceType))
 			{
 				oStatus = "Created"
@@ -260,6 +286,28 @@
 			String serviceTypeLine = isBlank(serviceType) ? "" : "<service-type>${serviceType}</service-type>"
 			String serviceRoleLine = isBlank(serviceRole) ? "" : "<service-role>${serviceRole}</service-role>"
 				
+			//QUERY CATALOG DB AND GET WORKLOAD / ENVIRONMENT CONTEXT
+			String environmentContext = ""
+			String workloadContext =""
+			
+			try{
+				 String json = cutils.getServiceResourcesByServiceModelInvariantUuidString(execution,modelInvariantUuid )
+				 
+				 utils.log("DEBUG", "JSON IS: "+json, isDebugEnabled)
+				 				 
+				 environmentContext = jsonUtil.getJsonValue(json, "serviceResources.environmentContext") ?: ""
+				 workloadContext = jsonUtil.getJsonValue(json, "serviceResources.workloadContext") ?: ""
+				 utils.log("DEBUG", "Env Context is: "+ environmentContext, isDebugEnabled)
+				 utils.log("DEBUG", "Workload Context is: "+ workloadContext, isDebugEnabled)
+			}catch(BpmnError e){
+				throw e
+			} catch (Exception ex){
+				msg = "Exception in preProcessRequest " + ex.getMessage()
+				utils.log("DEBUG", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+			}
+			
+			//Create AAI Payload
 			AaiUtil aaiUriUtil = new AaiUtil(this)
 			String aai_uri = aaiUriUtil.getBusinessCustomerUri(execution)
 			String namespace = aaiUriUtil.getNamespaceFromUri(aai_uri)
@@ -271,12 +319,14 @@
 					${statusLine}
 				    <model-invariant-id>${modelInvariantUuid}</model-invariant-id>
 				    <model-version-id>${modelUuid}</model-version-id>
+					<environment-context>${environmentContext}</environment-context>
+					<workload-context>${workloadContext}</workload-context>
 					</service-instance>""".trim()
 
 			execution.setVariable("serviceInstanceData", serviceInstanceData)
 			utils.logAudit(serviceInstanceData)
 			utils.log("DEBUG", " 'payload' to create Service Instance in AAI - " + "\n" + serviceInstanceData, isDebugEnabled)
-
+				
 		} catch (BpmnError e) {
 			throw e;
 		} catch (Exception ex){
@@ -288,7 +338,7 @@
 	}
 
 	//TODO: Will be able to replace with call to GenericGetService
-	public void getAAICustomerById (Execution execution) {
+	public void getAAICustomerById (DelegateExecution execution) {
 		// https://{aaiEP}/aai/v8/business/customers/customer/{globalCustomerId}
 		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
 		String msg = ""
@@ -360,7 +410,7 @@
 
 	}
 
-	public void postProcessAAIGET(Execution execution) {
+	public void postProcessAAIGET(DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		utils.log("DEBUG"," ***** postProcessAAIGET ***** ", isDebugEnabled)
 		String msg = ""
@@ -402,7 +452,7 @@
 		utils.log("DEBUG"," *** Exit postProcessAAIGET *** ", isDebugEnabled)
 	}
 
-	public void postProcessAAIPUT(Execution execution) {
+	public void postProcessAAIPUT(DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		utils.log("DEBUG"," ***** postProcessAAIPUT ***** ", isDebugEnabled)
 		String msg = ""
@@ -440,7 +490,7 @@
 		utils.log("DEBUG"," *** Exit postProcessAAIPUT *** ", isDebugEnabled)
 	}
 
-	public void preProcessSDNCAssignRequest(Execution execution) {
+	public void preProcessSDNCAssignRequest(DelegateExecution execution) {
 		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
 		String msg = ""
 		utils.log("DEBUG"," ***** preProcessSDNCAssignRequest *****", isDebugEnabled)
@@ -453,7 +503,7 @@
 			def serviceId = execution.getVariable("productFamilyId")
 			def subscriptionServiceType = execution.getVariable("subscriptionServiceType")
 			def globalSubscriberId = execution.getVariable("globalSubscriberId") //globalCustomerId
-			def serviceType = execution.getVariable("serviceType")
+			def msoAction = ""
 
 			def modelInvariantUuid = execution.getVariable("modelInvariantUuid")
 			def modelVersion = execution.getVariable("modelVersion")
@@ -464,6 +514,12 @@
 			
 			def siParamsXml = execution.getVariable("siParamsXml")
 			
+			// special URL for SDNW, msoAction helps set diff url in SDNCA
+			if("TRANSPORT".equalsIgnoreCase(execution.getVariable("serviceType")))
+			{
+				msoAction = "TRANSPORT"
+			}
+			
 			String sdncAssignRequest =
 					"""<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.openecomp/mso/request/types/v1"
 													xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1"
@@ -474,7 +530,7 @@
 							<sdncadapter:SvcAction>assign</sdncadapter:SvcAction>
 							<sdncadapter:SvcOperation>service-topology-operation</sdncadapter:SvcOperation>
 							<sdncadapter:CallbackUrl>${callbackURL}</sdncadapter:CallbackUrl>
-							<sdncadapter:MsoAction>${serviceType}</sdncadapter:MsoAction>
+							<sdncadapter:MsoAction>${msoAction}</sdncadapter:MsoAction>
 					</sdncadapter:RequestHeader>
 				<sdncadapterworkflow:SDNCRequestData>
 					<request-information>
@@ -488,12 +544,12 @@
 					<service-information>
 						<service-id>${serviceId}</service-id>
 						<subscription-service-type>${subscriptionServiceType}</subscription-service-type>
-						<onap-model-information>
+						<ecomp-model-information>
 					         <model-invariant-uuid>${modelInvariantUuid}</model-invariant-uuid>
 					         <model-uuid>${modelUuid}</model-uuid>
 					         <model-version>${modelVersion}</model-version>
 					         <model-name>${modelName}</model-name>
-					    </onap-model-information>
+					    </ecomp-model-information>
 						<service-instance-id>${serviceInstanceId}</service-instance-id>
 						<subscriber-name/>
 						<global-customer-id>${globalSubscriberId}</global-customer-id>
@@ -531,7 +587,7 @@
 		utils.log("DEBUG"," *****Exit preProcessSDNCAssignRequest *****", isDebugEnabled)
 	}
 	
-	public void postProcessSDNCAssign (Execution execution) {
+	public void postProcessSDNCAssign (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		utils.log("DEBUG"," ***** postProcessSDNCAssign ***** ", isDebugEnabled)
 		try {
@@ -568,7 +624,7 @@
 		utils.log("DEBUG"," *** Exit postProcessSDNCAssign *** ", isDebugEnabled)
 	}
 	
-	public void postProcessAAIGET2(Execution execution) {
+	public void postProcessAAIGET2(DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		utils.log("DEBUG"," ***** postProcessAAIGET2 ***** ", isDebugEnabled)
 		String msg = ""
@@ -611,7 +667,7 @@
 		utils.log("DEBUG"," *** Exit postProcessAAIGET2 *** ", isDebugEnabled)
 	}
 
-	public void preProcessRollback (Execution execution) {
+	public void preProcessRollback (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		utils.log("DEBUG"," ***** preProcessRollback ***** ", isDebugEnabled)
 		try {
@@ -632,7 +688,7 @@
 		utils.log("DEBUG"," *** Exit preProcessRollback *** ", isDebugEnabled)
 	}
 
-	public void postProcessRollback (Execution execution) {
+	public void postProcessRollback (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		utils.log("DEBUG"," ***** postProcessRollback ***** ", isDebugEnabled)
 		String msg = ""
@@ -652,5 +708,91 @@
 		}
 		utils.log("DEBUG"," *** Exit postProcessRollback *** ", isDebugEnabled)
 	}
+	
+	public void createProject(DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG", " ***** createProject ***** ", isDebugEnabled)
+
+		String bpmnRequest = execution.getVariable("requestJson")	
+		String projectName = jsonUtil.getJsonValue(bpmnRequest, "requestDetails.project.projectName")		
+		String serviceInstance = execution.getVariable("serviceInstanceId")
+		
+		utils.log("DEBUG", "BPMN REQUEST IS: "+ bpmnRequest, isDebugEnabled)
+		utils.log("DEBUG","PROJECT NAME: " + projectName, isDebugEnabled)
+		utils.log("DEBUG","Service Instance: " + serviceInstance, isDebugEnabled)
+			
+		if(projectName == null||projectName.equals("")){
+			utils.log("DEBUG", "Project Name was not found in input. Skipping task...", isDebugEnabled)
+		}else{
+			try{
+				AAICreateResources aaiCR = new AAICreateResources()
+				aaiCR.createAAIProject(projectName, serviceInstance)
+			}catch(Exception ex){
+				String msg = "Exception in createProject. " + ex.getMessage();
+				utils.log("DEBUG", msg, isDebugEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+			}
+		}	
+		utils.log("DEBUG"," *** Exit createProject *** ", isDebugEnabled)
+	}
+	
+	public void createOwningEntity(DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG", " ***** createOwningEntity ***** ", isDebugEnabled)
+		String msg = "";
+		String bpmnRequest = execution.getVariable("requestJson")	
+		String owningEntityId = jsonUtil.getJsonValue(bpmnRequest, "requestDetails.owningEntity.owningEntityId")		
+		String owningEntityName = jsonUtil.getJsonValue(bpmnRequest,"requestDetails.owningEntity.owningEntityName");
+		String serviceInstance = execution.getVariable("serviceInstanceId")
+			
+		utils.log("DEBUG","owningEntity: " + owningEntityId, isDebugEnabled)
+		utils.log("DEBUG", "OwningEntityName: "+ owningEntityName, isDebugEnabled)
+		utils.log("DEBUG","Service Instance: " + serviceInstance, isDebugEnabled)
+		
+		try{
+			AAICreateResources aaiCR = new AAICreateResources()
+			if(owningEntityId==null||owningEntityId.equals("")){
+				msg = "Exception in createOwningEntity. OwningEntityId is null in input.";	
+				throw new IllegalStateException();
+			}else{
+				if(aaiCR.existsOwningEntity(owningEntityId)){
+					aaiCR.connectOwningEntityandServiceInstance(owningEntityId,serviceInstance)
+				}else{
+					if(owningEntityName==null||owningEntityName.equals("")){
+						msg = "Exception in createOwningEntity. Can't create an owningEntity without an owningEntityName in input.";
+						throw new IllegalStateException();
+					}else{
+						aaiCR.createAAIOwningEntity(owningEntityId, owningEntityName, serviceInstance)
+					}
+				}
+			}
+		}catch(Exception ex){
+			utils.log("DEBUG", msg, isDebugEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+		}
+		utils.log("DEBUG"," *** Exit createOwningEntity *** ", isDebugEnabled)
+	}
+	
+	// *******************************
+	//     Build Error Section
+	// *******************************
+
+	public void processJavaException(DelegateExecution execution){
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		
+		try{
+			utils.log("DEBUG", "Caught a Java Exception in DoCreateServiceInstance", isDebugEnabled)
+			utils.log("DEBUG", "Started processJavaException Method", isDebugEnabled)
+			utils.log("DEBUG", "Variables List: " + execution.getVariables(), isDebugEnabled)
+			execution.setVariable("UnexpectedError", "Caught a Java Lang Exception in DoCreateServiceInstance")  // Adding this line temporarily until this flows error handling gets updated
+			exceptionUtil.buildWorkflowException(execution, 500, "Caught a Java Lang Exception in DoCreateServiceInstance")
+			
+		}catch(Exception e){
+			utils.log("DEBUG", "Caught Exception during processJavaException Method: " + e, isDebugEnabled)
+			execution.setVariable("UnexpectedError", "Exception in processJavaException")  // Adding this line temporarily until this flows error handling gets updated
+			exceptionUtil.buildWorkflowException(execution, 500, "Exception in processJavaException method")
+		}
+		utils.log("DEBUG", "Completed processJavaException Method in DoCreateServiceInstance", isDebugEnabled)
+	}
 
 }
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateServiceInstanceRollback.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateServiceInstanceRollback.groovy
index 9a84c6b..cb69121 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateServiceInstanceRollback.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateServiceInstanceRollback.groovy
@@ -36,7 +36,7 @@
 import java.util.UUID;
 
 import org.camunda.bpm.engine.delegate.BpmnError
-import org.camunda.bpm.engine.runtime.Execution
+import org.camunda.bpm.engine.delegate.DelegateExecution
 import org.json.JSONObject;
 import org.apache.commons.lang3.*
 import org.apache.commons.codec.binary.Base64;
@@ -65,7 +65,7 @@
 
 	String Prefix="DCRESIRB_"
 
-	public void preProcessRequest(Execution execution) {
+	public void preProcessRequest(DelegateExecution execution) {
 		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 		String msg = ""
@@ -135,7 +135,7 @@
 		utils.log("DEBUG"," ***** Exit preProcessRequest *****",  isDebugEnabled)
 	}
 
-	public void validateSDNCResponse(Execution execution, String response, String method) {
+	public void validateSDNCResponse(DelegateExecution execution, String response, String method) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		utils.log("DEBUG"," ***** validateSDNCResponse ***** ", isDebugEnabled)
 		String msg = ""
@@ -168,7 +168,7 @@
 		utils.log("DEBUG"," ***** Exit validateSDNCResponse ***** ", isDebugEnabled)
 	}
 
-	public void postProcessRequest(Execution execution) {
+	public void postProcessRequest(DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		utils.log("DEBUG"," ***** postProcessRequest ***** ", isDebugEnabled)
 		String msg = ""
@@ -202,7 +202,7 @@
 
 	}
 
-	public void processRollbackException(Execution execution){
+	public void processRollbackException(DelegateExecution execution){
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		utils.log("DEBUG"," ***** processRollbackException ***** ", isDebugEnabled)
 		try{
@@ -220,7 +220,7 @@
 		utils.log("DEBUG", " Exit processRollbackException", isDebugEnabled)
 	}
 
-	public void processRollbackJavaException(Execution execution){
+	public void processRollbackJavaException(DelegateExecution execution){
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		utils.log("DEBUG"," ***** processRollbackJavaException ***** ", isDebugEnabled)
 		try{
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateServiceInstanceRollbackV2.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateServiceInstanceRollbackV2.groovy
new file mode 100644
index 0000000..fa4250d
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateServiceInstanceRollbackV2.groovy
@@ -0,0 +1,51 @@
+package org.openecomp.mso.bpmn.infrastructure.scripts
+
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.delegate.DelegateExecution
+import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.openecomp.mso.bpmn.core.domain.ServiceDecomposition
+import org.openecomp.mso.client.orchestration.AAIOrchestrator
+import org.openecomp.mso.client.orchestration.SDNCOrchestrator
+
+public class DoCreateServiceInstanceRollbackV2 extends AbstractServiceTaskProcessor{
+
+	@Override
+	public void preProcessRequest(DelegateExecution execution) {
+		
+	}
+	
+	public void aaiServiceInstanceRollback (DelegateExecution execution) {
+		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")	
+		def aaiServiceInstanceRollback = execution.getVariable("aaiServiceInstanceRollback")
+		if(aaiServiceInstanceRollback){
+			utils.log("DEBUG"," ***** Started aaiServiceInstanceRollback *****",  isDebugEnabled)
+			try{
+				ServiceDecomposition serviceDecomp = execution.getVariable("ServiceDecomposition")
+				AAIOrchestrator aaiO = new AAIOrchestrator()
+				aaiO.deleteServiceInstance(serviceDecomp)
+			}catch (Exception ex) {
+				String msg =  "Error Response from AAI for aaiServiceInstanceRollback"
+				execution.setVariable("rollbackError", msg)
+				utils.log("DEBUG", msg, isDebugEnabled)
+				throw new BpmnError("MSOWorkflowException")
+			}
+			utils.log("DEBUG"," ***** Completed aaiServiceInstanceRollback *****",  isDebugEnabled)
+		}else{
+			utils.log("DEBUG", "***** SKIPPING A&AI ROLLBACK *****", isDebugEnabled)
+		}
+	}
+	
+	public void rollbackError (DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG"," ***** rollbackError ***** ", isDebugEnabled)
+		try{
+			utils.log("DEBUG", "Caught an Exception in DoCreateServiceInstanceRollbackV2", isDebugEnabled)
+		}catch(BpmnError b){
+			utils.log("DEBUG", "BPMN Error during rollbackError: " + b.getMessage(), isDebugEnabled)
+		}catch(Exception e){
+			utils.log("DEBUG", "Caught Exception during rollbackError: " + e.getMessage(), isDebugEnabled)
+		}
+		utils.log("DEBUG", " Exit processRollbackException", isDebugEnabled)
+	}
+	
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateServiceInstanceV2.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateServiceInstanceV2.groovy
new file mode 100644
index 0000000..c55ce54
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateServiceInstanceV2.groovy
@@ -0,0 +1,101 @@
+/*-
+ * ============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.bpmn.infrastructure.scripts;
+
+import static org.apache.commons.lang3.StringUtils.*;
+
+import org.apache.commons.lang3.*
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.delegate.DelegateExecution
+import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor
+import org.openecomp.mso.bpmn.core.domain.ServiceDecomposition
+import org.openecomp.mso.client.orchestration.AAIOrchestrator
+import org.openecomp.mso.client.orchestration.SDNCOrchestrator
+
+import groovy.json.*
+
+/**
+ * This groovy class supports the <class>DoCreateServiceInstanceV2.bpmn</class> process.
+ *
+*/
+
+public class DoCreateServiceInstanceV2 extends AbstractServiceTaskProcessor {
+
+	AAIOrchestrator aaiO = new AAIOrchestrator()
+	SDNCOrchestrator sdncO = new SDNCOrchestrator()
+	
+	@Override
+	public void preProcessRequest(DelegateExecution execution) {
+	}
+
+	public void createServiceInstance(DelegateExecution execution) { 
+		execution.setVariable("callSDNC",true)
+		if(execution.getVariable("serviceType").equalsIgnoreCase("PORT-MIRROR")== false){
+				if(execution.getVariable("sdncVersion").equals("1610")){
+					execution.setVariable("callSDNC",false);				
+				}
+		}
+		ServiceDecomposition serviceDecomp = (ServiceDecomposition) execution.getVariable("serviceDecomposition")
+		try{
+			aaiO.createServiceInstance(serviceDecomp)
+		} catch (BpmnError e) {
+			throw e
+		}
+	}
+	
+	public void createProject(DelegateExecution execution) {
+		ServiceDecomposition serviceDecomp = (ServiceDecomposition) execution.getVariable("serviceDecomposition")
+		if (serviceDecomp.getServiceInstance() != null && serviceDecomp.getProject() != null) {	
+			try{
+				aaiO.createProjectandConnectServiceInstance(serviceDecomp)
+			} catch (BpmnError e) {
+				throw e
+			}
+		}
+	}
+	
+	public void createOwningEntity(DelegateExecution execution) {
+		ServiceDecomposition serviceDecomp = (ServiceDecomposition) execution.getVariable("serviceDecomposition")
+		if (serviceDecomp.getServiceInstance() != null && serviceDecomp.getOwningEntity() != null) {
+			try{
+				aaiO.createOwningEntityandConnectServiceInstance(serviceDecomp)
+			} catch (BpmnError e) {
+				throw e
+			}	
+		}			
+	}
+	
+	public void sdncAssignRequest(DelegateExecution execution) {
+		ServiceDecomposition serviceDecomp = (ServiceDecomposition) execution.getVariable("serviceDecomposition")
+		if (serviceDecomp != null) {
+			try {
+				sdncO.sendSyncResponse(serviceDecomp)
+			} catch (BpmnError e) {
+				throw e
+			}
+		}
+
+	}
+	
+	public void rollback(DelegateExecution execution) {
+		//TODO
+	}
+	
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVfModule.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVfModule.groovy
index 7f30fe2..b931946 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVfModule.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVfModule.groovy
@@ -20,20 +20,31 @@
 
 package org.openecomp.mso.bpmn.infrastructure.scripts;
 
+import java.util.Map
+import java.util.Currency.CurrencyNameGetter
+
 import javax.xml.parsers.DocumentBuilder
 import javax.xml.parsers.DocumentBuilderFactory
 
 import org.apache.commons.lang3.*
 import org.camunda.bpm.engine.delegate.BpmnError
-import org.camunda.bpm.engine.runtime.Execution
+import org.camunda.bpm.engine.delegate.DelegateExecution
+import org.json.JSONArray
+import org.json.JSONObject
 import org.openecomp.mso.bpmn.common.scripts.AaiUtil
+import org.openecomp.mso.bpmn.common.scripts.CatalogDbUtils
 import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil
 import org.openecomp.mso.bpmn.common.scripts.NetworkUtils
 import org.openecomp.mso.bpmn.common.scripts.SDNCAdapterUtils
 import org.openecomp.mso.bpmn.common.scripts.VfModuleBase
 import org.openecomp.mso.bpmn.core.RollbackData
 import org.openecomp.mso.bpmn.core.WorkflowException
+import org.openecomp.mso.bpmn.core.domain.ServiceDecomposition
+import org.openecomp.mso.bpmn.core.domain.VnfResource
+import org.openecomp.mso.bpmn.core.json.DecomposeJsonUtil
 import org.openecomp.mso.bpmn.core.json.JsonUtils
+import org.openecomp.mso.client.aai.entities.AAIResultWrapper
+import org.openecomp.mso.client.aai.entities.uri.AAIUri
 import org.openecomp.mso.rest.APIResponse
 import org.openecomp.mso.rest.RESTClient
 import org.openecomp.mso.rest.RESTConfig
@@ -44,6 +55,13 @@
 import org.w3c.dom.Node
 import org.w3c.dom.NodeList
 import org.xml.sax.InputSource
+import com.fasterxml.jackson.databind.ObjectMapper
+
+import com.fasterxml.jackson.databind.DeserializationFeature
+import com.fasterxml.jackson.databind.ObjectMapper
+import org.openecomp.mso.client.aai.AAIObjectType;
+import org.openecomp.mso.client.aai.AAIResourcesClient
+import org.openecomp.mso.client.aai.entities.uri.AAIUriFactory;
 
 
 
@@ -53,12 +71,14 @@
 	ExceptionUtil exceptionUtil = new ExceptionUtil()
 	JsonUtils jsonUtil = new JsonUtils()
 	SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+	CatalogDbUtils catalog = new CatalogDbUtils()
+	DecomposeJsonUtil decomposeJsonUtils = new DecomposeJsonUtil()
 
 	/**
 	 * Validates the request message and sets up the workflow.
 	 * @param execution the execution
 	 */
-	public void preProcessRequest(Execution execution) {
+	public void preProcessRequest(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.preProcessRequest(' +
 			'execution=' + execution.getId() +
 			')'
@@ -85,8 +105,10 @@
 				
 				def serviceModelInfo = execution.getVariable("serviceModelInfo")
 				logDebug("serviceModelInfo: " + serviceModelInfo, isDebugLogEnabled)
-				def vnfModelInfo = execution.getVariable("vnfModelInfo")
+				String modelInvariantUuid = jsonUtil.getJsonValue(serviceModelInfo, "modelInvariantUuid")
+				logDebug("modelInvariantUuid: " + modelInvariantUuid, isDebugLogEnabled)
 				
+				def vnfModelInfo = execution.getVariable("vnfModelInfo")
 
 				//tenantId
 				def tenantId = execution.getVariable("tenantId")
@@ -174,7 +196,7 @@
 				execution.setVariable("DCVFM_asdcServiceModelVersion", asdcServiceModelVersion)
 				logDebug("asdcServiceModelVersion: " + asdcServiceModelVersion, isDebugLogEnabled)
 				//personaModelId
-				execution.setVariable("DCVFM_personaModelId", jsonUtil.getJsonValue(vfModuleModelInfo, "modelInvariantUuid"))
+				execution.setVariable("DCVFM_personaModelId", jsonUtil.getJsonValue(vfModuleModelInfo, "modelInvariantUuid"))			
 				//personaModelVersion
 				execution.setVariable("DCVFM_personaModelVersion", jsonUtil.getJsonValue(vfModuleModelInfo, "modelUuid"))
 				//vfModuleLabel
@@ -210,7 +232,42 @@
 				def usePreload = execution.getVariable("usePreload")
 				execution.setVariable("DCVFM_usePreload", usePreload)
 				logDebug("usePreload: " + usePreload, isDebugLogEnabled)
-
+				//aLaCarte
+				def aLaCarte = execution.getVariable("aLaCarte")				
+				execution.setVariable("DCVFM_aLaCarte", aLaCarte)
+				logDebug("aLaCarte: " + aLaCarte, isDebugLogEnabled)
+				
+				//get workload and environment context from parent SI
+				String environmentContext = ""
+				String workloadContext =""
+				String serviceType =""
+				
+				try{
+					String json = catalog.getServiceResourcesByServiceModelInvariantUuidString(execution,modelInvariantUuid )
+					serviceType = jsonUtil.getJsonValue(json, "serviceResources.serviceType")
+				}catch(BpmnError e){
+					throw e
+				} catch (Exception ex){
+					String msg = "Exception in preProcessRequest " + ex.getMessage()
+					utils.log("DEBUG", msg, isDebugLogEnabled)
+					exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+				}
+				
+				try{
+					AAIUri serviceInstanceURI = AAIUriFactory.create(AAIObjectType.SERVICE_INSTANCE, globalSubscriberId,serviceType,serviceInstanceId)
+					AAIResourcesClient aaiRC = new AAIResourcesClient()
+					AAIResultWrapper aaiRW = aaiRC.get(serviceInstanceURI)
+					Map<String, Object> aaiJson = aaiRW.asMap()
+					environmentContext = aaiJson.getOrDefault("environment-context","")
+					workloadContext = aaiJson.getOrDefault("workload-context","")
+					
+				}catch (Exception ex) {
+					utils.log("DEBUG","Error retreiving parent service instance information", isDebugLogEnabled)
+				}
+				
+				execution.setVariable("DCVFM_environmentContext",environmentContext)
+				execution.setVariable("DCVFM_workloadContext",workloadContext)
+											  
 			}
 			else {
 				// The info is inside the request - DEAD CODE
@@ -338,8 +395,7 @@
 					isBaseVfModule = utils.getNodeText(request, "is-base-vf-module")
 				}
 				execution.setVariable("DCVFM_isBaseVfModule", isBaseVfModule)
-				logDebug("isBaseVfModule: " + isBaseVfModule, isDebugLogEnabled)
-
+				logDebug("isBaseVfModule: " + isBaseVfModule, isDebugLogEnabled)				
 				//asdcServiceModelVersion
 				def asdcServiceModelVersion = ""
 				if (utils.nodeExists(request, "asdc-service-model-version")) {
@@ -426,6 +482,7 @@
 			rollbackData.put("VFMODULE", "rollbackCreateAAIVfModule", "false")
 			rollbackData.put("VFMODULE", "rollbackCreateNetworkPoliciesAAI", "false")
 			rollbackData.put("VFMODULE", "rollbackUpdateVnfAAI", "false")
+			rollbackData.put("VFMODULE", "heatstackid", "")
 
 			String sdncCallbackUrl = (String) execution.getVariable('URN_mso_workflow_sdncadapter_callback')
 				if (sdncCallbackUrl == null || sdncCallbackUrl.trim().isEmpty()) {
@@ -455,7 +512,7 @@
 	 * @param responseCodeVar the execution variable in which the response code is stored
 	 * @param errorResponseVar the execution variable in which the error response is stored
 	 */
-	public void validateWorkflowResponse(Execution execution, String responseVar,
+	public void validateWorkflowResponse(DelegateExecution execution, String responseVar,
 			String responseCodeVar, String errorResponseVar) {
 		SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
 		sdncAdapterUtils.validateSDNCResponse(execution, responseVar, responseCodeVar, errorResponseVar)
@@ -466,7 +523,7 @@
 	 * Sends the empty, synchronous response back to the API Handler.
 	 * @param execution the execution
 	 */
-	public void sendResponse(Execution execution) {
+	public void sendResponse(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.sendResponse(' +
 			'execution=' + execution.getId() +
 			')'
@@ -491,7 +548,7 @@
 	 *
 	 * @param execution The flow's execution instance.
 	 */
-	public void postProcessCreateAAIVfModule(Execution execution) {
+	public void postProcessCreateAAIVfModule(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.getVfModule(' +
 			'execution=' + execution.getId() +
 			')'
@@ -538,7 +595,7 @@
 	 *
 	 * @param execution The flow's execution instance.
 	 */
-	public void queryAAIVfModule(Execution execution) {
+	public void queryAAIVfModule(DelegateExecution execution) {
 		def isDebugLogEnabled=execution.getVariable("isDebugLogEnabled")
 		def method = getClass().getSimpleName() + '.getVfModule(' +
 			'execution=' + execution.getId() +
@@ -618,9 +675,95 @@
 			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in queryAAIVfModule(): ' + e.getMessage())
 		}
 	}
+	
+	/**
+	 * Using the vnfId and vfModuleName provided in the inputs, 
+	 * query AAI to get the corresponding VF Module info.
+	 * A 200 response is expected with the VF Module info in the response body, 
+	 * or a 404 response if the module does not exist yet. Will determine VF Module's 
+	 * orchestration status if one exists
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void queryAAIVfModuleForStatus(DelegateExecution execution) {
+		def isDebugLogEnabled=execution.getVariable("isDebugLogEnabled")
+		def method = getClass().getSimpleName() + '.queryAAIVfModuleForStatus(' +
+			'execution=' + execution.getId() +
+			')'
+		logDebug('Entered ' + method, isDebugLogEnabled)
+		
+		execution.setVariable('DCVFM_orchestrationStatus', '')
+
+		try {
+			def vnfId = execution.getVariable('DCVFM_vnfId')
+			def vfModuleName = execution.getVariable('DCVFM_vfModuleName')
+
+			AaiUtil aaiUriUtil = new AaiUtil(this)
+			String  aai_uri = aaiUriUtil.getNetworkGenericVnfUri(execution)
+			logDebug('AAI URI is: ' + aai_uri, isDebugLogEnabled)
+
+			String endPoint = execution.getVariable("URN_aai_endpoint") + "${aai_uri}/" + UriUtils.encode(vnfId, "UTF-8") + 
+					"/vf-modules/vf-module?vf-module-name=" + UriUtils.encode(vfModuleName, "UTF-8")
+			utils.logAudit("AAI endPoint: " + endPoint)
+
+			try {
+				RESTConfig config = new RESTConfig(endPoint);
+				def responseData = ''
+				def aaiRequestId = UUID.randomUUID().toString()
+				RESTClient client = new RESTClient(config).
+					addHeader('X-TransactionId', aaiRequestId).
+					addHeader('X-FromAppId', 'MSO').
+					addHeader('Content-Type', 'application/xml').
+					addHeader('Accept','application/xml');
+				logDebug('sending GET to AAI endpoint \'' + endPoint + '\'', isDebugLogEnabled)
+				APIResponse response = client.httpGet()
+				utils.logAudit("createVfModule - invoking httpGet() to AAI")
+
+				responseData = response.getResponseBodyAsString()
+				if (responseData != null) {
+					logDebug("Received generic VNF data: " + responseData, isDebugLogEnabled)
+
+				}
+
+				utils.logAudit("createVfModule - queryAAIVfModule Response: " + responseData)
+				utils.logAudit("createVfModule - queryAAIVfModule ResponseCode: " + response.getStatusCode())
+
+				execution.setVariable('DCVFM_queryAAIVfModuleForStatusResponseCode', response.getStatusCode())
+				execution.setVariable('DCVFM_queryAAIVfModuleForStatusResponse', responseData)
+				logDebug('Response code:' + response.getStatusCode(), isDebugLogEnabled)
+				logDebug('Response:' + System.lineSeparator() + responseData, isDebugLogEnabled)
+				// Retrieve VF Module info and its orchestration status; if not found, do nothing
+				if (response.getStatusCode() == 200) {
+					// Parse the VNF record from A&AI to find base module info
+					logDebug('Parsing the VNF data to find orchestration status', isDebugLogEnabled)
+					if (responseData != null) {
+						def vfModuleText = utils.getNodeXml(responseData, "vf-module")
+						//def xmlVfModule= new XmlSlurper().parseText(vfModuleText)
+						def orchestrationStatus = utils.getNodeText1(vfModuleText, "orchestration-status")
+						execution.setVariable("DCVFM_orchestrationStatus", orchestrationStatus)
+						// Also retrieve vfModuleId
+						def vfModuleId = utils.getNodeText1(vfModuleText, "vf-module-id")
+						execution.setVariable("DCVFM_vfModuleId", vfModuleId)
+						logDebug("Received orchestration status from A&AI: " + orchestrationStatus, isDebugLogEnabled)
+						
+					}
+				}
+			} catch (Exception ex) {
+				ex.printStackTrace()
+				logDebug('Exception occurred while executing AAI GET:' + ex.getMessage(),isDebugLogEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'AAI GET Failed:' + ex.getMessage())
+			}
+			logDebug('Exited ' + method, isDebugLogEnabled)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			logError('Caught exception in ' + method, e)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in queryAAIVfModuleForStatus(): ' + e.getMessage())
+		}
+	}
 
 
-	public void preProcessSDNCAssignRequest(Execution execution){
+	public void preProcessSDNCAssignRequest(DelegateExecution execution){
 		def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix", Prefix)
 		logDebug(" ======== STARTED preProcessSDNCAssignRequest ======== ", isDebugLogEnabled)
@@ -656,7 +799,7 @@
 		logDebug("======== COMPLETED preProcessSDNCAssignRequest ======== ", isDebugLogEnabled)
 	}
 
-	public void preProcessSDNCGetRequest(Execution execution, String element){
+	public void preProcessSDNCGetRequest(DelegateExecution execution, String element){
 		def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled")
 		String sdncVersion = execution.getVariable("DCVFM_sdncVersion")
 		execution.setVariable("prefix", Prefix)
@@ -749,7 +892,7 @@
 	}
 
 
-	public void preProcessVNFAdapterRequest(Execution execution) {
+	public void preProcessVNFAdapterRequest(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.VNFAdapterCreateVfModule(' +
 			'execution=' + execution.getId() +
 			')'
@@ -798,7 +941,13 @@
 		def volumeGroupStackId = execution.getVariable("DCVFM_volumeGroupStackId")
 		//modelCustomizationUuid
 		def modelCustomizationUuid = execution.getVariable("DCVFM_modelCustomizationUuid")
-
+		//environmentContext
+		String environmentContext = execution.getVariable("DCVFM_environmentContext")
+		//workloadContext
+		String workloadContext = execution.getVariable("DCVFM_workloadContext")
+		logDebug("workloadContext: " + workloadContext, isDebugLogEnabled)
+		logDebug("environmentContext: " + environmentContext, isDebugLogEnabled)
+		
 		def messageId = execution.getVariable('mso-request-id') + '-' +
                                 System.currentTimeMillis()
 
@@ -822,7 +971,7 @@
 		if (!sdncVersion.equals("1707")) {
 						
 			vfModuleParams = buildVfModuleParams(vnfParamsMap, vfModuleSdncGetResponse, vnfId, vnfName,
-				vfModuleId, vfModuleName, vfModuleIndex)
+				vfModuleId, vfModuleName, vfModuleIndex, environmentContext, workloadContext)
 		}
 		else {
 			//Get SDNC Response Data for Vnf Topology
@@ -830,7 +979,7 @@
 			utils.logAudit("vnfSdncGetResponse: " + vnfSdncGetResponse)
 			
 			vfModuleParams = buildVfModuleParamsFromCombinedTopologies(vnfParamsMap, vnfSdncGetResponse, vfModuleSdncGetResponse, vnfId, vnfName,
-				vfModuleId, vfModuleName, vfModuleIndex)			
+				vfModuleId, vfModuleName, vfModuleIndex, environmentContext, workloadContext)			
 		}
 
 		def svcInstId = ""
@@ -884,7 +1033,7 @@
 	 * @param execution the execution
 	 * @return the validated request
 	 */
-	public String validateInfraRequest(Execution execution) {
+	public String validateInfraRequest(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.validateInfraRequest(' +
 			'execution=' + execution.getId() +
 			')'
@@ -945,7 +1094,7 @@
 		}
 	}
 
-	public boolean isVolumeGroupIdPresent(Execution execution) {
+	public boolean isVolumeGroupIdPresent(DelegateExecution execution) {
 
 		def method = getClass().getSimpleName() + '.isVolumeGroupIdPresent(' +
 			'execution=' + execution.getId() +
@@ -966,7 +1115,7 @@
 
 	}
 
-	public boolean isVolumeGroupNamePresent(Execution execution) {
+	public boolean isVolumeGroupNamePresent(DelegateExecution execution) {
 
 		def method = getClass().getSimpleName() + '.isVolumeGroupNamePresent(' +
 			'execution=' + execution.getId() +
@@ -987,7 +1136,7 @@
 
 	}
 
-	public String buildSDNCRequest(Execution execution, String svcInstId, String action){
+	public String buildSDNCRequest(DelegateExecution execution, String svcInstId, String action){
 
 		String uuid = execution.getVariable('testReqId') // for junits
 		if(uuid==null){
@@ -1176,7 +1325,7 @@
 
 	}
 
-	public void preProcessSDNCActivateRequest(Execution execution) {
+	public void preProcessSDNCActivateRequest(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.preProcessSDNCActivateRequest(' +
 			'execution=' + execution.getId() +
 			')'
@@ -1209,7 +1358,7 @@
 		logDebug("======== COMPLETED  preProcessSDNCActivateRequest Process ======== ", isDebugLogEnabled)
 	}
 
-	public void postProcessVNFAdapterRequest(Execution execution) {
+	public void postProcessVNFAdapterRequest(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.postProcessVNFAdapterRequest(' +
 			'execution=' + execution.getId() +
 			')'
@@ -1298,7 +1447,7 @@
 	}
 
 
-	public void preProcessUpdateAAIVfModuleRequestOrch(Execution execution) {
+	public void preProcessUpdateAAIVfModuleRequestOrch(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.preProcessUpdateAAIVfModuleRequestOrch(' +
 			'execution=' + execution.getId() +
 			')'
@@ -1315,6 +1464,8 @@
 			if (!contrailServiceInstanceFqdn.equals("")) {
 				setContrailServiceInstanceFqdn = true
 			}
+			
+			execution.setVariable("DCVFM_orchestrationStatus", "Created")
 
 			String updateAAIVfModuleRequest = buildUpdateAAIVfModuleRequest(execution, false, true, true, setContrailServiceInstanceFqdn)
 
@@ -1330,8 +1481,38 @@
 		logDebug("======== COMPLETED preProcessUpdateAAIVfModuleRequestOrch ======== ", isDebugLogEnabled)
 
 	}
+	
+	public void preProcessUpdateAAIVfModuleRequestStatus(DelegateExecution execution, String status) {
+		def method = getClass().getSimpleName() + '.preProcessUpdateAAIVfModuleStatus(' +
+			'execution=' + execution.getId() +
+			')'
+		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+		logDebug('Entered ' + method, isDebugLogEnabled)
+		execution.setVariable("prefix", Prefix)
+		logDebug(" ======== STARTED preProcessUpdateAAIVfModuleStatus ======== ", isDebugLogEnabled)
 
-	public void preProcessUpdateAAIVfModuleRequestGroup(Execution execution) {
+		try{
+
+			//Build UpdateAAIVfModule Request
+			execution.setVariable("DCVFM_orchestrationStatus", status)
+
+			String updateAAIVfModuleRequest = buildUpdateAAIVfModuleRequest(execution, false, true, false, false)
+
+			updateAAIVfModuleRequest = utils.formatXml(updateAAIVfModuleRequest)
+			execution.setVariable("DCVFM_updateAAIVfModuleRequest", updateAAIVfModuleRequest)
+			logDebug("Outgoing UpdateAAIVfModuleRequest is: \n" + updateAAIVfModuleRequest, isDebugLogEnabled)
+			utils.logAudit("Outgoing UpdateAAIVfModuleRequest is: \n"  + updateAAIVfModuleRequest)
+
+		}catch(Exception e){
+			utils.log("ERROR", "Exception Occured Processing preProcessUpdateAAIVfModuleStatus. Exception is:\n" + e, isDebugLogEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occured during preProcessUpdateAAIVfModuleStatus Method:\n" + e.getMessage())
+		}
+		logDebug("======== COMPLETED preProcessUpdateAAIVfModuleStatus ======== ", isDebugLogEnabled)
+
+	}
+
+
+	public void preProcessUpdateAAIVfModuleRequestGroup(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.preProcessUpdateAAIVfModuleRequestGroup(' +
 			'execution=' + execution.getId() +
 			')'
@@ -1359,7 +1540,7 @@
 
 	}
 
-	public void validateSDNCResponse(Execution execution, String response, String method){
+	public void validateSDNCResponse(DelegateExecution execution, String response, String method){
 		def isDebugLogEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 		logDebug(" *** STARTED ValidateSDNCResponse Process*** ", isDebugLogEnabled)
@@ -1394,7 +1575,7 @@
 		logDebug(" *** COMPLETED ValidateSDNCResponse Process*** ", isDebugLogEnabled)
 	}
 
-	public void preProcessUpdateAfterCreateRequest(Execution execution){
+	public void preProcessUpdateAfterCreateRequest(DelegateExecution execution){
 		def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix", Prefix)
 		utils.log("DEBUG", " ======== STARTED preProcessRequest Process ======== ", isDebugLogEnabled)
@@ -1441,7 +1622,7 @@
 		utils.log("DEBUG", "======== COMPLETED preProcessSDNCGetRequest Process ======== ", isDebugLogEnabled)
 	}
 
-	public String buildUpdateAAIVfModuleRequest(Execution execution, boolean updateVolumeGroupId,
+	public String buildUpdateAAIVfModuleRequest(DelegateExecution execution, boolean updateVolumeGroupId,
 		boolean updateOrchestrationStatus, boolean updateHeatStackId, boolean updateContrailFqdn){
 
 		def vnfId = execution.getVariable("DCVFM_vnfId")
@@ -1453,7 +1634,7 @@
 		}
 		def orchestrationStatusString = ""
 		if (updateOrchestrationStatus) {
-			orchestrationStatusString = "<orchestration-status>Created</orchestration-status>"
+			orchestrationStatusString = "<orchestration-status>" + execution.getVariable("DCVFM_orchestrationStatus") + "</orchestration-status>"
 		}
 		def heatStackIdString = ""
 		if (updateHeatStackId) {
@@ -1480,7 +1661,7 @@
 
 	}
 
-	public String buildSDNCParamsXml(Execution execution){
+	public String buildSDNCParamsXml(DelegateExecution execution){
 
 		String params = ""
 		StringBuilder sb = new StringBuilder()
@@ -1505,7 +1686,7 @@
 		return params
 	}
 
-   public void queryCloudRegion (Execution execution) {
+   public void queryCloudRegion (DelegateExecution execution) {
 		def isDebugLogEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix", Prefix)
 		utils.log("DEBUG", " ======== STARTED queryCloudRegion ======== ", isDebugLogEnabled)
@@ -1557,7 +1738,7 @@
     *variables and ensures that the "WorkflowException" Variable is set.
     *
     */
-   public void processBPMNException(Execution execution){
+   public void processBPMNException(DelegateExecution execution){
 	   def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 	   execution.setVariable("prefix",Prefix)
 	   try{
@@ -1574,7 +1755,7 @@
 	   utils.log("DEBUG", "Completed processBPMNException Method", isDebugEnabled)
    }
 
-   public void prepareCreateAAIVfModuleVolumeGroupRequest(Execution execution) {
+   public void prepareCreateAAIVfModuleVolumeGroupRequest(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.prepareCreateAAIVfModuleVolumeGroupRequest(' +
 			'execution=' + execution.getId() +
 			')'
@@ -1613,7 +1794,7 @@
 
 	}
 
-   public void createNetworkPoliciesInAAI(Execution execution) {
+   public void createNetworkPoliciesInAAI(DelegateExecution execution) {
 	   def method = getClass().getSimpleName() + '.createNetworkPoliciesInAAI(' +
 	   'execution=' + execution.getId() +
 	   ')'
@@ -1763,7 +1944,7 @@
 	*
 	* @param execution The flow's execution instance.
 	*/
-   public void prepUpdateAAIGenericVnf(Execution execution) {
+   public void prepUpdateAAIGenericVnf(DelegateExecution execution) {
 	   def method = getClass().getSimpleName() + '.prepUpdateAAIGenericVnf(' +
 		   'execution=' + execution.getId() +
 		   ')'
@@ -1816,7 +1997,7 @@
 	*
 	* @param execution The flow's execution instance.
 	*/
-   public void postProcessUpdateAAIGenericVnf(Execution execution) {
+   public void postProcessUpdateAAIGenericVnf(DelegateExecution execution) {
 	   def method = getClass().getSimpleName() + '.postProcessUpdateAAIGenericVnf(' +
 		   'execution=' + execution.getId() +
 		   ')'
@@ -1824,7 +2005,7 @@
 	   logDebug('Entered ' + method, isDebugLogEnabled)
 
 	   try {
-		   def rollbackData = execution.getVariable("RollbackData")
+		   def rollbackData = execution.getVariable("rollbackData")
 
 		   rollbackData.put("VFMODULE", "rollbackUpdateVnfAAI", "true")
 
@@ -1842,7 +2023,7 @@
 			   rollbackData.put("VFMODULE", "oamManagementV6Address", oamManagementV6Address)
 		   }
 
-		   execution.setVariable("RollbackData", rollbackData)
+		   execution.setVariable("rollbackData", rollbackData)
 
 		   logDebug('Exited ' + method, isDebugLogEnabled)
 	   } catch (BpmnError e) {
@@ -1853,7 +2034,62 @@
 	   }
    }
    
-   public void preProcessRollback (Execution execution) {
+   public void queryCatalogDB (DelegateExecution execution) {
+	   def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
+	   String msg = ""
+	   utils.log("DEBUG"," ***** queryCatalogDB  *****",  isDebugEnabled)
+
+	   try {
+		   boolean twoPhaseDesign = false
+		   // check for input
+		   
+		   String vfModuleModelName = execution.getVariable("DCVFM_vfModuleModelName")
+		   utils.log("DEBUG", "vfModuleModelName: " + vfModuleModelName, isDebugEnabled)
+		   def vnfModelInfo = execution.getVariable("vnfModelInfo")
+		   def vnfModelCustomizationUuid = jsonUtil.getJsonValue(vnfModelInfo, "modelCustomizationUuid")
+		  
+		   utils.log("DEBUG", "vnfModelCustomizationUuid: " + vnfModelCustomizationUuid, isDebugEnabled)		   
+		
+		   JSONArray vnfs = catalog.getAllVnfsByVnfModelCustomizationUuid(execution, vnfModelCustomizationUuid, "v2")
+		   
+		   utils.log("DEBUG", "Incoming Query Catalog DB for Vnf Response is: " + vnfModelCustomizationUuid, isDebugEnabled)
+		   utils.logAudit("Incoming Query Catalog DB for Vf Module Response is: " + vnfModelCustomizationUuid)
+		   
+		   utils.log("DEBUG", "obtained VNF list")
+		   // Only one match here
+		   if (vnfs != null) {
+			   JSONObject vnfObject = vnfs.get(0)
+			   if (vnfObject != null) {
+				   String vnfJson = vnfObject.toString()
+				   //
+				   ObjectMapper om = new ObjectMapper();			  
+				   VnfResource vnf = om.readValue(vnfJson, VnfResource.class);
+		   
+				   // Get multiStageDesign flag
+		   
+				   String multiStageDesignValue = vnf.getMultiStageDesign()
+				   utils.log("DEBUG", "multiStageDesign value from Catalog DB is: " + multiStageDesignValue, isDebugEnabled)
+				   if (multiStageDesignValue != null) {
+					   if (multiStageDesignValue.equalsIgnoreCase("true")) {
+			   				twoPhaseDesign = true
+					   }
+				   }
+			   }
+		   }
+		   
+		   utils.log("DEBUG", "setting twoPhaseDesign flag to: " + twoPhaseDesign, isDebugEnabled)
+		   
+		   execution.setVariable("DCVFM_twoPhaseDesign", twoPhaseDesign)		
+	   } catch (BpmnError e) {
+		   throw e;
+	   } catch (Exception e) {
+		   logError('Caught exception in queryCatalogDB()', e)
+		   exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in queryCatalogDB(): ' + e.getMessage())
+	   }
+   }
+	
+   
+   public void preProcessRollback (DelegateExecution execution) {
 	   def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 	   utils.log("DEBUG"," ***** preProcessRollback ***** ", isDebugEnabled)
 	   try {
@@ -1874,7 +2110,7 @@
 	   utils.log("DEBUG"," *** Exit preProcessRollback *** ", isDebugEnabled)
    }
 
-   public void postProcessRollback (Execution execution) {
+   public void postProcessRollback (DelegateExecution execution) {
 	   def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 	   utils.log("DEBUG"," ***** postProcessRollback ***** ", isDebugEnabled)
 	   String msg = ""
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVfModuleRollback.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVfModuleRollback.groovy
index 3ed768a..f862a00 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVfModuleRollback.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVfModuleRollback.groovy
@@ -20,7 +20,7 @@
 
 package org.openecomp.mso.bpmn.infrastructure.scripts
 import org.camunda.bpm.engine.delegate.BpmnError
-import org.camunda.bpm.engine.runtime.Execution
+import org.camunda.bpm.engine.delegate.DelegateExecution
 import org.openecomp.mso.bpmn.common.scripts.AaiUtil
 import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor
 import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil
@@ -36,13 +36,13 @@
 	def Prefix="DCVFMR_"
 	ExceptionUtil exceptionUtil = new ExceptionUtil()
 
-	public void initProcessVariables(Execution execution) {
+	public void initProcessVariables(DelegateExecution execution) {
 		execution.setVariable("prefix",Prefix)
 	}
 
 	// parse the incoming DELETE_VF_MODULE request for the Generic Vnf and Vf Module Ids
 	// and formulate the outgoing request for PrepareUpdateAAIVfModuleRequest
-	public void preProcessRequest(Execution execution) {
+	public void preProcessRequest(DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 
 		initProcessVariables(execution)
@@ -141,7 +141,7 @@
 
 	// build a SDNC vnf-topology-operation request for the specified action
 	// (note: the action passed is expected to be 'changedelete' or 'delete')
-	public void prepSDNCAdapterRequest(Execution execution) {
+	public void prepSDNCAdapterRequest(DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		String srvInstId = execution.getVariable("DCVFMR_serviceInstanceId")
 
@@ -232,7 +232,7 @@
 		execution.setVariable("sdncAdapterWorkflowRequest", request)
 	}
 
-	public void preProcessSDNCDeactivateRequest(Execution execution){
+	public void preProcessSDNCDeactivateRequest(DelegateExecution execution){
 		def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix", Prefix)
 		logDebug(" ======== STARTED preProcessSDNCDeactivateRequest ======== ", isDebugLogEnabled)
@@ -256,7 +256,7 @@
 		logDebug("======== COMPLETED preProcessSDNCDeactivateRequest ======== ", isDebugLogEnabled)
 	}
 
-	public void preProcessSDNCUnassignRequest(Execution execution) {
+	public void preProcessSDNCUnassignRequest(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.preProcessSDNCUnassignRequest(' +
 			'execution=' + execution.getId() +
 			')'
@@ -280,7 +280,7 @@
 		logDebug("======== COMPLETED  preProcessSDNCUnassignRequest Process ======== ", isDebugLogEnabled)
 	}
 
-	public String buildSDNCRequest(Execution execution, String svcInstId, String action){
+	public String buildSDNCRequest(DelegateExecution execution, String svcInstId, String action){
 	
 			String uuid = execution.getVariable('testReqId') // for junits
 			if(uuid==null){
@@ -340,7 +340,7 @@
 	
 	// parse the incoming DELETE_VF_MODULE request
 	// and formulate the outgoing VnfAdapterDeleteV1 request
-	public void prepVNFAdapterRequest(Execution execution) {
+	public void prepVNFAdapterRequest(DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		String requestId = UUID.randomUUID().toString()
 		String origRequestId = execution.getVariable("DCVFMR_requestId")
@@ -382,7 +382,7 @@
 
 	// parse the incoming DELETE_VF_MODULE request
 	// and formulate the outgoing UpdateAAIVfModuleRequest request
-	public void prepUpdateAAIVfModule(Execution execution) {
+	public void prepUpdateAAIVfModule(DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		String vnfId = execution.getVariable("DCVFMR_vnfId")
 		String vfModuleId = execution.getVariable("DCVFMR_vfModuleId")
@@ -397,10 +397,28 @@
 		utils.logAudit("UpdateAAIVfModule Request: " + request)
 		execution.setVariable("UpdateAAIVfModuleRequest", request)
 	}
+	
+	// parse the incoming DELETE_VF_MODULE request
+	// and formulate the outgoing UpdateAAIVfModuleRequest request
+	public void prepUpdateAAIVfModuleToAssigned(DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		String vnfId = execution.getVariable("DCVFMR_vnfId")
+		String vfModuleId = execution.getVariable("DCVFMR_vfModuleId")
+		// formulate the request for UpdateAAIVfModule
+		String request = """<UpdateAAIVfModuleRequest>
+								<vnf-id>${vnfId}</vnf-id>
+								<vf-module-id>${vfModuleId}</vf-module-id>
+								<heat-stack-id></heat-stack-id>
+								<orchestration-status>Assigned</orchestration-status>
+							</UpdateAAIVfModuleRequest>""" as String
+		utils.log("DEBUG", "UpdateAAIVfModuleRequest :" + request, isDebugEnabled)
+		utils.logAudit("UpdateAAIVfModule Request: " + request)
+		execution.setVariable("UpdateAAIVfModuleRequest", request)
+	}
 
 	// parse the incoming DELETE_VF_MODULE request
 	// and formulate the outgoing DeleteAAIVfModuleRequest request
-	public void prepDeleteAAIVfModule(Execution execution) {
+	public void prepDeleteAAIVfModule(DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		String vnfId = execution.getVariable("DCVFMR_vnfId")
 		String vfModuleId = execution.getVariable("DCVFMR_vfModuleId")
@@ -416,7 +434,7 @@
 
 	// generates a WorkflowException if
 	//		-
-	public void handleDoDeleteVfModuleFailure(Execution execution) {
+	public void handleDoDeleteVfModuleFailure(DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		utils.log("ERROR", "AAI error occurred deleting the Generic Vnf: "
 			+ execution.getVariable("DoDVfMod_deleteGenericVnfResponse"), isDebugEnabled)
@@ -425,7 +443,7 @@
 
 	}
 
-	public void sdncValidateResponse(Execution execution, String response){
+	public void sdncValidateResponse(DelegateExecution execution, String response){
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 
@@ -442,7 +460,7 @@
 		}
 	}
 
-	public void deleteNetworkPoliciesFromAAI(Execution execution) {
+	public void deleteNetworkPoliciesFromAAI(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.deleteNetworkPoliciesFromAAI(' +
 		'execution=' + execution.getId() +
 		')'
@@ -576,7 +594,7 @@
 	 *
 	 * @param execution The flow's execution instance.
 	 */
-	public void preProcessUpdateAAIGenericVnf(Execution execution) {
+	public void preProcessUpdateAAIGenericVnf(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.preProcessUpdateAAIGenericVnf((' +
 			'execution=' + execution.getId() +
 			')'
@@ -621,7 +639,7 @@
 		}
 	}
 	
-	public void setSuccessfulRollbackStatus (Execution execution){
+	public void setSuccessfulRollbackStatus (DelegateExecution execution){
 		def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix", Prefix)
 		logDebug(" ======== STARTED setSuccessfulRollbackStatus ======== ", isDebugLogEnabled)
@@ -638,7 +656,7 @@
 		logDebug("======== COMPLETED setSuccessfulRollbackStatus ======== ", isDebugLogEnabled)
 	}
 	
-	public void setFailedRollbackStatus (Execution execution){
+	public void setFailedRollbackStatus (DelegateExecution execution){
 		def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix", Prefix)
 		logDebug(" ======== STARTED setFailedRollbackStatus ======== ", isDebugLogEnabled)
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVfModuleVolumeRollback.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVfModuleVolumeRollback.groovy
index 0cbcfab..e903a54 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVfModuleVolumeRollback.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVfModuleVolumeRollback.groovy
@@ -26,7 +26,7 @@
 import java.util.UUID;
 
 import org.camunda.bpm.engine.delegate.BpmnError
-import org.camunda.bpm.engine.runtime.Execution
+import org.camunda.bpm.engine.delegate.DelegateExecution
 import org.apache.commons.lang3.*
 import org.apache.commons.codec.binary.Base64;
 import org.openecomp.mso.bpmn.common.scripts.AaiUtil
@@ -52,7 +52,7 @@
 	 * This method is executed during the preProcessRequest task of the <class>DoCreateVfModuleVolumeRollback.bpmn</class> process.
 	 * @param execution
 	 */
-	public InitializeProcessVariables(Execution execution){
+	public InitializeProcessVariables(DelegateExecution execution){
 		/* Initialize all the process variables in this block */
 
 		execution.setVariable(Prefix + "volumeGroupName", null)
@@ -68,7 +68,7 @@
 	 * This method is executed during the preProcessRequest task of the <class>DoCreateVfModuleVolumeRollback.bpmn</class> process.
 	 * @param execution
 	 */
-	public void preProcessRequest (Execution execution) {
+	public void preProcessRequest (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 
 		InitializeProcessVariables(execution)
@@ -120,7 +120,7 @@
 	 * @param execution
 	 * @param isDebugEnabled
 	 */
-	public void callRESTQueryAAIVolGrpName(Execution execution, isDebugEnabled) {
+	public void callRESTQueryAAIVolGrpName(DelegateExecution execution, isDebugEnabled) {
 		
 		def volumeGroupName = execution.getVariable('DCVFMODVOLRBK_volumeGroupName')
 		def cloudRegion = execution.getVariable('DCVFMODVOLRBK_lcpCloudRegionId')
@@ -169,7 +169,7 @@
 	
 	
 	
-	public void callRESTDeleteAAIVolumeGroup(Execution execution, isDebugEnabled) {
+	public void callRESTDeleteAAIVolumeGroup(DelegateExecution execution, isDebugEnabled) {
 
 		callRESTQueryAAIVolGrpName(execution, isDebugEnabled)
 		
@@ -216,7 +216,7 @@
 
 
 	
-	public void processJavaException(Execution execution){
+	public void processJavaException(DelegateExecution execution){
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 		
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVfModuleVolumeV2.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVfModuleVolumeV2.groovy
index 2d004b8..13a7ffa 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVfModuleVolumeV2.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVfModuleVolumeV2.groovy
@@ -21,7 +21,7 @@
 import java.util.UUID;
 
 import org.camunda.bpm.engine.delegate.BpmnError
-import org.camunda.bpm.engine.runtime.Execution
+import org.camunda.bpm.engine.delegate.DelegateExecution
 import org.apache.commons.lang3.*
 import org.apache.commons.codec.binary.Base64;
 
@@ -35,12 +35,12 @@
      * Perform initial processing, such as request validation, initialization of variables, etc.
      * * @param execution
      */
-    public void preProcessRequest(Execution execution) {
+    public void preProcessRequest(DelegateExecution execution) {
         def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
         preProcessRequest(execution, isDebugEnabled)
     }
 
-    public void preProcessRequest(Execution execution, isDebugLogEnabled) {
+    public void preProcessRequest(DelegateExecution execution, isDebugLogEnabled) {
 		
 		execution.setVariable("prefix",prefix)
 		execution.setVariable(prefix+'SuccessIndicator', false)
@@ -88,7 +88,7 @@
 	 * @param execution
 	 * @param isDebugLogEnabled
 	 */
-	public void displayInput(Execution execution, isDebugLogEnabled) {
+	public void displayInput(DelegateExecution execution, isDebugLogEnabled) {
 		def input = ['mso-request-id', 'msoRequestId', 'isDebugLogEnabled', 'disableRollback', 'failIfExists', 'serviceInstanceId',
 			'vnfId', 'vnfName', 'tenantId', 'volumeGroupId', 'volumeGroupName', 'lcpCloudRegionId', 'vnfType', 'vfModuleModelInfo',  'asdcServiceModelVersion',
 			'test-volume-group-name', 'test-volume-group-id', 'vfModuleInputParams']
@@ -106,7 +106,7 @@
 	 * @param execution
 	 * @param isDebugEnabled
 	 */
-	public void setRollbackData(Execution execution, isDebugEnabled) {
+	public void setRollbackData(DelegateExecution execution, isDebugEnabled) {
 		def rollbackData = execution.getVariable("rollbackData")
 		if (rollbackData == null) {
 			rollbackData = new RollbackData()
@@ -122,7 +122,7 @@
 	 * @param execution
 	 * @param isDebugEnabled
 	 */
-	public void validateGetServiceInstanceCall(Execution execution, isDebugEnabled) {
+	public void validateGetServiceInstanceCall(DelegateExecution execution, isDebugEnabled) {
 		def found = execution.getVariable('GENGS_FoundIndicator')
 		def success = execution.getVariable('GENGS_SuccessIndicator')
 		def serviceInstanceId = execution.getVariable('serviceInstanceId')
@@ -141,7 +141,7 @@
 	 * @param execution
 	 * @param isDebugEnabled
 	 */
-	public void callRESTQueryAAICloudRegion (Execution execution, isDebugEnabled) {
+	public void callRESTQueryAAICloudRegion (DelegateExecution execution, isDebugEnabled) {
 
 		def cloudRegion = execution.getVariable("lcpCloudRegionId")
 		utils.log("DEBUG", 'Request cloud region is: ' + cloudRegion, isDebugEnabled)
@@ -184,7 +184,7 @@
 	 * @param execution
 	 * @param isDebugEnabled
 	 */
-	public void callRESTQueryAAIVolGrpName(Execution execution, isDebugEnabled) {
+	public void callRESTQueryAAIVolGrpName(DelegateExecution execution, isDebugEnabled) {
 
 		def volumeGroupName = execution.getVariable('volumeGroupName')
 		def cloudRegion = execution.getVariable('lcpCloudRegionId')
@@ -235,7 +235,7 @@
 	 * @param execution
 	 * @param isDebugEnabled
 	 */
-	public void buildWorkflowException(Execution execution, int errorCode, errorMessage, isDebugEnabled) {
+	public void buildWorkflowException(DelegateExecution execution, int errorCode, errorMessage, isDebugEnabled) {
 		utils.log("DEBUG", errorMessage, isDebugEnabled)
 		(new ExceptionUtil()).buildWorkflowException(execution, 2500, errorMessage)
 	}
@@ -246,7 +246,7 @@
 	 * @param execution
 	 * @param isDebugEnabled
 	 */
-	public void handleError(Execution execution, isDebugEnabled) {
+	public void handleError(DelegateExecution execution, isDebugEnabled) {
 		WorkflowException we = execution.getVariable('WorkflowException')
 		if (we == null) {
 			(new ExceptionUtil()).buildWorkflowException(execution, 2500, "Enexpected error encountered!")
@@ -260,7 +260,7 @@
 	 * @param execution
 	 * @param isDebugEnabled
 	 */
-	public void callRESTCreateAAIVolGrpName(Execution execution, isDebugEnabled) {
+	public void callRESTCreateAAIVolGrpName(DelegateExecution execution, isDebugEnabled) {
 
 		def vnfId = execution.getVariable('vnfId')
 		def volumeGroupId = execution.getVariable('volumeGroupId')
@@ -329,7 +329,7 @@
 	 * Prepare VNF adapter create request XML
 	 * @param execution
 	 */
-	public void prepareVnfAdapterCreateRequest(Execution execution, isDebugEnabled) {
+	public void prepareVnfAdapterCreateRequest(DelegateExecution execution, isDebugEnabled) {
 
 		def aaiGenericVnfResponse = execution.getVariable(prefix+'AAIQueryGenericVfnResponse')
 		def vnfId = utils.getNodeText1(aaiGenericVnfResponse, 'vnf-id')
@@ -448,44 +448,60 @@
 		execution.setVariable(prefix+"createVnfARequest", vnfSubCreateWorkflowRequestAsString)
 
 		// build rollback request for use later if needed
-		
-		String vnfSubRollbackWorkflowRequest =
-				"""<rollbackVolumeGroupRequest>
-				<cloudSiteId>${cloudSiteId}</cloudSiteId>
-				<tenantId>${tenantId}</tenantId>
-				<volumeGroupId>${volumeGroupId}</volumeGroupId>
-				<skipAAI>true</skipAAI>
-				<volumeGroupCreated>true</volumeGroupCreated>
-			    <msoRequest>
-			        <requestId>${requestId}</requestId>
-			        <serviceInstanceId>${serviceId}</serviceInstanceId>
-			    </msoRequest>
-			    <messageId>${messageId}</messageId>
-			    <notificationUrl>${notificationUrl}</notificationUrl>
-			</rollbackVolumeGroupRequest>"""
+		String vnfSubRollbackWorkflowRequest = buildRollbackVolumeGroupRequestXml(volumeGroupId, cloudSiteId, tenantId, requestId, serviceId, messageId, notificationUrl)
 
 		utils.log("DEBUG", "Sub Vnf flow rollback request: vnfSubRollbackWorkflowRequest " + "\n" + vnfSubRollbackWorkflowRequest, isDebugEnabled)
 
 		String vnfSubRollbackWorkflowRequestAsString = utils.formatXml(vnfSubRollbackWorkflowRequest)
 		execution.setVariable(prefix+"rollbackVnfARequest", vnfSubRollbackWorkflowRequestAsString)
 	}
+	
+	public String buildRollbackVolumeGroupRequestXml(volumeGroupId, cloudSiteId, tenantId, requestId, serviceId, messageId, notificationUrl) {
+		
+		def request = """
+		<rollbackVolumeGroupRequest>
+			<volumeGroupRollback>
+			   <volumeGroupId>${volumeGroupId}</volumeGroupId>
+			   <volumeGroupStackId>{{VOLUMEGROUPSTACKID}}</volumeGroupStackId>
+			   <tenantId>${tenantId}</tenantId>
+			   <cloudSiteId>${cloudSiteId}</cloudSiteId>
+			   <volumeGroupCreated>true</volumeGroupCreated>
+			   <msoRequest>
+			      <requestId>${requestId}</requestId>
+			      <serviceInstanceId>${serviceId}</serviceInstanceId>
+			   </msoRequest>
+			   <messageId>${messageId}</messageId>
+			</volumeGroupRollback>
+			<skipAAI>true</skipAAI>
+			<notificationUrl>${notificationUrl}</notificationUrl>
+		</rollbackVolumeGroupRequest>
+		""" 
+		
+		return request	
+	}
 
+	public String updateRollbackVolumeGroupRequestXml(String rollabackRequest, String heatStackId) {
+		String newRequest = rollabackRequest.replace("{{VOLUMEGROUPSTACKID}}", heatStackId)
+		return newRequest
+	}
 	
 	/**
 	 * Validate VNF adapter response
 	 * @param execution
 	 */
-	public void validateVnfResponse(Execution execution, isDebugEnabled) {
+	public void validateVnfResponse(DelegateExecution execution, isDebugEnabled) {
 		def vnfSuccess = execution.getVariable('VNFREST_SuccessIndicator')
 		utils.log("DEBUG", "vnfAdapterSuccessIndicator: "+ vnfSuccess, isDebugEnabled)
 		if(vnfSuccess==true) {
-			def vnfRollbackRequest = execution.getVariable(prefix+"rollbackVnfARequest")
-			utils.log("DEBUG", "vnfAdapter rollback request: "+ vnfRollbackRequest, isDebugEnabled)
+			String createVnfAResponse = execution.getVariable(prefix+"createVnfAResponse")
+			String heatStackID = utils.getNodeText1(createVnfAResponse, "volumeGroupStackId")
+			String vnfRollbackRequest = execution.getVariable(prefix+"rollbackVnfARequest")
+			String updatedVnfRollbackRequest = updateRollbackVolumeGroupRequestXml(vnfRollbackRequest, heatStackID)
+			utils.log("DEBUG", "vnfAdapter rollback request: "+ updatedVnfRollbackRequest, isDebugEnabled)
 			RollbackData rollbackData = execution.getVariable("rollbackData")
-			rollbackData.put("DCVFMODULEVOL", "rollbackVnfARequest", vnfRollbackRequest)
+			rollbackData.put("DCVFMODULEVOL", "rollbackVnfARequest", updatedVnfRollbackRequest)
 			rollbackData.put("DCVFMODULEVOL", "isCreateVnfRollbackNeeded", "true")
 		}
-
 	}
 	
 
@@ -495,7 +511,7 @@
 	 * @param execution
 	 * @param isDebugEnabled
 	 */
-	public void callRESTUpdateCreatedVolGrpName(Execution execution, isDebugEnabled) {
+	public void callRESTUpdateCreatedVolGrpName(DelegateExecution execution, isDebugEnabled) {
 
 		String requeryAAIVolGrpNameResponse = execution.getVariable(prefix+"queryAAIVolGrpNameResponse")
 		String volumeGroupId = utils.getNodeText1(requeryAAIVolGrpNameResponse, "volume-group-id")
@@ -554,7 +570,7 @@
 	 * @param execution
 	 * @param isDebugEnabled
 	 */
-	public void callRESTQueryAAIGenericVnf(Execution execution, isDebugEnabled) {
+	public void callRESTQueryAAIGenericVnf(DelegateExecution execution, isDebugEnabled) {
 
 		def vnfId = execution.getVariable('vnfId')
 
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVnf.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVnf.groovy
index 6b98782..adc2b69 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVnf.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVnf.groovy
@@ -20,9 +20,10 @@
 package org.openecomp.mso.bpmn.infrastructure.scripts
 
 import static org.apache.commons.lang3.StringUtils.*
+
 import org.openecomp.mso.bpmn.core.RollbackData
 import org.camunda.bpm.engine.delegate.BpmnError
-import org.camunda.bpm.engine.runtime.Execution
+import org.camunda.bpm.engine.delegate.DelegateExecution
 import org.springframework.web.util.UriUtils
 import org.openecomp.mso.bpmn.common.scripts.AaiUtil
 import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor
@@ -55,7 +56,7 @@
 	 * @param - execution
 	 *
 	 */
-	public void preProcessRequest(Execution execution) {
+	public void preProcessRequest(DelegateExecution execution) {
 		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 		utils.log("DEBUG", " *** STARTED DoCreateVnf PreProcessRequest Process*** ", isDebugEnabled)
@@ -201,9 +202,9 @@
 			utils.logAudit("SDNC Callback URL: " + sdncCallbackUrl)
 			logDebug("SDNC Callback URL is: " + sdncCallbackUrl, isDebugEnabled)
 			
-			VnfResource vnfResource = (VnfResource) execution.getVariable("vnfResourceDecomposition")
-			
+			VnfResource vnfResource = (VnfResource) execution.getVariable((String)"vnfResourceDecomposition")
 			String nfRole = vnfResource.getNfRole()
+
 			execution.setVariable("DoCVNF_nfRole", nfRole)
 			logDebug("NF Role is: " + nfRole, isDebugEnabled)
 			
@@ -235,37 +236,45 @@
 		}
 		utils.log("DEBUG", "*** COMPLETED DoCreateVnf PreProcessRequest Process ***", isDebugEnabled)
 	}
-
 	
-	public void prepareCreateGenericVnf (Execution execution) {
+	private Object getVariableEnforced(DelegateExecution execution, String name){
+		Object enforced = execution.getVariable(name)
+		if(!enforced){
+		return "";
+		}
+		return enforced;
+	}
+	
+	public void prepareCreateGenericVnf (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 
 		utils.log("DEBUG", " *** STARTED DoCreateVnf PrepareCreateGenericVnf Process *** ", isDebugEnabled)
 		try {
 			//Get Vnf Info
-			String vnfId = execution.getVariable("DoCVNF_vnfId")
-			def vnfName = execution.getVariable("DoCVNF_vnfName")
+			String vnfId = getVariableEnforced(execution, "DoCVNF_vnfId")
+			String vnfName = getVariableEnforced(execution, "DoCVNF_vnfName")
 			if (vnfName == null) {
 				vnfName = "sdncGenerated"
 				utils.log("DEBUG", "Sending a dummy VNF name to AAI - the name will be generated by SDNC: " + vnfName, isDebugEnabled)
 			}
-			def vnfType = execution.getVariable("DoCVNF_vnfType")
-			def serviceId = execution.getVariable("DoCVNF_serviceId")
-			def orchStatus = execution.getVariable("DoCVNF_orchStatus")
-			def modelInvariantId = execution.getVariable("DoCVNF_modelInvariantId")
-			def modelVersionId = execution.getVariable("DoCVNF_modelVersionId")
-			def modelCustomizationId = execution.getVariable("DoCVNF_modelCustomizationId")
+			String vnfType = getVariableEnforced(execution, "DoCVNF_vnfType")
+			utils.log("DEBUG", "WE ARE HERE:" + vnfType, isDebugEnabled)
+			String serviceId = getVariableEnforced(execution, "DoCVNF_serviceId")
+			String orchStatus = getVariableEnforced(execution, "DoCVNF_orchStatus")
+			String modelInvariantId = getVariableEnforced(execution, "DoCVNF_modelInvariantId")
+			String modelVersionId = getVariableEnforced(execution, "DoCVNF_modelVersionId")
+			String modelCustomizationId = getVariableEnforced(execution, "DoCVNF_modelCustomizationId")
 			// TODO: 1702 Variable
-			def equipmentRole = execution.getVariable("DoCVNF_equipmentRole")
-			def nfType = execution.getVariable("DoCVNF_nfType")
-			def nfRole = execution.getVariable("DoCVNF_nfRole")
-			def nfFunction = execution.getVariable("DoCVNF_nfFunction")
-			def nfNamingCode = execution.getVariable("DoCVNF_nfNamingCode")
-
+			String equipmentRole = getVariableEnforced(execution, "DoCVNF_equipmentRole")
+			String nfType = getVariableEnforced(execution, "DoCVNF_nfType")
+			String nfRole = getVariableEnforced(execution, "DoCVNF_nfRole")
+			String nfFunction = getVariableEnforced(execution, "DoCVNF_nfFunction")
+			String nfNamingCode = getVariableEnforced(execution, "DoCVNF_nfNamingCode")
+			
 			//Get Service Instance Info
-			def serviceInstanceId = execution.getVariable("DoCVNF_serviceInstanceId")
-			String siRelatedLink = execution.getVariable("GENGS_siResourceLink")
+			String serviceInstanceId = getVariableEnforced(execution, "DoCVNF_serviceInstanceId")
+			String siRelatedLink = getVariableEnforced(execution, "GENGS_siResourceLink")
 
 			int custStart = siRelatedLink.indexOf("customer/")
 			int custEnd = siRelatedLink.indexOf("/service-subscriptions")
@@ -324,7 +333,7 @@
 		utils.log("DEBUG", "*** COMPLETED DoCreateVnf PrepareCreateGenericVnf Process ***", isDebugEnabled)
 	}
 	
-	public void postProcessCreateGenericVnf (Execution execution) {
+	public void postProcessCreateGenericVnf (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 
@@ -344,7 +353,7 @@
 	}
 	
 	
-	public void preProcessSDNCAssignRequest(Execution execution){
+	public void preProcessSDNCAssignRequest(DelegateExecution execution){
 		def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix", Prefix)
 		logDebug(" ======== STARTED preProcessSDNCAssignRequest ======== ", isDebugLogEnabled)
@@ -370,7 +379,7 @@
 		logDebug("======== COMPLETED preProcessSDNCAssignRequest ======== ", isDebugLogEnabled)
 	}
 	
-	public void preProcessSDNCActivateRequest(Execution execution) {
+	public void preProcessSDNCActivateRequest(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.preProcessSDNCActivateRequest(' +
 			'execution=' + execution.getId() +
 			')'
@@ -395,7 +404,7 @@
 		logDebug("======== COMPLETED  preProcessSDNCActivateRequest Process ======== ", isDebugLogEnabled)
 	}
 	
-	public String buildSDNCRequest(Execution execution, String svcInstId, String action){
+	public String buildSDNCRequest(DelegateExecution execution, String svcInstId, String action){
 		
 				String uuid = execution.getVariable('testReqId') // for junits
 				if(uuid==null){
@@ -477,7 +486,7 @@
 			return sdncRequest
 	}
 		
-	public void validateSDNCResponse(Execution execution, String response, String method){
+	public void validateSDNCResponse(DelegateExecution execution, String response, String method){
 		def isDebugLogEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 		logDebug(" *** STARTED ValidateSDNCResponse Process*** ", isDebugLogEnabled)
@@ -523,7 +532,7 @@
 		logDebug(" *** COMPLETED ValidateSDNCResponse Process*** ", isDebugLogEnabled)
 	}
 	
-	public void preProcessSDNCGetRequest(Execution execution){
+	public void preProcessSDNCGetRequest(DelegateExecution execution){
 		def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix", Prefix)
 		utils.log("DEBUG", " ======== STARTED preProcessSDNCGetRequest Process ======== ", isDebugLogEnabled)
@@ -596,7 +605,7 @@
 	 *
 	 * @param execution The flow's execution instance.
 	 */
-	public void prepUpdateAAIGenericVnf(Execution execution) {
+	public void prepUpdateAAIGenericVnf(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.prepUpdateAAIGenericVnf(' +
 			'execution=' + execution.getId() +
 			')'
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVnfAndModules.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVnfAndModules.groovy
index 3088340..4e570f8 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVnfAndModules.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVnfAndModules.groovy
@@ -37,7 +37,7 @@
 import org.openecomp.mso.bpmn.core.json.DecomposeJsonUtil
 import org.openecomp.mso.bpmn.core.json.JsonUtils
 import org.camunda.bpm.engine.delegate.BpmnError
-import org.camunda.bpm.engine.runtime.Execution;
+import org.camunda.bpm.engine.delegate.DelegateExecution;
 
 import static org.apache.commons.lang3.StringUtils.*;
 
@@ -61,7 +61,7 @@
 	*
 	* @param - execution
 	*/
-   public void preProcessRequest(Execution execution) {
+   public void preProcessRequest(DelegateExecution execution) {
 	   def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled")
 	   execution.setVariable("prefix",Prefix)
 	   utils.log("DEBUG", " *** STARTED DoCreateVnfAndModules PreProcessRequest Process*** ", isDebugLogEnabled)
@@ -114,6 +114,9 @@
 			   }
 		   }
 		   execution.setVariable("vnfId", vnfId)
+		   
+		   // Set aLaCarte to false
+		   execution.setVariable("aLaCarte", false)
 
 		   def rollbackData = execution.getVariable("rollbackData")
 		   if (rollbackData == null) {
@@ -145,7 +148,7 @@
    }
 
 
-   public void queryCatalogDB (Execution execution) {
+   public void queryCatalogDB (DelegateExecution execution) {
 	   def isDebugLogEnabled=execution.getVariable("isDebugLogEnabled")
 	   execution.setVariable("prefix",Prefix)
 
@@ -251,7 +254,7 @@
 	   utils.log("DEBUG", "*** COMPLETED DoCreateVnfAndModules QueryCatalogDB Process ***", isDebugLogEnabled)
    }
 
-   public void preProcessAddOnModule(Execution execution){
+   public void preProcessAddOnModule(DelegateExecution execution){
 	   def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled")
 	   execution.setVariable("prefix", Prefix)
 	   logDebug(" ======== STARTED preProcessAddOnModule ======== ", isDebugLogEnabled)
@@ -289,7 +292,7 @@
 	   logDebug("======== COMPLETED preProcessAddOnModule ======== ", isDebugLogEnabled)
    }
 
-   public void postProcessAddOnModule(Execution execution){
+   public void postProcessAddOnModule(DelegateExecution execution){
 	   def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled")
 	   execution.setVariable("prefix", Prefix)
 	   logDebug(" ======== STARTED postProcessAddOnModule ======== ", isDebugLogEnabled)
@@ -305,7 +308,7 @@
 	   logDebug("======== COMPLETED postProcessAddOnModule ======== ", isDebugLogEnabled)
    }
    
-   public void validateBaseModule(Execution execution){
+   public void validateBaseModule(DelegateExecution execution){
 	   def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled")
 	   execution.setVariable("prefix", Prefix)
 	   logDebug(" ======== STARTED validateBaseModule ======== ", isDebugLogEnabled)
@@ -333,7 +336,7 @@
 	   logDebug("======== COMPLETED validateBaseModule ======== ", isDebugLogEnabled)
    }
 
-   public void validateAddOnModule(Execution execution){
+   public void validateAddOnModule(DelegateExecution execution){
 	   def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled")
 	   execution.setVariable("prefix", Prefix)
 	   logDebug(" ======== STARTED validateAddOnModule ======== ", isDebugLogEnabled)
@@ -362,7 +365,7 @@
 	   logDebug("======== COMPLETED validateAddOnModule ======== ", isDebugLogEnabled)
    }   
    
-   public void preProcessRollback (Execution execution) {
+   public void preProcessRollback (DelegateExecution execution) {
 	   def isDebugLogEnabled=execution.getVariable("isDebugLogEnabled")
 	   utils.log("DEBUG"," ***** preProcessRollback ***** ", isDebugLogEnabled)
 	   try {
@@ -383,7 +386,7 @@
 	   utils.log("DEBUG"," *** Exit preProcessRollback *** ", isDebugLogEnabled)
    }
 
-   public void postProcessRollback (Execution execution) {
+   public void postProcessRollback (DelegateExecution execution) {
 	   def isDebugLogEnabled=execution.getVariable("isDebugLogEnabled")
 	   utils.log("DEBUG"," ***** postProcessRollback ***** ", isDebugLogEnabled)
 	   String msg = ""
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVnfAndModulesRollback.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVnfAndModulesRollback.groovy
index c5d87d8..e931903 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVnfAndModulesRollback.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVnfAndModulesRollback.groovy
@@ -25,7 +25,7 @@
 import org.json.JSONArray;
 
 import org.camunda.bpm.engine.delegate.BpmnError
-import org.camunda.bpm.engine.runtime.Execution;
+import org.camunda.bpm.engine.delegate.DelegateExecution;
 
 import static org.apache.commons.lang3.StringUtils.*;
 
@@ -55,7 +55,7 @@
 	 * @param - execution
 	 *
 	 */
-	public void preProcessRequest(Execution execution) {
+	public void preProcessRequest(DelegateExecution execution) {
 		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 		utils.log("DEBUG", " *** STARTED DoCreateVnfAndModulesRollback PreProcessRequest Process*** ", isDebugEnabled)
@@ -117,7 +117,10 @@
 			}
 			else {
 				execution.setVariable("DCVAMR_numOfModulesToDelete", numOfAddOnModules + 1)				
-			}			
+			}
+			
+			// Set aLaCarte to false
+			execution.setVariable("DCVAMR_aLaCarte", false)			
 			
 		}catch(BpmnError b){
 			utils.log("DEBUG", "Rethrowing MSOWorkflowException", isDebugEnabled)
@@ -132,7 +135,7 @@
 
 	
 	
-	public void preProcessCreateVfModuleRollback(Execution execution){
+	public void preProcessCreateVfModuleRollback(DelegateExecution execution){
 		def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix", Prefix)
 		logDebug(" ======== STARTED preProcessCreateVfModuleRollback ======== ", isDebugLogEnabled)
@@ -167,7 +170,7 @@
 	}
 	
 	
-	public void postProcessCreateVfModuleRollback(Execution execution){
+	public void postProcessCreateVfModuleRollback(DelegateExecution execution){
 		def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix", Prefix)
 		logDebug(" ======== STARTED postProcessCreateVfModuleRollback ======== ", isDebugLogEnabled)
@@ -190,7 +193,7 @@
 	}
 	
 	
-	public void preProcessSDNCDeactivateRequest(Execution execution){
+	public void preProcessSDNCDeactivateRequest(DelegateExecution execution){
 		def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix", Prefix)
 		logDebug(" ======== STARTED preProcessSDNCDeactivateRequest ======== ", isDebugLogEnabled)
@@ -214,7 +217,7 @@
 		logDebug("======== COMPLETED preProcessSDNCDeactivateRequest ======== ", isDebugLogEnabled)
 	}
 	
-	public void preProcessSDNCUnassignRequest(Execution execution) {
+	public void preProcessSDNCUnassignRequest(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.preProcessSDNCUnassignRequest(' +
 			'execution=' + execution.getId() +
 			')'
@@ -239,7 +242,7 @@
 		logDebug("======== COMPLETED  preProcessSDNCUnassignRequest Process ======== ", isDebugLogEnabled)
 	}
 	
-	public String buildSDNCRequest(Execution execution, String svcInstId, String action){
+	public String buildSDNCRequest(DelegateExecution execution, String svcInstId, String action){
 		
 				String uuid = execution.getVariable('testReqId') // for junits
 				if(uuid==null){
@@ -296,7 +299,7 @@
 			return sdncRequest
 	}
 		
-	public void validateSDNCResponse(Execution execution, String response, String method){
+	public void validateSDNCResponse(DelegateExecution execution, String response, String method){
 		def isDebugLogEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 		logDebug(" *** STARTED ValidateSDNCResponse Process*** ", isDebugLogEnabled)
@@ -321,7 +324,7 @@
 		logDebug(" *** COMPLETED ValidateSDNCResponse Process*** ", isDebugLogEnabled)
 	}
 	
-	public void setSuccessfulRollbackStatus (Execution execution){
+	public void setSuccessfulRollbackStatus (DelegateExecution execution){
 		def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix", Prefix)
 		logDebug(" ======== STARTED setSuccessfulRollbackStatus ======== ", isDebugLogEnabled)
@@ -338,7 +341,7 @@
 		logDebug("======== COMPLETED setSuccessfulRollbackStatus ======== ", isDebugLogEnabled)
 	}
 	
-	public void setFailedRollbackStatus (Execution execution){
+	public void setFailedRollbackStatus (DelegateExecution execution){
 		def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix", Prefix)
 		logDebug(" ======== STARTED setFailedRollbackStatus ======== ", isDebugLogEnabled)
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCustomDeleteE2EServiceInstance.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCustomDeleteE2EServiceInstance.groovy
index 40e2baa..a32fd7b 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCustomDeleteE2EServiceInstance.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCustomDeleteE2EServiceInstance.groovy
@@ -41,7 +41,7 @@
 import javax.xml.parsers.DocumentBuilderFactory
 
 import org.camunda.bpm.engine.delegate.BpmnError
-import org.camunda.bpm.engine.runtime.Execution
+import org.camunda.bpm.engine.delegate.DelegateExecution
 import org.json.JSONObject;
 import org.apache.commons.lang3.*
 import org.apache.commons.codec.binary.Base64;
@@ -79,7 +79,7 @@
 	ExceptionUtil exceptionUtil = new ExceptionUtil()
 	JsonUtils jsonUtil = new JsonUtils()
 
-	public void preProcessRequest (Execution execution) {
+	public void preProcessRequest (DelegateExecution execution) {
 		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
 		utils.log("INFO"," ***** preProcessRequest *****",  isDebugEnabled)
 		String msg = ""
@@ -155,13 +155,13 @@
 	}
 	
 
-	public void preProcessVFCDelete (Execution execution) {
+	public void preProcessVFCDelete (DelegateExecution execution) {
 	}
 	
-	public void postProcessVFCDelete(Execution execution, String response, String method) {
+	public void postProcessVFCDelete(DelegateExecution execution, String response, String method) {
 	}
 	
-	public void preProcessSDNCDelete (Execution execution) {
+	public void preProcessSDNCDelete (DelegateExecution execution) {
 		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
 		utils.log("INFO"," ***** preProcessSDNCDelete *****", isDebugEnabled)
 		String msg = ""
@@ -275,7 +275,7 @@
 		utils.log("INFO"," *****Exit preProcessSDNCDelete *****", isDebugEnabled)
 	}
 
-	public void postProcessSDNCDelete(Execution execution, String response, String method) {
+	public void postProcessSDNCDelete(DelegateExecution execution, String response, String method) {
 
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		utils.log("INFO"," ***** postProcessSDNC " + method + " *****", isDebugEnabled)
@@ -307,7 +307,7 @@
 		utils.log("INFO"," *** Exit postProcessSDNC " + method + " ***", isDebugEnabled)
 	}
 
-	public void postProcessAAIGET(Execution execution) {
+	public void postProcessAAIGET(DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		utils.log("INFO"," ***** postProcessAAIGET ***** ", isDebugEnabled)
 		String msg = ""
@@ -439,7 +439,7 @@
 		utils.log("INFO"," *** Exit postProcessAAIGET *** ", isDebugEnabled)
 	}
 
-	public void postProcessAAIDEL(Execution execution) {
+	public void postProcessAAIDEL(DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		utils.log("INFO"," ***** postProcessAAIDEL ***** ", isDebugEnabled)
 		String msg = ""
@@ -469,7 +469,7 @@
 		utils.log("INFO"," *** Exit postProcessAAIDEL *** ", isDebugEnabled)
 	}
 	
-	public void preInitResourcesOperStatus(Execution execution){
+   public void preInitResourcesOperStatus(DelegateExecution execution){
         def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
 
         utils.log("INFO", " ======== STARTED preInitResourcesOperStatus Process ======== ", isDebugEnabled)
@@ -517,7 +517,7 @@
                     resourceTemplateUUIDs  = resourceTemplateUUIDs + it.resourceInstanceId + ":"
                 }
             }           
-            execution.setVariable("URN_mso_openecomp_adapters_db_endpoint","http://mso.mso.testlab.openecomp.org:8080/dbadapters/RequestsDbAdapter")
+            execution.setVariable("URN_mso_adapters_openecomp_db_endpoint","http://mso.mso.testlab.openecomp.org:8080/dbadapters/RequestsDbAdapter")
 
             String payload =
                 """<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCustomDeleteE2EServiceInstanceV2.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCustomDeleteE2EServiceInstanceV2.groovy
index 4c3f6bc..03ba10a 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCustomDeleteE2EServiceInstanceV2.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCustomDeleteE2EServiceInstanceV2.groovy
@@ -20,40 +20,22 @@
  */
 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.json.JsonUtils
+import org.apache.commons.lang3.*
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.delegate.DelegateExecution
+import org.json.JSONArray;
+import org.json.JSONObject;
+import org.openecomp.mso.bpmn.common.scripts.AaiUtil
 import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor
 import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil
-import org.openecomp.mso.bpmn.common.scripts.SDNCAdapterUtils
 import org.openecomp.mso.bpmn.core.WorkflowException
+import org.openecomp.mso.bpmn.core.json.JsonUtils
 import org.openecomp.mso.rest.APIResponse;
-import org.openecomp.mso.rest.RESTClient
-import org.openecomp.mso.rest.RESTConfig
-
-import org.openecomp.mso.bpmn.common.scripts.AaiUtil
-
-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.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;
+import groovy.json.*
 
 /**
  * This groovy class supports the <class>DoDeleteE2EServiceInstance.bpmn</class> process.
@@ -81,7 +63,7 @@
 	ExceptionUtil exceptionUtil = new ExceptionUtil()
 	JsonUtils jsonUtil = new JsonUtils()
 
-	public void preProcessRequest (Execution execution) {
+	public void preProcessRequest (DelegateExecution execution) {
 		
 		def method = getClass().getSimpleName() + '.buildAPPCRequest(' +'execution=' + execution.getId() +')'
 		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
@@ -163,7 +145,7 @@
 	
 
 
-	public void postProcessAAIGET(Execution execution) {
+	public void postProcessAAIGET(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.postProcessAAIGET(' +'execution=' + execution.getId() +')'
 		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
 		utils.log("INFO","Entered " + method, isDebugEnabled)
@@ -221,7 +203,7 @@
 		utils.log("INFO", "Exited " + method, isDebugEnabled)
 	}
 	
-	private void loadResourcesProperties(Execution execution) {
+	private void loadResourcesProperties(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.loadResourcesProperties(' +'execution=' + execution.getId() +')'
 		def isDebugEnabled = execution.getVariable("isDebugEnabled")
 		utils.log("INFO","Entered " + method, isDebugEnabled)
@@ -255,7 +237,7 @@
         }
 	    utils.log("INFO", "Exited " + method, isDebugEnabled)
 	}
-	private void sortDeleteResource(Execution execution) {
+	private void sortDeleteResource(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.sortDeleteResource(' +'execution=' + execution.getId() +')'
 		def isDebugEnabled = execution.getVariable("isDebugEnabled")
 		utils.log("INFO","Entered " + method, isDebugEnabled)
@@ -339,7 +321,7 @@
 	    utils.log("INFO", "Exited " + method, isDebugEnabled)
 		
 	}
-	public void prepareServiceDeleteResource(Execution execution) {
+	public void prepareServiceDeleteResource(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.prepareServiceDeleteResource(' +'execution=' + execution.getId() +')'
 		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
 		utils.log("INFO","Entered " + method, isDebugEnabled)
@@ -624,7 +606,7 @@
 		utils.log("INFO", "Exited " + method, isDebugEnabled)
 	}
 	
-	private String getAaiAr(Execution execution, String relink) {
+	private String getAaiAr(DelegateExecution execution, String relink) {
 		def method = getClass().getSimpleName() + '.getAaiAr(' +'execution=' + execution.getId() +')'
 		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
 		utils.log("INFO","Entered " + method, isDebugEnabled)
@@ -650,7 +632,7 @@
 	/**
 	 * prepare Decompose next resource to create request
 	 */
-	public void preProcessDecomposeNextResource(Execution execution){
+	public void preProcessDecomposeNextResource(DelegateExecution execution){
         def method = getClass().getSimpleName() + '.getAaiAr(' +'execution=' + execution.getId() +')'
 		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
 		utils.log("INFO","Entered " + method, isDebugEnabled)
@@ -708,7 +690,7 @@
 	/**
 	 * post Decompose next resource to create request
 	 */
-	public void postProcessDecomposeNextResource(Execution execution){
+	public void postProcessDecomposeNextResource(DelegateExecution execution){
         def method = getClass().getSimpleName() + '.postProcessDecomposeNextResource(' +'execution=' + execution.getId() +')'
 		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
 		utils.log("INFO","Entered " + method, isDebugEnabled)
@@ -750,7 +732,7 @@
 	/**
 	* prepare post Unkown Resource Type 
 	*/
-	public void postOtherControllerType(Execution execution){
+	public void postOtherControllerType(DelegateExecution execution){
         def method = getClass().getSimpleName() + '.postOtherControllerType(' +'execution=' + execution.getId() +')'
 		def isDebugEnabled = execution.getVariable("isDebugEnabled")
 		utils.log("INFO","Entered " + method, isDebugEnabled)
@@ -805,7 +787,7 @@
         }    
         utils.log("INFO", "Exited " + method, isDebugEnabled)
     }
-	public void preProcessSDNCDelete (Execution execution) {
+	public void preProcessSDNCDelete (DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.preProcessSDNCDelete(' +'execution=' + execution.getId() +')'
 		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
 		utils.log("INFO","Entered " + method, isDebugEnabled)
@@ -921,7 +903,7 @@
 		utils.log("INFO", "Exited " + method, isDebugEnabled)
 	}
 
-	public void postProcessSDNCDelete(Execution execution, String response, String action) {
+	public void postProcessSDNCDelete(DelegateExecution execution, String response, String action) {
 
 		def method = getClass().getSimpleName() + '.postProcessSDNCDelete(' +'execution=' + execution.getId() +')'
 		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
@@ -955,7 +937,7 @@
 		utils.log("INFO", "Exited " + method, isDebugEnabled)
 	}
 	
-	public void postProcessAAIDEL(Execution execution) {
+	public void postProcessAAIDEL(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.postProcessAAIDEL(' +'execution=' + execution.getId() +')'
 		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
 		utils.log("INFO","Entered " + method, isDebugEnabled)
@@ -989,7 +971,7 @@
 	/**
 	 * Init the service Operation Status
 	 */
-	public void preUpdateServiceOperationStatus(Execution execution){
+	public void preUpdateServiceOperationStatus(DelegateExecution execution){
         def method = getClass().getSimpleName() + '.preUpdateServiceOperationStatus(' +'execution=' + execution.getId() +')'
 		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
 		utils.log("INFO","Entered " + method, isDebugEnabled)
@@ -1053,7 +1035,7 @@
         utils.log("INFO", "Exited " + method, isDebugEnabled)
 	}
 	
-	public void preInitResourcesOperStatus(Execution execution){
+	public void preInitResourcesOperStatus(DelegateExecution execution){
         def method = getClass().getSimpleName() + '.preInitResourcesOperStatus(' +'execution=' + execution.getId() +')'
 		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
 		utils.log("INFO","Entered " + method, isDebugEnabled)
@@ -1166,7 +1148,7 @@
 		utils.log("INFO", "Exited " + method, isDebugEnabled)  
 	}
 
-	public void postProcessVFCDelete(Execution execution, String response, String action) {
+	public void postProcessVFCDelete(DelegateExecution execution, String response, String action) {
 		def method = getClass().getSimpleName() + '.postProcessVFCDelete(' +'execution=' + execution.getId() +')'
 		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
 		utils.log("INFO","Entered " + method, isDebugEnabled)
@@ -1184,4 +1166,4 @@
 		utils.log("INFO", "Exited " + method, isDebugEnabled)  
 	}
 }
- 
\ No newline at end of file
+ 
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteNetworkInstance.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteNetworkInstance.groovy
index a340755..7ded194 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteNetworkInstance.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteNetworkInstance.groovy
@@ -34,7 +34,7 @@
 import java.util.UUID;
 
 import org.camunda.bpm.engine.delegate.BpmnError
-import org.camunda.bpm.engine.runtime.Execution
+import org.camunda.bpm.engine.delegate.DelegateExecution
 import org.apache.commons.lang3.*
 import org.apache.commons.codec.binary.Base64;
 import org.springframework.web.util.UriUtils
@@ -51,7 +51,7 @@
 	NetworkUtils networkUtils = new NetworkUtils()
 	SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
 
-	public InitializeProcessVariables(Execution execution){
+	public InitializeProcessVariables(DelegateExecution execution){
 		/* Initialize all the process variables in this block */
 
 		execution.setVariable(Prefix + "networkRequest", "")
@@ -102,7 +102,7 @@
 	//     Pre or Prepare Request Section
 	// **************************************************
 
-	public void preProcessRequest (Execution execution) {
+	public void preProcessRequest (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 
@@ -229,7 +229,7 @@
 	}
 
 
-	public void callRESTQueryAAI (Execution execution) {
+	public void callRESTQueryAAI (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 
@@ -244,7 +244,7 @@
 		String aai_endpoint = execution.getVariable("URN_aai_endpoint")
 		AaiUtil aaiUriUtil = new AaiUtil(this)
 		String aai_uri = aaiUriUtil.getNetworkL3NetworkUri(execution)
-		String queryAAIRequest = "${aai_endpoint}${aai_uri}/" + networkId + "?depth=1"
+		String queryAAIRequest = "${aai_endpoint}${aai_uri}/" + networkId + "?depth=all"
 		utils.logAudit(queryAAIRequest)
 		execution.setVariable(Prefix + "queryAAIRequest", queryAAIRequest)
 		utils.log("DEBUG", Prefix + "AAIRequest - " + "\n" + queryAAIRequest, isDebugEnabled)
@@ -328,7 +328,7 @@
 
 	}
 
-	public void callRESTQueryAAICloudRegion (Execution execution) {
+	public void callRESTQueryAAICloudRegion (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix", Prefix)
 
@@ -375,7 +375,7 @@
 
 	}
 
-	public void prepareNetworkRequest (Execution execution) {
+	public void prepareNetworkRequest (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix", Prefix)
 
@@ -463,7 +463,7 @@
 	 * This method is used instead of an HTTP Connector task because the
 	 * connector does not allow DELETE with a body.
 	 */
-	public void sendRequestToVnfAdapter(Execution execution) {
+	public void sendRequestToVnfAdapter(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.sendRequestToVnfAdapter(' +
 			'execution=' + execution.getId() +
 			')'
@@ -498,7 +498,7 @@
 	}
 
 
-	public void prepareSDNCRequest (Execution execution) {
+	public void prepareSDNCRequest (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix", Prefix)
 
@@ -548,7 +548,7 @@
 
 	}
 
-	public void prepareRpcSDNCRequest (Execution execution) {
+	public void prepareRpcSDNCRequest (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix", Prefix)
 
@@ -588,7 +588,7 @@
 	}
 	
 	
-	public void prepareRpcSDNCDeactivate(Execution execution) {
+	public void prepareRpcSDNCDeactivate(DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 
@@ -626,7 +626,7 @@
 	//     Post or Validate Response Section
 	// **************************************************
 
-	public void validateNetworkResponse (Execution execution) {
+	public void validateNetworkResponse (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix", Prefix)
 
@@ -700,7 +700,7 @@
 
 	}
 
-	public void validateSDNCResponse (Execution execution) {
+	public void validateSDNCResponse (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix", Prefix)
 
@@ -728,7 +728,7 @@
 
 	}
 
-	public void validateRpcSDNCDeactivateResponse (Execution execution) {
+	public void validateRpcSDNCDeactivateResponse (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 
@@ -756,7 +756,7 @@
 
 	}
 	
-	public void prepareRpcSDNCDeactivateRollback(Execution execution) {
+	public void prepareRpcSDNCDeactivateRollback(DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 
@@ -789,7 +789,7 @@
 
 	}
 	
-	public void prepareRollbackData(Execution execution) {
+	public void prepareRollbackData(DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 		
@@ -825,7 +825,7 @@
 		
 	}
 	
-	public void postProcessResponse (Execution execution) {
+	public void postProcessResponse (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix", Prefix)
 
@@ -886,7 +886,7 @@
 
 	}
 
-	public void prepareSuccessRollbackData(Execution execution) {
+	public void prepareSuccessRollbackData(DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 		
@@ -935,7 +935,7 @@
 		
 	}
 
-	public void prepareRpcSDNCUnassignRollback(Execution execution) {
+	public void prepareRpcSDNCUnassignRollback(DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 
@@ -972,7 +972,7 @@
 
 	}
 	
-	public void prepareSDNCRollback (Execution execution) {
+	public void prepareSDNCRollback (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix", Prefix)
 
@@ -1025,7 +1025,7 @@
 
 	}
 	
-	public void setExceptionFlag(Execution execution){
+	public void setExceptionFlag(DelegateExecution execution){
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 		
@@ -1055,7 +1055,7 @@
 	//     Build Error Section
 	// *******************************
 
-	public void processJavaException(Execution execution){
+	public void processJavaException(DelegateExecution execution){
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 		try{
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteNetworkInstanceRollback.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteNetworkInstanceRollback.groovy
index 4c455e7..c45b90f 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteNetworkInstanceRollback.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteNetworkInstanceRollback.groovy
@@ -36,7 +36,7 @@
 import java.util.UUID;
 
 import org.camunda.bpm.engine.delegate.BpmnError
-import org.camunda.bpm.engine.runtime.Execution
+import org.camunda.bpm.engine.delegate.DelegateExecution
 import org.apache.commons.lang3.*
 import org.apache.commons.codec.binary.Base64;
 import org.springframework.web.util.UriUtils
@@ -59,7 +59,7 @@
 	 * This method is executed during the preProcessRequest task of the <class>DoDeleteNetworkInstanceRollback.bpmn</class> process.
 	 * @param execution
 	 */
-	public InitializeProcessVariables(Execution execution){
+	public InitializeProcessVariables(DelegateExecution execution){
 		/* Initialize all the process variables in this block */
 		
 		execution.setVariable(Prefix + "WorkflowException", null)
@@ -88,7 +88,7 @@
 	 * This method is executed during the preProcessRequest task of the <class>DoDeleteNetworkInstanceRollback.bpmn</class> process.
 	 * @param execution
 	 */
-	public void preProcessRequest (Execution execution) {
+	public void preProcessRequest (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 		
@@ -174,7 +174,7 @@
 
 	}
 	
-	public void validateRollbackResponses (Execution execution) {
+	public void validateRollbackResponses (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 
@@ -313,7 +313,7 @@
 
 
 	
-	public void processJavaException(Execution execution){
+	public void processJavaException(DelegateExecution execution){
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 		
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteServiceInstance.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteServiceInstance.groovy
index fd4162f..8fc1f41 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteServiceInstance.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteServiceInstance.groovy
@@ -37,7 +37,7 @@
 import javax.xml.parsers.DocumentBuilderFactory
 
 import org.camunda.bpm.engine.delegate.BpmnError
-import org.camunda.bpm.engine.runtime.Execution
+import org.camunda.bpm.engine.delegate.DelegateExecution
 import org.json.JSONObject;
 import org.apache.commons.lang3.*
 import org.apache.commons.codec.binary.Base64;
@@ -75,7 +75,7 @@
 	ExceptionUtil exceptionUtil = new ExceptionUtil()
 	JsonUtils jsonUtil = new JsonUtils()
 
-	public void preProcessRequest (Execution execution) {
+	public void preProcessRequest (DelegateExecution execution) {
 		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
 		utils.log("DEBUG"," ***** preProcessRequest *****",  isDebugEnabled)
 		String msg = ""
@@ -83,7 +83,7 @@
 		try {
 			String requestId = execution.getVariable("msoRequestId")
 			execution.setVariable("prefix",Prefix)
-
+			
 			//Inputs
 			//requestDetails.subscriberInfo. for AAI GET & PUT & SDNC assignToplology
 			String globalSubscriberId = execution.getVariable("globalSubscriberId") //globalCustomerId
@@ -150,57 +150,40 @@
 		utils.log("DEBUG"," ***** Exit preProcessRequest *****",  isDebugEnabled)
 	}
 
-	public void preProcessSDNCDelete (Execution execution) {
+	public void preProcessSDNCDelete (DelegateExecution execution) {
 		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
 		utils.log("DEBUG"," ***** preProcessSDNCDelete *****", isDebugEnabled)
 		String msg = ""
 
 		try {
-			def serviceInstanceId = execution.getVariable("serviceInstanceId")
-			def serviceInstanceName = execution.getVariable("serviceInstanceName")
-			def callbackURL = execution.getVariable("sdncCallbackUrl")
-			def requestId = execution.getVariable("msoRequestId")
-			def serviceId = execution.getVariable("productFamilyId")
-			def subscriptionServiceType = execution.getVariable("subscriptionServiceType")
-			def globalSubscriberId = execution.getVariable("globalSubscriberId") //globalCustomerId
+			def serviceInstanceId = execution.getVariable("serviceInstanceId") ?: ""
+			def serviceInstanceName = execution.getVariable("serviceInstanceName") ?: ""
+			def callbackURL = execution.getVariable("sdncCallbackUrl") ?: ""
+			def requestId = execution.getVariable("msoRequestId") ?: ""
+			def serviceId = execution.getVariable("productFamilyId") ?: ""
+			def subscriptionServiceType = execution.getVariable("subscriptionServiceType") ?: ""
+			def globalSubscriberId = execution.getVariable("globalSubscriberId") ?: "" //globalCustomerId
 
-			String serviceModelInfo = execution.getVariable("serviceModelInfo")
+			String serviceModelInfo = execution.getVariable("serviceModelInfo") ?: ""
 			def modelInvariantUuid = ""
 			def modelVersion = ""
 			def modelUuid = ""
 			def modelName = ""
 			if (!isBlank(serviceModelInfo))
 			{
-				modelInvariantUuid = jsonUtil.getJsonValue(serviceModelInfo, "modelInvariantUuid")
-				modelVersion = jsonUtil.getJsonValue(serviceModelInfo, "modelVersion")
-				modelUuid = jsonUtil.getJsonValue(serviceModelInfo, "modelUuid")
-				modelName = jsonUtil.getJsonValue(serviceModelInfo, "modelName")
+				modelInvariantUuid = jsonUtil.getJsonValue(serviceModelInfo, "modelInvariantUuid") ?: ""
+				modelVersion = jsonUtil.getJsonValue(serviceModelInfo, "modelVersion") ?: ""
+				modelUuid = jsonUtil.getJsonValue(serviceModelInfo, "modelUuid") ?: ""
+				modelName = jsonUtil.getJsonValue(serviceModelInfo, "modelName") ?: ""
 
-				if (modelInvariantUuid == null) {
-					modelInvariantUuid = ""
-				}
-				if (modelVersion == null) {
-					modelVersion = ""
-				}
-				if (modelUuid == null) {
-					modelUuid = ""
-				}
-				if (modelName == null) {
-					modelName = ""
-				}
-			}
-			if (serviceInstanceName == null) {
-				serviceInstanceName = ""
-			}
-			if (serviceId == null) {
-				serviceId = ""
 			}
 
-			def siParamsXml = execution.getVariable("siParamsXml")
-			def serviceType = execution.getVariable("serviceType")
-			if (serviceType == null)
+			def siParamsXml = execution.getVariable("siParamsXml") ?: ""
+			def msoAction = ""
+			// special URL for SDNW, msoAction helps set diff url in SDNCA
+			if("TRANSPORT".equalsIgnoreCase(execution.getVariable("serviceType")))
 			{
-				serviceType = ""
+				msoAction = "TRANSPORT"
 			}
 
 			def sdncRequestId = UUID.randomUUID().toString()
@@ -215,7 +198,7 @@
 							<sdncadapter:SvcAction>delete</sdncadapter:SvcAction>
 							<sdncadapter:SvcOperation>service-topology-operation</sdncadapter:SvcOperation>
 							<sdncadapter:CallbackUrl>${callbackURL}</sdncadapter:CallbackUrl>
-							<sdncadapter:MsoAction>${serviceType}</sdncadapter:MsoAction>
+							<sdncadapter:MsoAction>${msoAction}</sdncadapter:MsoAction>
 					</sdncadapter:RequestHeader>
 				<sdncadapterworkflow:SDNCRequestData>
 					<request-information>
@@ -229,12 +212,12 @@
 					<service-information>
 						<service-id>${serviceId}</service-id>
 						<subscription-service-type>${subscriptionServiceType}</subscription-service-type>
-						<onap-model-information>
+						<ecomp-model-information>
 					         <model-invariant-uuid>${modelInvariantUuid}</model-invariant-uuid>
 					         <model-uuid>${modelUuid}</model-uuid>
 					         <model-version>${modelVersion}</model-version>
 					         <model-name>${modelName}</model-name>
-					    </onap-model-information>
+					    </ecomp-model-information>
 						<service-instance-id>${serviceInstanceId}</service-instance-id>
 						<subscriber-name/>
 						<global-customer-id>${globalSubscriberId}</global-customer-id>
@@ -264,7 +247,7 @@
 		utils.log("DEBUG"," *****Exit preProcessSDNCDelete *****", isDebugEnabled)
 	}
 
-	public void postProcessSDNCDelete(Execution execution, String response, String method) {
+	public void postProcessSDNCDelete(DelegateExecution execution, String response, String method) {
 
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		utils.log("DEBUG"," ***** postProcessSDNC " + method + " *****", isDebugEnabled)
@@ -297,7 +280,7 @@
 		utils.log("DEBUG"," *** Exit postProcessSDNC " + method + " ***", isDebugEnabled)
 	}
 
-	public void postProcessAAIGET(Execution execution) {
+	public void postProcessAAIGET(DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		utils.log("DEBUG"," ***** postProcessAAIGET ***** ", isDebugEnabled)
 		String msg = ""
@@ -406,6 +389,33 @@
 						}
 
 					}
+					
+					//alacarte SIs are NOT sent to sdnc. exceptions are listed in config variable
+					String svcTypes = execution.getVariable("URN_sdnc_si_svc_types") ?: ""
+					utils.log("DEBUG", "SDNC SI serviceTypes:" + svcTypes, isDebugEnabled)
+					List<String> svcList = Arrays.asList(svcTypes.split("\\s*,\\s*"));
+					boolean isSdncService= false
+					for (String listEntry : svcList){
+						if (listEntry.equalsIgnoreCase(serviceType)){
+							isSdncService = true
+							break;
+						}
+					}
+					
+					//All Macros are sent to SDNC, TRANSPORT(Macro) is sent to SDNW
+					//Alacartes are sent to SDNC if they are listed in config variable above
+					execution.setVariable("sendToSDNC", true)
+					if(execution.getVariable("sdncVersion").equals("1610")) //alacarte
+					{
+						if(!isSdncService){
+							execution.setVariable("sendToSDNC", false)
+						}
+					}
+					
+					utils.log("DEBUG", "isSdncService: " + isSdncService, isDebugEnabled)
+					utils.log("DEBUG", "Send To SDNC: " + execution.getVariable("sendToSDNC"), isDebugEnabled)
+					utils.log("DEBUG", "Service Type: " + execution.getVariable("serviceType"), isDebugEnabled)
+					
 				}
 			}else{
 				boolean succInAAI = execution.getVariable("GENGS_SuccessIndicator")
@@ -436,7 +446,7 @@
 		utils.log("DEBUG"," *** Exit postProcessAAIGET *** ", isDebugEnabled)
 	}
 
-	public void postProcessAAIDEL(Execution execution) {
+	public void postProcessAAIDEL(DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		utils.log("DEBUG"," ***** postProcessAAIDEL ***** ", isDebugEnabled)
 		String msg = ""
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteVFCNetworkServiceInstance.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteVFCNetworkServiceInstance.groovy
index 7e957be..c71cb05 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteVFCNetworkServiceInstance.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteVFCNetworkServiceInstance.groovy
@@ -32,7 +32,7 @@
 import java.util.UUID;
 
 import org.camunda.bpm.engine.delegate.BpmnError 
-import org.camunda.bpm.engine.runtime.Execution
+import org.camunda.bpm.engine.delegate.DelegateExecution
 import org.apache.commons.lang3.*
 import org.apache.commons.codec.binary.Base64;
 import org.springframework.web.util.UriUtils 
@@ -46,7 +46,7 @@
  */
 public class DoDeleteVFCNetworkServiceInstance extends AbstractServiceTaskProcessor {
 
-
+            
     String vfcUrl = "/vfc/rest/v1/vfcadapter"
     
     String host = "http://mso.mso.testlab.openecomp.org:8080"
@@ -60,7 +60,7 @@
      * Inclouds:
      * generate the nsOperationKey
      */
-    public void preProcessRequest (Execution execution) {
+    public void preProcessRequest (DelegateExecution execution) {
         def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
         String msg = ""
         utils.log("INFO", " *** preProcessRequest() *** ", isDebugEnabled)
@@ -101,7 +101,7 @@
     /**
      * delete NS task
      */
-    public void deleteNetworkService(Execution execution) {
+    public void deleteNetworkService(DelegateExecution execution) {
         def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
         utils.log("INFO", " *** deleteNetworkService  start *** ", isDebugEnabled)
         String nsOperationKey = execution.getVariable("nsOperationKey");
@@ -121,7 +121,7 @@
     /**
      * instantiate NS task
      */
-    public void terminateNetworkService(Execution execution) {
+    public void terminateNetworkService(DelegateExecution execution) {
         def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
         utils.log("INFO", " *** terminateNetworkService  start *** ", isDebugEnabled)
         String nsOperationKey = execution.getVariable("nsOperationKey") 
@@ -140,7 +140,7 @@
     /**
      * query NS task
      */
-    public void queryNSProgress(Execution execution) {
+    public void queryNSProgress(DelegateExecution execution) {
         def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
         utils.log("INFO", " *** queryNSProgress  start *** ", isDebugEnabled)
         String jobId = execution.getVariable("jobId")
@@ -160,10 +160,10 @@
     /**
      * delay 5 sec 
      */
-    public void timeDelay(Execution execution) {
+    public void timeDelay(DelegateExecution execution) {
         try {
             Thread.sleep(5000);
-        } catch(InterruptedException e) {     
+        } catch(InterruptedException e) {           
             utils.log("INFO", "Time Delay exception" + e, isDebugEnabled)
         }
     }
@@ -171,7 +171,7 @@
     /**
      * finish NS task
      */
-    public void finishNSDelete(Execution execution) {
+    public void finishNSDelete(DelegateExecution execution) {
         //no need to do anything util now
     }
 
@@ -180,7 +180,7 @@
      * url: the url of the request
      * requestBody: the body of the request
      */
-    private APIResponse postRequest(Execution execution, String url, String requestBody){
+    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)
@@ -202,7 +202,7 @@
      * url: the url of the request
      * requestBody: the body of the request
      */
-    private APIResponse deleteRequest(Execution execution, String url, String requestBody){
+    private APIResponse deleteRequest(DelegateExecution execution, String url, String requestBody){
         def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
         utils.log("INFO", " ======== Started Execute VFC adapter Delete Process ======== ", isDebugEnabled)       
         utils.log("INFO", "url:"+url +"\nrequestBody:"+ requestBody, isDebugEnabled)
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteVfModule.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteVfModule.groovy
index 70a78f4..a5c39b6 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteVfModule.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteVfModule.groovy
@@ -23,7 +23,7 @@
 import javax.xml.parsers.DocumentBuilderFactory
 
 import org.camunda.bpm.engine.delegate.BpmnError
-import org.camunda.bpm.engine.runtime.Execution
+import org.camunda.bpm.engine.delegate.DelegateExecution
 import org.openecomp.mso.bpmn.common.scripts.AaiUtil
 import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor
 import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil
@@ -38,6 +38,8 @@
 import org.xml.sax.InputSource
 import org.w3c.dom.Node
 import org.w3c.dom.NodeList;
+import org.openecomp.mso.rest.RESTClient
+import org.openecomp.mso.rest.RESTConfig
 
 
 /* Subflow for Delete VF Module. When no DoDeleteVfModuleRequest is specified on input,
@@ -54,6 +56,7 @@
 * @param - cloudConfiguration*
 * @param - sdncVersion ("1610")
 * @param - retainResources 
+* @param - aLaCarte
 *
 * Outputs:
 * @param - WorkflowException
@@ -66,7 +69,7 @@
 	ExceptionUtil exceptionUtil = new ExceptionUtil()
 	JsonUtils jsonUtil = new JsonUtils()
 
-	public void initProcessVariables(Execution execution) {
+	public void initProcessVariables(DelegateExecution execution) {
 		execution.setVariable("prefix",Prefix)
 		execution.setVariable("DoDVfMod_contrailNetworkPolicyFqdnList", null)
 		execution.setVariable("DoDVfMod_oamManagementV4Address", null)
@@ -76,7 +79,7 @@
 
 	// parse the incoming DELETE_VF_MODULE request for the Generic Vnf and Vf Module Ids
 	// and formulate the outgoing request for PrepareUpdateAAIVfModuleRequest
-	public void preProcessRequest(Execution execution) {
+	public void preProcessRequest(DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		initProcessVariables(execution)
 
@@ -122,7 +125,7 @@
 				if (retainResources == null) {
 					retainResources  = false
 				}
-				execution.setVariable("retainResources", retainResources)
+				execution.setVariable("retainResources", retainResources)				
 			}
 			else {
 
@@ -184,7 +187,7 @@
 
 	// build a SDNC vnf-topology-operation request for the specified action
 	// (note: the action passed is expected to be 'changedelete' or 'delete')
-	public void prepSDNCAdapterRequest(Execution execution, String action) {
+	public void prepSDNCAdapterRequest(DelegateExecution execution, String action) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 
 		String uuid = execution.getVariable('testReqId') // for junits
@@ -262,7 +265,7 @@
 
 	// parse the incoming DELETE_VF_MODULE request
 	// and formulate the outgoing VnfAdapterDeleteV1 request
-	public void prepVNFAdapterRequest(Execution execution) {
+	public void prepVNFAdapterRequest(DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		def requestId = UUID.randomUUID().toString()
 		def origRequestId = execution.getVariable('requestId')
@@ -304,7 +307,7 @@
 
 	// parse the incoming DELETE_VF_MODULE request
 	// and formulate the outgoing UpdateAAIVfModuleRequest request
-	public void prepUpdateAAIVfModule(Execution execution) {
+	public void prepUpdateAAIVfModule(DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		def vnfId = execution.getVariable("vnfId")
 		def vfModuleId = execution.getVariable("vfModuleId")
@@ -322,7 +325,7 @@
 
 	// parse the incoming DELETE_VF_MODULE request
 	// and formulate the outgoing DeleteAAIVfModuleRequest request
-	public void prepDeleteAAIVfModule(Execution execution) {
+	public void prepDeleteAAIVfModule(DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 
 		def vnfId = execution.getVariable("vnfId")
@@ -339,7 +342,7 @@
 
 	// generates a WorkflowException if
 	//		-
-	public void handleDoDeleteVfModuleFailure(Execution execution) {
+	public void handleDoDeleteVfModuleFailure(DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		utils.log("ERROR", "AAI error occurred deleting the Generic Vnf: "
 			+ execution.getVariable("DoDVfMod_deleteGenericVnfResponse"), isDebugEnabled)
@@ -349,7 +352,7 @@
 		execution.setVariable("WorkflowException", exception)
 	}
 
-	public void sdncValidateResponse(Execution execution, String response){
+	public void sdncValidateResponse(DelegateExecution execution, String response){
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 
@@ -366,7 +369,7 @@
 		}
 	}
 
-	public void postProcessVNFAdapterRequest(Execution execution) {
+	public void postProcessVNFAdapterRequest(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.postProcessVNFAdapterRequest(' +
 			'execution=' + execution.getId() +
 			')'
@@ -443,7 +446,7 @@
 		logDebug(" *** COMPLETED postProcessVnfAdapterResponse Process*** ", isDebugLogEnabled)
 	}
 
-	public void deleteNetworkPoliciesFromAAI(Execution execution) {
+	public void deleteNetworkPoliciesFromAAI(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.deleteNetworkPoliciesFromAAI(' +
 		'execution=' + execution.getId() +
 		')'
@@ -571,7 +574,7 @@
 	 *
 	 * @param execution The flow's execution instance.
 	 */
-	public void prepUpdateAAIGenericVnf(Execution execution) {
+	public void prepUpdateAAIGenericVnf(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.prepUpdateAAIGenericVnf(' +
 			'execution=' + execution.getId() +
 			')'
@@ -615,6 +618,89 @@
 			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in prepUpdateAAIGenericVnf(): ' + e.getMessage())
 		}
 	}
+	
+	/**
+	 * Using the vnfId and vfModuleId provided in the inputs,
+	 * query AAI to get the corresponding VF Module info.
+	 * A 200 response is expected with the VF Module info in the response body,
+	 * Will determine VF Module's orchestration status if one exists
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void queryAAIVfModuleForStatus(DelegateExecution execution) {
+		def isDebugLogEnabled=execution.getVariable("isDebugLogEnabled")
+		def method = getClass().getSimpleName() + '.queryAAIVfModuleForStatus(' +
+			'execution=' + execution.getId() +
+			')'
+		logDebug('Entered ' + method, isDebugLogEnabled)
+		
+		execution.setVariable(Prefix + 'orchestrationStatus', '')
+
+		try {
+			def vnfId = execution.getVariable('vnfId')
+			def vfModuleId = execution.getVariable('vfModuleId')
+
+			AaiUtil aaiUriUtil = new AaiUtil(this)
+			String  aai_uri = aaiUriUtil.getNetworkGenericVnfUri(execution)
+			logDebug('AAI URI is: ' + aai_uri, isDebugLogEnabled)
+
+			String endPoint = execution.getVariable("URN_aai_endpoint") + "${aai_uri}/" + UriUtils.encode(vnfId, "UTF-8") +
+					"/vf-modules/vf-module/" + UriUtils.encode(vfModuleId, "UTF-8")
+			utils.logAudit("AAI endPoint: " + endPoint)
+
+			try {
+				RESTConfig config = new RESTConfig(endPoint);
+				def responseData = ''
+				def aaiRequestId = UUID.randomUUID().toString()
+				RESTClient client = new RESTClient(config).
+					addHeader('X-TransactionId', aaiRequestId).
+					addHeader('X-FromAppId', 'MSO').
+					addHeader('Content-Type', 'application/xml').
+					addHeader('Accept','application/xml');
+				logDebug('sending GET to AAI endpoint \'' + endPoint + '\'', isDebugLogEnabled)
+				APIResponse response = client.httpGet()
+				utils.logAudit("createVfModule - invoking httpGet() to AAI")
+
+				responseData = response.getResponseBodyAsString()
+				if (responseData != null) {
+					logDebug("Received generic VNF data: " + responseData, isDebugLogEnabled)
+
+				}
+
+				utils.logAudit("deleteVfModule - queryAAIVfModule Response: " + responseData)
+				utils.logAudit("deleteVfModule - queryAAIVfModule ResponseCode: " + response.getStatusCode())
+
+				execution.setVariable(Prefix + 'queryAAIVfModuleForStatusResponseCode', response.getStatusCode())
+				execution.setVariable(Prefix + 'queryAAIVfModuleForStatusResponse', responseData)
+				logDebug('Response code:' + response.getStatusCode(), isDebugLogEnabled)
+				logDebug('Response:' + System.lineSeparator() + responseData, isDebugLogEnabled)
+				// Retrieve VF Module info and its orchestration status; if not found, do nothing
+				if (response.getStatusCode() == 200) {
+					// Parse the VNF record from A&AI to find base module info
+					logDebug('Parsing the VNF data to find orchestration status', isDebugLogEnabled)
+					if (responseData != null) {
+						def vfModuleText = utils.getNodeXml(responseData, "vf-module")
+						//def xmlVfModule= new XmlSlurper().parseText(vfModuleText)
+						def orchestrationStatus = utils.getNodeText1(vfModuleText, "orchestration-status")
+						execution.setVariable(Prefix + "orchestrationStatus", orchestrationStatus)
+						logDebug("Received orchestration status from A&AI: " + orchestrationStatus, isDebugLogEnabled)
+						
+					}
+				}
+			} catch (Exception ex) {
+				ex.printStackTrace()
+				logDebug('Exception occurred while executing AAI GET:' + ex.getMessage(),isDebugLogEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'AAI GET Failed:' + ex.getMessage())
+			}
+			logDebug('Exited ' + method, isDebugLogEnabled)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			logError('Caught exception in ' + method, e)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in queryAAIVfModuleForStatus(): ' + e.getMessage())
+		}
+	}
+
 
 
 
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteVfModuleFromVnf.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteVfModuleFromVnf.groovy
index 9d9f0bb..428f9aa 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteVfModuleFromVnf.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteVfModuleFromVnf.groovy
@@ -4,7 +4,7 @@
 import javax.xml.parsers.DocumentBuilderFactory
 
 import org.camunda.bpm.engine.delegate.BpmnError
-import org.camunda.bpm.engine.runtime.Execution
+import org.camunda.bpm.engine.delegate.DelegateExecution
 import org.openecomp.mso.bpmn.common.scripts.AaiUtil
 import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil
 import org.openecomp.mso.bpmn.common.scripts.SDNCAdapterUtils
@@ -27,13 +27,13 @@
 	ExceptionUtil exceptionUtil = new ExceptionUtil()
 	JsonUtils jsonUtil = new JsonUtils()
 
-	public void initProcessVariables(Execution execution) {
+	public void initProcessVariables(DelegateExecution execution) {
 		execution.setVariable("prefix",Prefix)
 		execution.setVariable("DDVFMV_contrailNetworkPolicyFqdnList", null)
 	}
 
 	// parse the incoming request
-	public void preProcessRequest(Execution execution) {
+	public void preProcessRequest(DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		initProcessVariables(execution)
 
@@ -100,7 +100,7 @@
 		}
 	}
 	
-	public void queryAAIForVfModule(Execution execution) {
+	public void queryAAIForVfModule(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.queryAAIForVfModule(' +
 			'execution=' + execution.getId() +
 			')'
@@ -155,7 +155,7 @@
 	 *
 	 * @param execution The flow's execution instance.
 	 */
-	public void validateVfModule(Execution execution) {
+	public void validateVfModule(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.validateVfModule(' +
 			'execution=' + execution.getId() +
 			')'
@@ -200,7 +200,7 @@
 	}
 
 
-	public void preProcessSDNCDeactivateRequest(Execution execution){
+	public void preProcessSDNCDeactivateRequest(DelegateExecution execution){
 		def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix", Prefix)
 		logDebug(" ======== STARTED preProcessSDNCDeactivateRequest ======== ", isDebugLogEnabled)
@@ -224,7 +224,7 @@
 		logDebug("======== COMPLETED preProcessSDNCDeactivateRequest ======== ", isDebugLogEnabled)
 	}
 
-	public void preProcessSDNCUnassignRequest(Execution execution) {
+	public void preProcessSDNCUnassignRequest(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.preProcessSDNCUnassignRequest(' +
 			'execution=' + execution.getId() +
 			')'
@@ -248,7 +248,7 @@
 		logDebug("======== COMPLETED  preProcessSDNCUnassignRequest Process ======== ", isDebugLogEnabled)
 	}
 
-	public String buildSDNCRequest(Execution execution, String svcInstId, String action){
+	public String buildSDNCRequest(DelegateExecution execution, String svcInstId, String action){
 	
 			String uuid = execution.getVariable('testReqId') // for junits
 			if(uuid==null){
@@ -306,7 +306,7 @@
 		return sdncRequest
 	}
 	
-	public void validateSDNCResponse(Execution execution, String response, String method){
+	public void validateSDNCResponse(DelegateExecution execution, String response, String method){
 		def isDebugLogEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 		logDebug(" *** STARTED ValidateSDNCResponse Process*** ", isDebugLogEnabled)
@@ -334,7 +334,7 @@
 
 	// parse the incoming DELETE_VF_MODULE request
 	// and formulate the outgoing VnfAdapterDeleteV1 request
-	public void prepVNFAdapterRequest(Execution execution) {
+	public void prepVNFAdapterRequest(DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		def requestId = UUID.randomUUID().toString()
 		def origRequestId = execution.getVariable('requestId')
@@ -377,7 +377,7 @@
 	
 	// generates a WorkflowException if
 	//		-
-	public void handleDoDeleteVfModuleFailure(Execution execution) {
+	public void handleDoDeleteVfModuleFailure(DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		utils.log("ERROR", "AAI error occurred deleting the Generic Vnf: "
 			+ execution.getVariable("DDVFMV_deleteGenericVnfResponse"), isDebugEnabled)
@@ -387,7 +387,7 @@
 		execution.setVariable("WorkflowException", exception)
 	}
 	
-	public void postProcessVNFAdapterRequest(Execution execution) {
+	public void postProcessVNFAdapterRequest(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.postProcessVNFAdapterRequest(' +
 			'execution=' + execution.getId() +
 			')'
@@ -455,7 +455,7 @@
 		logDebug(" *** COMPLETED postProcessVnfAdapterResponse Process*** ", isDebugLogEnabled)
 	}
 
-	public void deleteNetworkPoliciesFromAAI(Execution execution) {
+	public void deleteNetworkPoliciesFromAAI(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.deleteNetworkPoliciesFromAAI(' +
 		'execution=' + execution.getId() +
 		')'
@@ -579,7 +579,7 @@
 	}	
 	
 	// and formulate the outgoing DeleteAAIVfModuleRequest request
-	public void prepDeleteAAIVfModule(Execution execution) {
+	public void prepDeleteAAIVfModule(DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 
 		def vnfId = execution.getVariable("vnfId")
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteVfModuleVolumeV2.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteVfModuleVolumeV2.groovy
index c303faa..7784e08 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteVfModuleVolumeV2.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteVfModuleVolumeV2.groovy
@@ -27,7 +27,7 @@
 
 import org.springframework.web.util.UriUtils
 import org.camunda.bpm.engine.delegate.BpmnError
-import org.camunda.bpm.engine.runtime.Execution
+import org.camunda.bpm.engine.delegate.DelegateExecution
 import org.openecomp.mso.bpmn.common.scripts.AaiUtil
 import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor
 import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil
@@ -44,7 +44,7 @@
 	JsonUtils jsonUtil = new JsonUtils()
 	
 	@Override
-	public void preProcessRequest(Execution execution) {
+	public void preProcessRequest(DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		preProcessRequest(execution, isDebugEnabled)	
 	}
@@ -54,7 +54,7 @@
 	 * @param execution
 	 * @param isDebugLogEnabled
 	 */
-	public void preProcessRequest (Execution execution, isDebugEnabled) {
+	public void preProcessRequest (DelegateExecution execution, isDebugEnabled) {
 		
 		//Input:
 		//  msoRequestId
@@ -96,7 +96,7 @@
 	 * @param execution
 	 * @param isDebugLogEnabled
 	 */
-	public void postProcess(Execution execution, isDebugLogEnabled) {
+	public void postProcess(DelegateExecution execution, isDebugLogEnabled) {
 		execution.setVariable('wasDeleted', 'true')
 	}
 	
@@ -107,7 +107,7 @@
 	 * @param execution
 	 * @param isDebugEnabled
 	 */
-	public void callRESTQueryAAICloudRegion(Execution execution, isDebugEnabled) {
+	public void callRESTQueryAAICloudRegion(DelegateExecution execution, isDebugEnabled) {
 		
 		String cloudRegion = execution.getVariable('lcpCloudRegionId')					
 		String aai_endpoint = execution.getVariable("URN_aai_endpoint")
@@ -140,7 +140,7 @@
 	 * @param execution
 	 * @param isDebugLogEnabled
 	 */
-	public void callRESTQueryAAIForVolumeGroup(Execution execution, isDebugLogEnabled) {
+	public void callRESTQueryAAIForVolumeGroup(DelegateExecution execution, isDebugLogEnabled) {
 		
 		def tenantId = execution.getVariable('tenantId')								
 		def volumeGroupId = execution.getVariable('volumeGroupId')						
@@ -215,7 +215,7 @@
 	 * @param execution
 	 * @param isDebugLogEnabled
 	 */
-	public void prepareVnfAdapterDeleteRequest(Execution execution, isDebugLogEnabled) {
+	public void prepareVnfAdapterDeleteRequest(DelegateExecution execution, isDebugLogEnabled) {
 		def cloudRegion = execution.getVariable(prefix+'aicCloudRegion')
 		def tenantId = execution.getVariable('tenantId')										// input parameter (optional) - see preProcessRequest
 		def volumeGroupId = execution.getVariable('volumeGroupId')								// input parameter (required)	
@@ -256,7 +256,7 @@
 	 * @param execution
 	 * @param isDebugEnabled
 	 */
-	public void callRESTDeleteAAIVolumeGroup(Execution execution, isDebugEnabled) {
+	public void callRESTDeleteAAIVolumeGroup(DelegateExecution execution, isDebugEnabled) {
 		
 		// get variables
 		String queryAAIVolGrpIdResponse = execution.getVariable(prefix+"queryAAIVolGrpResponse")
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteVnf.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteVnf.groovy
index fbbb07e..5e6fff2 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteVnf.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteVnf.groovy
@@ -25,7 +25,7 @@
 
 import org.apache.commons.lang3.*
 import org.camunda.bpm.engine.delegate.BpmnError
-import org.camunda.bpm.engine.runtime.Execution
+import org.camunda.bpm.engine.delegate.DelegateExecution
 import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor
 import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil
 import org.openecomp.mso.bpmn.common.scripts.VidUtils
@@ -57,7 +57,7 @@
 	 * @param - execution
 	 *
 	 */
-	public void preProcessRequest(Execution execution) {
+	public void preProcessRequest(DelegateExecution execution) {
 		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 		utils.log("DEBUG", " *** STARTED DoDeleteVnf PreProcessRequest Process*** ", isDebugEnabled)
@@ -86,7 +86,7 @@
 	}
 
 
-	public void processGetVnfResponse(Execution execution){
+	public void processGetVnfResponse(DelegateExecution execution){
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 		utils.log("DEBUG", " *** STARTED DoDeleteVnf processGetVnfResponse Process *** ", isDebugEnabled)
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteVnfAndModules.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteVnfAndModules.groovy
index 3f7ffbf..7074df5 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteVnfAndModules.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteVnfAndModules.groovy
@@ -19,12 +19,13 @@
  */
 package org.openecomp.mso.bpmn.infrastructure.scripts
 
+import java.awt.Component.BaselineResizeBehavior
 import java.util.UUID;
 
 import org.json.JSONObject;
 import org.json.JSONArray;
 import org.camunda.bpm.engine.delegate.BpmnError
-import org.camunda.bpm.engine.runtime.Execution;
+import org.camunda.bpm.engine.delegate.DelegateExecution;
 
 import static org.apache.commons.lang3.StringUtils.*;
 
@@ -37,6 +38,10 @@
 import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil
 import org.openecomp.mso.bpmn.common.scripts.SDNCAdapterUtils
 import org.openecomp.mso.bpmn.common.scripts.VidUtils
+import org.openecomp.mso.bpmn.core.domain.ModelInfo
+import org.openecomp.mso.bpmn.core.domain.ModuleResource
+import org.openecomp.mso.bpmn.core.domain.ServiceDecomposition
+import org.openecomp.mso.bpmn.core.domain.VnfResource
 import org.openecomp.mso.bpmn.core.RollbackData
 import org.openecomp.mso.bpmn.core.WorkflowException
 import org.springframework.web.util.UriUtils;
@@ -60,7 +65,7 @@
 	 * @param - execution
 	 *	
 	 */
-	public void preProcessRequest(Execution execution) {
+	public void preProcessRequest(DelegateExecution execution) {
 		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 		utils.log("DEBUG", " *** STARTED DoDeleteVnfAndModules PreProcessRequest Process*** ", isDebugEnabled)
@@ -95,6 +100,9 @@
 			execution.setVariable("DDVAM_sdncVersion", sdncVersion)
 			utils.log("DEBUG", "Incoming Sdnc Version is: " + sdncVersion, isDebugEnabled)
 			
+			// Set aLaCarte flag to false
+			execution.setVariable("aLaCarte", false)
+			
 			String sdncCallbackUrl = (String) execution.getVariable('URN_mso_workflow_sdncadapter_callback')
 			if (sdncCallbackUrl == null || sdncCallbackUrl.trim().isEmpty()) {
 				def msg = 'Required variable \'URN_mso_workflow_sdncadapter_callback\' is missing'
@@ -103,7 +111,8 @@
 			}
 			execution.setVariable("sdncCallbackUrl", sdncCallbackUrl)
 			utils.logAudit("SDNC Callback URL: " + sdncCallbackUrl)
-			logDebug("SDNC Callback URL is: " + sdncCallbackUrl, isDebugEnabled)
+			logDebug("SDNC Callback URL is: " + sdncCallbackUrl, isDebugEnabled)	
+			
 			
 			if (!sdncVersion.equals("1702")) {
 				//String vnfModelInfo = execution.getVariable("vnfModelInfo")
@@ -153,8 +162,32 @@
 					globalSubscriberId = ""
 				}
 				execution.setVariable("DDVAM_globalSubscriberId", globalSubscriberId)
-				utils.log("DEBUG", "Incoming Global Subscriber Id is: " + globalSubscriberId, isDebugEnabled)
+				utils.log("DEBUG", "Incoming Global Subscriber Id is: " + globalSubscriberId, isDebugEnabled)		
+				
 			}
+			execution.setVariable("DDVAM_vfModulesFromDecomposition", null)
+			// Retrieve serviceDecomposition if present
+			ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition")
+			if (serviceDecomposition != null) {
+				utils.log("DEBUG", "Getting Catalog DB data from ServiceDecomposition object: " + serviceDecomposition.toJsonString(), isDebugEnabled)
+				List<VnfResource> vnfs = serviceDecomposition.getServiceVnfs()
+				utils.log("DEBUG", "Read vnfs", isDebugEnabled)
+				if (vnfs == null) {
+					utils.log("DEBUG", "Error - vnfs are empty in serviceDecomposition object", isDebugEnabled)
+					exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in preProcessRequest - vnfs are empty")
+				}
+				VnfResource vnf = vnfs[0]
+				
+				if (vnf == null) {
+					utils.log("DEBUG", "Error - vnf is empty in serviceDecomposition object", isDebugEnabled)
+					exceptionUtil.buildAndThrowWorkflowException(execution, 2500, "Internal Error - Occured in preProcessRequest - vnf is empty")
+				}
+				
+				List<ModuleResource> vfModules = vnf.getAllVfModuleObjects()
+				
+				execution.setVariable("DDVAM_vfModulesFromDecomposition", vfModules)				
+			}
+			
 			execution.setVariable("DDVAM_moduleCount", 0)
 			execution.setVariable("DDVAM_nextModule", 0)
 			
@@ -172,7 +205,7 @@
 
 	
 	
-	public void preProcessAddOnModule(Execution execution){
+	public void preProcessAddOnModule(DelegateExecution execution){
 		def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix", Prefix)
 		logDebug(" ======== STARTED preProcessAddOnModule ======== ", isDebugLogEnabled)
@@ -212,7 +245,7 @@
 	 *
 	 * @param execution The flow's execution instance.
 	 */
-	public void queryAAIVfModule(Execution execution) {
+	public void queryAAIVfModule(DelegateExecution execution) {
 		def isDebugLogEnabled=execution.getVariable("isDebugLogEnabled")
 		def method = getClass().getSimpleName() + '.queryAAIVfModule(' +
 			'execution=' + execution.getId() +
@@ -247,6 +280,7 @@
 				logDebug('Response code:' + response.getStatusCode(), isDebugLogEnabled)
 				logDebug('Response:' + System.lineSeparator() + responseData, isDebugLogEnabled)
 				//Map<String, String>[] vfModules = new HashMap<String,String>[]
+				List<ModuleResource> vfModulesFromDecomposition = execution.getVariable("DDVAM_vfModulesFromDecomposition")
 				def vfModulesList = new ArrayList<Map<String,String>>()
 				def vfModules = null
 				def vfModuleBaseEntry = null
@@ -261,15 +295,44 @@
 							vfModules = xmlVfModules.'**'.findAll {it.name() == "vf-module"}
 							execution.setVariable("DDVAM_moduleCount", vfModules.size())
 							int vfModulesSize = 0
+							ModelInfo vfModuleModelInfo = null
 							for (i in 0..vfModules.size()-1) {
 								def vfModuleXml = groovy.xml.XmlUtil.serialize(vfModules[i])
 							
 								Map<String, String> vfModuleEntry = new HashMap<String, String>()
 								def vfModuleId = utils.getNodeText1(vfModuleXml, "vf-module-id")
 								vfModuleEntry.put("vfModuleId", vfModuleId)
-								def vfModuleName = utils.getNodeText1(vfModuleXml, "vf-module-name")
+								def vfModuleName = utils.getNodeText1(vfModuleXml, "vf-module-name")      
 								vfModuleEntry.put("vfModuleName", vfModuleName)
 								
+								// Find the model for this vf module in decomposition if specified
+								if (vfModulesFromDecomposition != null) {
+									logDebug("vfModulesFromDecomposition is not null", isDebugLogEnabled)
+									def vfModuleUuid = utils.getNodeText1(vfModuleXml, "model-version-id")
+									if (vfModuleUuid == null) {
+										vfModuleUuid = utils.getNodeText1(vfModuleXml, "persona-model-version")
+									}
+									logDebug("vfModule UUID is: " + vfModuleUuid, isDebugLogEnabled)
+									for (j in 0..vfModulesFromDecomposition.size()-1) {
+										ModuleResource mr = vfModulesFromDecomposition[j]
+										if (mr.getModelInfo().getModelUuid() == vfModuleUuid) {
+											logDebug("Found modelInfo", isDebugLogEnabled)
+											vfModuleModelInfo = mr.getModelInfo()
+											break											
+										}
+										
+									}									
+								}
+								if (vfModuleModelInfo != null) {
+									String vfModuleModelInfoString = vfModuleModelInfo.toString()
+									def vfModuleModelInfoValue = jsonUtil.getJsonValue(vfModuleModelInfoString, "modelInfo")
+									vfModuleEntry.put("vfModuleModelInfo", vfModuleModelInfoValue)
+								}
+								else {
+									vfModuleEntry.put("vfModuleModelInfo", null)
+								}
+								
+								
 								def isBaseVfModule = utils.getNodeText(vfModuleXml, "is-base-vf-module")
 								// Save base vf module for last
 								if (isBaseVfModule == "true") {
@@ -301,7 +364,7 @@
 		}
 	}
 	
-	public void prepareNextModuleToDelete(Execution execution){
+	public void prepareNextModuleToDelete(DelegateExecution execution){
 		def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix", Prefix)
 		logDebug(" ======== STARTED prepareNextModuleToDelete ======== ", isDebugLogEnabled)
@@ -315,11 +378,10 @@
 			execution.setVariable("DDVAM_vfModuleId", vfModuleId)
 			
 			def vfModuleName = vfModule.get("vfModuleName")
-			execution.setVariable("DDVAM_vfModuleName", vfModuleName)
+			execution.setVariable("DDVAM_vfModuleName", vfModuleName)			
 			
-			
-			// HARDCODED FOR NOW
-			def vfModuleModelInfo = ""
+			def vfModuleModelInfo = vfModule.get("vfModuleModelInfo")
+			logDebug("vfModuleModelInfo for module delete: " + vfModuleModelInfo, isDebugLogEnabled)
 			execution.setVariable("DDVAM_vfModuleModelInfo", vfModuleModelInfo)			
 			
 		}catch(Exception e){
@@ -329,7 +391,7 @@
 		logDebug("======== COMPLETED prepareNextModuleToDelete ======== ", isDebugLogEnabled)
 	}
 	
-	public void preProcessSDNCDeactivateRequest(Execution execution){
+	public void preProcessSDNCDeactivateRequest(DelegateExecution execution){
 		def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix", Prefix)
 		logDebug(" ======== STARTED preProcessSDNCDeactivateRequest ======== ", isDebugLogEnabled)
@@ -353,7 +415,7 @@
 		logDebug("======== COMPLETED preProcessSDNCDeactivateRequest ======== ", isDebugLogEnabled)
 	}
 	
-	public void preProcessSDNCUnassignRequest(Execution execution) {
+	public void preProcessSDNCUnassignRequest(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.preProcessSDNCUnassignRequest(' +
 			'execution=' + execution.getId() +
 			')'
@@ -378,7 +440,7 @@
 		logDebug("======== COMPLETED  preProcessSDNCUnassignRequest Process ======== ", isDebugLogEnabled)
 	}
 	
-	public String buildSDNCRequest(Execution execution, String svcInstId, String action){
+	public String buildSDNCRequest(DelegateExecution execution, String svcInstId, String action){
 		
 				String uuid = execution.getVariable('testReqId') // for junits
 				if(uuid==null){
@@ -443,7 +505,7 @@
 			return sdncRequest
 	}
 		
-	public void validateSDNCResponse(Execution execution, String response, String method){
+	public void validateSDNCResponse(DelegateExecution execution, String response, String method){
 		def isDebugLogEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 		logDebug(" *** STARTED ValidateSDNCResponse Process*** ", isDebugLogEnabled)
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 857ed8d..0372d95 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
@@ -42,7 +42,7 @@
 import javax.xml.parsers.DocumentBuilderFactory
 
 import org.camunda.bpm.engine.delegate.BpmnError
-import org.camunda.bpm.engine.runtime.Execution
+import org.camunda.bpm.engine.delegate.DelegateExecution
 import org.json.JSONObject;
 import org.json.JSONArray;
 import org.apache.commons.lang3.*
@@ -87,7 +87,7 @@
 	ExceptionUtil exceptionUtil = new ExceptionUtil()
 	JsonUtils jsonUtil = new JsonUtils()
 
-	public void preProcessRequest (Execution execution) {
+	public void preProcessRequest (DelegateExecution execution) {
 	    //only for dug
 		execution.setVariable("isDebugLogEnabled","true")
 		execution.setVariable("unit_test", "true")
@@ -231,7 +231,7 @@
 		utils.log("INFO", "Exited " + method, isDebugEnabled)
 	}
 	
-	public void postProcessAAIGET(Execution execution) {
+	public void postProcessAAIGET(DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		utils.log("INFO"," ***** postProcessAAIGET ***** ", isDebugEnabled)
 		String msg = ""
@@ -378,7 +378,7 @@
 	}
 	
 	
-	public void preInitResourcesOperStatus(Execution execution){
+	public void preInitResourcesOperStatus(DelegateExecution execution){
         def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
 
         utils.log("INFO", " ======== STARTED preInitResourcesOperStatus Process ======== ", isDebugEnabled)
@@ -439,7 +439,7 @@
     /**
 	 * Init the service Operation Status
 	 */
-	public void preUpdateServiceOperationStatus(Execution execution){
+	public void preUpdateServiceOperationStatus(DelegateExecution execution){
         def method = getClass().getSimpleName() + '.preUpdateServiceOperationStatus(' +'execution=' + execution.getId() +')'
 		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
 		utils.log("INFO","Entered " + method, isDebugEnabled)
@@ -502,36 +502,36 @@
         utils.log("INFO", "Exited " + method, isDebugEnabled)
 	}
     
-    public void postResourcesOperStatus(Execution execution) {
+    public void postResourcesOperStatus(DelegateExecution execution) {
         def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
     
     }
     
-    public void preCompareModelVersions(Execution execution) {
+    public void preCompareModelVersions(DelegateExecution execution) {
         def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 
     }
 
-    public void postCompareModelVersions(Execution execution) {
+    public void postCompareModelVersions(DelegateExecution execution) {
         def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
     }
     
-    public void preProcessForAddResource(Execution execution) {
+    public void preProcessForAddResource(DelegateExecution execution) {
         def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 
     }
 
-    public void postProcessForAddResource(Execution execution) {
+    public void postProcessForAddResource(DelegateExecution execution) {
         def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
     
     }
     
-    public void preProcessForDeleteResource(Execution execution) {
+    public void preProcessForDeleteResource(DelegateExecution execution) {
         def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 
     }
 
-    public void postProcessForDeleteResource(Execution execution) {
+    public void postProcessForDeleteResource(DelegateExecution execution) {
         def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
     
     }    
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoUpdateNetworkInstance.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoUpdateNetworkInstance.groovy
index 36f2d9f..829e4d9 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoUpdateNetworkInstance.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoUpdateNetworkInstance.groovy
@@ -34,7 +34,7 @@
 import java.util.UUID;
 
 import org.camunda.bpm.engine.delegate.BpmnError
-import org.camunda.bpm.engine.runtime.Execution
+import org.camunda.bpm.engine.delegate.DelegateExecution
 import org.apache.commons.lang3.*
 import org.apache.commons.codec.binary.Base64;
 import org.springframework.web.util.UriUtils
@@ -55,7 +55,7 @@
 	 * This method is executed during the preProcessRequest task of the <class>DoUpdateNetworkInstance.bpmn</class> process.
 	 * @param execution
 	 */
-	public InitializeProcessVariables(Execution execution){
+	public InitializeProcessVariables(DelegateExecution execution){
 		/* Initialize all the process variables in this block */
 
 		execution.setVariable(Prefix + "messageId", "")
@@ -146,7 +146,7 @@
 	 * This method is executed during the preProcessRequest task of the <class>DoUpdateNetworkInstance.bpmn</class> process.
 	 * @param execution
 	 */
-	public void preProcessRequest (Execution execution) {
+	public void preProcessRequest (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 
@@ -303,7 +303,7 @@
 		}
 	}
 
-	public void callRESTQueryAAICloudRegion (Execution execution) {
+	public void callRESTQueryAAICloudRegion (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix", Prefix)
 
@@ -353,7 +353,7 @@
 
 	}
 
-	public void callRESTQueryAAINetworkId(Execution execution) {
+	public void callRESTQueryAAINetworkId(DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix", Prefix)
 
@@ -370,7 +370,7 @@
 			String aai_endpoint = execution.getVariable("URN_aai_endpoint")
 			AaiUtil aaiUriUtil = new AaiUtil(this)
 			String aai_uri = aaiUriUtil.getNetworkL3NetworkUri(execution)
-			String queryIdAAIRequest = "${aai_endpoint}${aai_uri}/" + networkId + "?depth=1"
+			String queryIdAAIRequest = "${aai_endpoint}${aai_uri}/" + networkId + "?depth=all"
 			utils.logAudit(queryIdAAIRequest)
 			execution.setVariable(Prefix + "queryIdAAIRequest", queryIdAAIRequest)
 			utils.log("DEBUG", Prefix + "queryIdAAIRequest - " + "\n" + queryIdAAIRequest, isDebugEnabled)
@@ -421,7 +421,7 @@
 
 	}
 
-	public void callRESTReQueryAAINetworkId(Execution execution) {
+	public void callRESTReQueryAAINetworkId(DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix", Prefix)
 
@@ -437,7 +437,7 @@
 			String aai_endpoint = execution.getVariable("URN_aai_endpoint")
 			AaiUtil aaiUriUtil = new AaiUtil(this)
 			String aai_uri = aaiUriUtil.getNetworkL3NetworkUri(execution)
-			String requeryIdAAIRequest = "${aai_endpoint}${aai_uri}/" + networkId + "?depth=1"
+			String requeryIdAAIRequest = "${aai_endpoint}${aai_uri}/" + networkId + "?depth=all"
 			utils.logAudit(requeryIdAAIRequest)
 			execution.setVariable(Prefix + "requeryIdAAIRequest", requeryIdAAIRequest)
 			utils.log("DEBUG", " UPDNETI_requeryIdAAIRequest - " + "\n" + requeryIdAAIRequest, isDebugEnabled)
@@ -498,7 +498,7 @@
 
 	}
 
-	public void callRESTQueryAAINetworkVpnBinding(Execution execution) {
+	public void callRESTQueryAAINetworkVpnBinding(DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix", Prefix)
 
@@ -570,9 +570,19 @@
 						utils.log("DEBUG", " AAI Query Vpn Binding Success REST Response, , vpnBinding #" + counting + " : " + "\n" + aaiResponseAsString, isDebugEnabled)
 
 						String routeTarget = ""
-						if (utils.nodeExists(aaiResponseAsString, "global-route-target")) {
-							routeTarget  = utils.getNodeText1(aaiResponseAsString, "global-route-target")
-							routeTargets += "<routeTargets>" + routeTarget + "</routeTargets>" + '\n'
+						String routeRole = ""
+						if (utils.nodeExists(aaiResponseAsString, "route-targets")) {
+							String aaiRouteTargets = utils.getNodeXml(aaiResponseAsString, "route-targets", false)
+							def aaiRouteTargetsXml = new XmlSlurper().parseText(aaiRouteTargets)
+							def aaiRouteTarget = aaiRouteTargetsXml.'**'.findAll {it.name() == "route-target"}
+							for (j in 0..aaiRouteTarget.size()-1) {
+								routeTarget  = utils.getNodeText1(XmlUtil.serialize(aaiRouteTarget[j]), "global-route-target")
+								routeRole  = utils.getNodeText1(XmlUtil.serialize(aaiRouteTarget[j]), "route-target-role")
+								routeTargets += "<routeTargets>" + '\n' +
+								                " <routeTarget>" + routeTarget + "</routeTarget>" + '\n' +
+												" <routeTargetRole>" + routeRole + "</routeTargetRole>" + '\n' +
+												"</routeTargets>" + '\n'
+							}
 						}
 
 					} else {
@@ -632,7 +642,7 @@
 
 	}
 
-	public void callRESTQueryAAINetworkPolicy(Execution execution) {
+	public void callRESTQueryAAINetworkPolicy(DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix", Prefix)
 
@@ -768,7 +778,7 @@
 
 	}
 
-	public void callRESTQueryAAINetworkTableRef(Execution execution) {
+	public void callRESTQueryAAINetworkTableRef(DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix", Prefix)
 
@@ -904,7 +914,7 @@
 
 	}
 	
-	public void callRESTUpdateContrailAAINetwork(Execution execution) {
+	public void callRESTUpdateContrailAAINetwork(DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix", Prefix)
 
@@ -922,7 +932,7 @@
 			String aai_endpoint = execution.getVariable("URN_aai_endpoint")
 			AaiUtil aaiUriUtil = new AaiUtil(this)
 			String aai_uri = aaiUriUtil.getNetworkL3NetworkUri(execution)
-			String updateContrailAAIUrlRequest = "${aai_endpoint}${aai_uri}/" + networkId + "?depth=1"
+			String updateContrailAAIUrlRequest = "${aai_endpoint}${aai_uri}/" + networkId + "?depth=all"
 
 			utils.logAudit(updateContrailAAIUrlRequest)
 			execution.setVariable(Prefix + "updateContrailAAIUrlRequest", updateContrailAAIUrlRequest)
@@ -984,7 +994,7 @@
 
 	}
 
-	public void prepareUpdateNetworkRequest (Execution execution) {
+	public void prepareUpdateNetworkRequest (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix", Prefix)
 
@@ -1024,7 +1034,7 @@
 
 	}
 
-	public void prepareSDNCRequest (Execution execution) {
+	public void prepareSDNCRequest (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix", Prefix)
 
@@ -1069,7 +1079,7 @@
 	//     Post or Validate Response Section
 	// **************************************************
 
-	public void validateUpdateNetworkResponse (Execution execution) {
+	public void validateUpdateNetworkResponse (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix", Prefix)
 
@@ -1142,7 +1152,7 @@
 
 	}
 
-	public void validateSDNCResponse (Execution execution) {
+	public void validateSDNCResponse (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix", Prefix)
 
@@ -1178,7 +1188,7 @@
 	}
 
 
-	public void postProcessResponse (Execution execution) {
+	public void postProcessResponse (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix", Prefix)
 
@@ -1230,7 +1240,7 @@
 
 	}
 
-	public void prepareSDNCRollbackRequest (Execution execution) {
+	public void prepareSDNCRollbackRequest (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix", Prefix)
 
@@ -1264,7 +1274,7 @@
 
 	}
 
-	public void prepareRollbackData(Execution execution) {
+	public void prepareRollbackData(DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 		
@@ -1300,7 +1310,7 @@
 		
 	}
 	
-	public void prepareSuccessRollbackData(Execution execution) {
+	public void prepareSuccessRollbackData(DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 		
@@ -1342,7 +1352,7 @@
 		
 	}
 	
-	public void setExceptionFlag(Execution execution){
+	public void setExceptionFlag(DelegateExecution execution){
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 		
@@ -1372,7 +1382,7 @@
 	//     Build Error Section
 	// *******************************
 
-	public void processJavaException(Execution execution){
+	public void processJavaException(DelegateExecution execution){
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 		try{
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoUpdateNetworkInstanceRollback.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoUpdateNetworkInstanceRollback.groovy
index 760b76a..7d32638 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoUpdateNetworkInstanceRollback.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoUpdateNetworkInstanceRollback.groovy
@@ -35,7 +35,7 @@
 import java.util.UUID;
 
 import org.camunda.bpm.engine.delegate.BpmnError
-import org.camunda.bpm.engine.runtime.Execution
+import org.camunda.bpm.engine.delegate.DelegateExecution
 import org.apache.commons.lang3.*
 import org.apache.commons.codec.binary.Base64;
 import org.springframework.web.util.UriUtils
@@ -58,7 +58,7 @@
 	 * This method is executed during the preProcessRequest task of the <class>DoUpdateNetworkInstanceRollback.bpmn</class> process.
 	 * @param execution
 	 */
-	public InitializeProcessVariables(Execution execution){
+	public InitializeProcessVariables(DelegateExecution execution){
 		/* Initialize all the process variables in this block */
 
 		execution.setVariable(Prefix + "rollbackNetworkRequest", null)
@@ -85,7 +85,7 @@
 	 * This method is executed during the preProcessRequest task of the <class>DoUpdateNetworkInstanceRollback.bpmn</class> process.
 	 * @param execution
 	 */
-	public void preProcessRequest (Execution execution) {
+	public void preProcessRequest (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 
@@ -166,7 +166,7 @@
 
 	}
 
-	public void validateRollbackResponses (Execution execution) {
+	public void validateRollbackResponses (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 
@@ -282,7 +282,7 @@
 
 
 
-	public void processJavaException(Execution execution){
+	public void processJavaException(DelegateExecution execution){
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoUpdateVfModule.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoUpdateVfModule.groovy
index f41c8bb..a9a657e 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoUpdateVfModule.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoUpdateVfModule.groovy
@@ -21,8 +21,9 @@
 package org.openecomp.mso.bpmn.infrastructure.scripts
 
 import org.camunda.bpm.engine.delegate.BpmnError
-import org.camunda.bpm.engine.runtime.Execution
+import org.camunda.bpm.engine.delegate.DelegateExecution
 import org.openecomp.mso.bpmn.common.scripts.AaiUtil
+import org.openecomp.mso.bpmn.common.scripts.CatalogDbUtils
 import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil
 import org.openecomp.mso.bpmn.common.scripts.NetworkUtils
 import org.openecomp.mso.bpmn.common.scripts.SDNCAdapterUtils
@@ -30,20 +31,27 @@
 import org.openecomp.mso.bpmn.common.scripts.VfModuleBase
 import org.openecomp.mso.bpmn.core.WorkflowException
 import org.openecomp.mso.bpmn.core.json.JsonUtils;
+import org.openecomp.mso.client.aai.AAIResourcesClient
+import org.openecomp.mso.client.aai.entities.AAIResultWrapper
+import org.openecomp.mso.client.aai.entities.uri.AAIUri
 import org.openecomp.mso.rest.APIResponse
 import org.springframework.web.util.UriUtils
+import org.openecomp.mso.client.aai.AAIObjectType;
+import org.openecomp.mso.client.aai.entities.uri.AAIUriFactory;
+
 
 public class DoUpdateVfModule extends VfModuleBase {
 
 	ExceptionUtil exceptionUtil = new ExceptionUtil()
 	JsonUtils jsonUtil = new JsonUtils()
+	CatalogDbUtils catalog = new CatalogDbUtils()
 
 	/**
 	 * Initialize the flow's variables.
 	 *
 	 * @param execution The flow's execution instance.
 	 */
-	public void initProcessVariables(Execution execution) {
+	public void initProcessVariables(DelegateExecution execution) {
 		execution.setVariable('prefix', 'DOUPVfMod_')
 		execution.setVariable('DOUPVfMod_requestInfo', null)
 		execution.setVariable('DOUPVfMod_serviceInstanceId', null)
@@ -87,7 +95,7 @@
 	 *
 	 * @param execution The flow's execution instance.
 	 */
-	public void preProcessRequest(Execution execution) {
+	public void preProcessRequest(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.preProcessRequest(' +
 			'execution=' + execution.getId() +
 			')'
@@ -108,9 +116,10 @@
 				
 				def serviceModelInfo = execution.getVariable("serviceModelInfo")
 				logDebug("serviceModelInfo: " + serviceModelInfo, isDebugLogEnabled)
+				String modelInvariantUuid = jsonUtil.getJsonValue(serviceModelInfo, "modelInvariantUuid")
+				logDebug("modelInvariantUuid: " + modelInvariantUuid, isDebugLogEnabled)
 				def vnfModelInfo = execution.getVariable("vnfModelInfo")
 				
-
 				//tenantId
 				def tenantId = execution.getVariable("tenantId")
 				execution.setVariable("DOUPVfMod_tenantId", tenantId)
@@ -230,7 +239,37 @@
 				Map<String,String> vfModuleInputParams = execution.getVariable("vfModuleInputParams")
 				if (vfModuleInputParams != null) {
 					execution.setVariable("DOUPVfMod_vnfParamsMap", vfModuleInputParams)					
-				}				
+				}	
+				//get workload and environment context from parent SI
+				String environmentContext = ""
+				String workloadContext =""
+				String serviceType =""
+				
+				try{
+					String json = catalog.getServiceResourcesByServiceModelInvariantUuidString(execution,modelInvariantUuid )
+					serviceType = jsonUtil.getJsonValue(json, "serviceResources.serviceType")
+				}catch(BpmnError e){
+					throw e
+				} catch (Exception ex){
+					String msg = "Exception in preProcessRequest " + ex.getMessage()
+					utils.log("DEBUG", msg, isDebugLogEnabled)
+					exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+				}
+				
+				try{
+					AAIUri serviceInstanceURI = AAIUriFactory.create(AAIObjectType.SERVICE_INSTANCE, globalSubscriberId,serviceType,serviceInstanceId)
+					AAIResourcesClient aaiRC = new AAIResourcesClient()
+					AAIResultWrapper aaiRW = aaiRC.get(serviceInstanceURI)
+					Map<String, Object> aaiJson = aaiRW.asMap()
+					environmentContext = aaiJson.getOrDefault("environment-context","")
+					workloadContext = aaiJson.getOrDefault("workload-context","")
+					
+				}catch (Exception ex) {
+					utils.log("DEBUG","Error retreiving parent service instance information", isDebugLogEnabled)
+				}
+				
+				execution.setVariable("DCVFM_environmentContext",environmentContext)
+				execution.setVariable("DCVFM_workloadContext",workloadContext)
 			}
 			else {
 
@@ -296,7 +335,7 @@
 	 *
 	 * @param execution The flow's execution instance.
 	 */
-	public void prepPrepareUpdateAAIVfModule(Execution execution) {
+	public void prepPrepareUpdateAAIVfModule(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.preparePrepareUpdateAAIVfModule(' +
 			'execution=' + execution.getId() +
 			')'
@@ -335,7 +374,7 @@
 	 *
 	 * @param execution The flow's execution instance.
 	 */
-	public void prepConfirmVolumeGroupTenant(Execution execution) {
+	public void prepConfirmVolumeGroupTenant(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.prepConfirmVolumeGroupTenant(' +
 			'execution=' + execution.getId() +
 			')'
@@ -393,7 +432,7 @@
 	 *
 	 * @param execution The flow's execution instance.
 	 */
-	public void prepSDNCTopologyChg(Execution execution) {
+	public void prepSDNCTopologyChg(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.prepSDNCTopologyChg(' +
 			'execution=' + execution.getId() +
 			')'
@@ -493,7 +532,7 @@
 	 *
 	 * @param execution The flow's execution instance.
 	 */
-	public void prepSDNCTopologyQuery(Execution execution) {
+	public void prepSDNCTopologyQuery(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.prepSDNCTopologyQuery(' +
 			'execution=' + execution.getId() +
 			')'
@@ -554,7 +593,7 @@
 	 *
 	 * @param execution The flow's execution instance.
 	 */
-	public void prepVnfAdapterRest(Execution execution) {
+	public void prepVnfAdapterRest(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.prepVnfAdapterRest(' +
 			'execution=' + execution.getId() +
 			')'
@@ -590,12 +629,17 @@
 					notificationUrl = utils.getQualifiedHostNameForCallback(notificationUrl)
 			}
 			
+			String environmentContext = execution.getVariable("DOUPVEnvironment_context")
+			String workloadContext = execution.getVariable("DOUPVWorkload_context")
+			logDebug("workloadContext: " + workloadContext, isDebugLogEnabled)
+			logDebug("environmentContext: " + environmentContext, isDebugLogEnabled)
+			
 			Map<String, String> vnfParamsMap = execution.getVariable("DOUPVfMod_vnfParamsMap")
 
 			String sdncGetResponse = execution.getVariable('DOUPVfMod_sdncTopologyResponse')
 
 			String vfModuleParams = buildVfModuleParams(vnfParamsMap, sdncGetResponse, vnfId, vnfName,
-					vfModuleId, vfModuleName, null)
+					vfModuleId, vfModuleName, null, environmentContext, workloadContext)
 
 
 			String vnfAdapterRestRequest = """
@@ -646,7 +690,7 @@
 	 *
 	 * @param execution The flow's execution instance.
 	 */
-	public void prepUpdateAAIGenericVnf(Execution execution) {
+	public void prepUpdateAAIGenericVnf(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.prepUpdateAAIGenericVnf(' +
 			'execution=' + execution.getId() +
 			')'
@@ -694,7 +738,7 @@
 	 *
 	 * @param execution The flow's execution instance.
 	 */
-	public void prepUpdateAAIVfModule(Execution execution) {
+	public void prepUpdateAAIVfModule(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.prepUpdateAAIVfModule(' +
 			'execution=' + execution.getId() +
 			')'
@@ -767,7 +811,7 @@
 	 *
 	 * @param execution The flow's execution instance.
 	 */
-	public void prepSDNCTopologyAct(Execution execution) {
+	public void prepSDNCTopologyAct(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.prepSDNCTopologyAct(' +
 			'execution=' + execution.getId() +
 			')'
@@ -864,7 +908,7 @@
 	 *
 	 * @param execution The flow's execution instance.
 	 */
-	public void handleWorkflowException(Execution execution) {
+	public void handleWorkflowException(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.handleWorkflowException(' +
 			'execution=' + execution.getId() +
 			')'
@@ -884,7 +928,7 @@
 		}
 	}
 
-	public void validateSDNCResponse(Execution execution, String response, String method){
+	public void validateSDNCResponse(DelegateExecution execution, String response, String method){
 		def isDebugLogEnabled=execution.getVariable("isDebugLogEnabled")
 		def prefix = execution.getVariable("prefix")
 
@@ -916,7 +960,7 @@
 	 *
 	 * @param execution The flow's execution instance.
 	 */
-	public void queryAAIVfModule(Execution execution) {
+	public void queryAAIVfModule(DelegateExecution execution) {
 		def isDebugLogEnabled=execution.getVariable("isDebugLogEnabled")
 		def method = getClass().getSimpleName() + '.getVfModule(' +
 			'execution=' + execution.getId() +
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoUpdateVnfAndModules.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoUpdateVnfAndModules.groovy
index 7aa2ec6..5d1bc01 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoUpdateVnfAndModules.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoUpdateVnfAndModules.groovy
@@ -25,7 +25,7 @@
 import org.json.JSONObject;
 import org.json.JSONArray;
 import org.camunda.bpm.engine.delegate.BpmnError
-import org.camunda.bpm.engine.runtime.Execution;
+import org.camunda.bpm.engine.delegate.DelegateExecution;
 import org.hibernate.jpa.criteria.predicate.IsEmptyPredicate
 
 import static org.apache.commons.lang3.StringUtils.*;
@@ -60,7 +60,7 @@
 	 * @param - execution
 	 *	
 	 */
-	public void preProcessRequest(Execution execution) {
+	public void preProcessRequest(DelegateExecution execution) {
 		def isDebugEnabled = execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 		utils.log("DEBUG", " *** STARTED DoUpdateVnfAndModules PreProcessRequest Process*** ", isDebugEnabled)
@@ -143,7 +143,7 @@
 	 *
 	 * @param execution The flow's execution instance.
 	 */
-	public void queryAAIVfModule(Execution execution) {
+	public void queryAAIVfModule(DelegateExecution execution) {
 		def isDebugLogEnabled=execution.getVariable("isDebugLogEnabled")
 		def method = getClass().getSimpleName() + '.queryAAIVfModule(' +
 			'execution=' + execution.getId() +
@@ -218,6 +218,29 @@
 														
 								def isBaseVfModule = utils.getNodeText(vfModuleXml, "is-base-vf-module")
 								vfModuleEntry.put("isBaseVfModule", isBaseVfModule)
+								
+								String volumeGroupId = ''
+								
+								logDebug("Next module!", isDebugLogEnabled)
+								def vfModuleRelationships = vfModules[i].'**'.findAll {it.name() == 'relationship-data'}
+								if (vfModuleRelationships.size() > 0) {
+									for (j in 0..vfModuleRelationships.size()-1) {										
+										if (vfModuleRelationships[j] != null) {
+									
+											def relationshipKey = vfModuleRelationships[j].'**'.findAll {it.name() == 'relationship-key'}											
+										
+											if (relationshipKey[0] == 'volume-group.volume-group-id') {
+												def relationshipValue = vfModuleRelationships[j].'**'.findAll {it.name() == 'relationship-value'}
+												volumeGroupId = relationshipValue[0]
+												break
+											}
+										}
+									}
+								}
+								
+								vfModuleEntry.put("volumeGroupId", volumeGroupId)
+								logDebug("volumeGroupId is: " + volumeGroupId, isDebugLogEnabled)
+
 								// Save base vf module to add it to the start of the list later
 								if (isBaseVfModule == "true") {									
 									vfModuleBaseEntry = vfModuleEntry
@@ -253,7 +276,7 @@
 		}
 	}
 	
-	public void prepareNextModuleToUpdate(Execution execution){
+	public void prepareNextModuleToUpdate(DelegateExecution execution){
 		def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix", Prefix)
 		logDebug(" ======== STARTED prepareNextModuleToUpdate ======== ", isDebugLogEnabled)
@@ -275,7 +298,9 @@
 			String modelInvariantUuid = vfModule.get("modelInvariantUuid")
 			logDebug("ModelInvariantUuid: " + modelInvariantUuid, isDebugLogEnabled)			
 			
-			execution.setVariable("DUVAM_volumeGroupId", "")
+			def volumeGroupId = vfModule.get("volumeGroupId")
+			execution.setVariable("DUVAM_volumeGroupId", volumeGroupId)
+
 			execution.setVariable("DUVAM_volumeGroupName", "")
 			
 			VnfResource vnfResource = (VnfResource) execution.getVariable("vnfResourceDecomposition")
@@ -309,7 +334,7 @@
 	 *
 	 * @param execution The flow's execution instance.
 	 */
-	public void prepUpdateAAIGenericVnf(Execution execution) {
+	public void prepUpdateAAIGenericVnf(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.prepUpdateAAIGenericVnf(' +
 			'execution=' + execution.getId() +
 			')'
@@ -381,7 +406,7 @@
 	 *
 	 * @param execution The flow's execution instance.
 	 */
-	public void callAppCf(Execution execution) {
+	public void callAppCf(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.callAppC(' +
 			'execution=' + execution.getId() +
 			')'
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/HealchCheckActivate.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/HealchCheckActivate.groovy
index a2d192f..3ab1b17 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/HealchCheckActivate.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/HealchCheckActivate.groovy
@@ -21,7 +21,7 @@
 package org.openecomp.mso.bpmn.infrastructure.scripts;
 
 import org.camunda.bpm.engine.delegate.BpmnError
-import org.camunda.bpm.engine.runtime.Execution
+import org.camunda.bpm.engine.delegate.DelegateExecution
 import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor;
 import org.apache.commons.lang3.*
 
@@ -32,7 +32,7 @@
 	 * Validates the request message and sets up the workflow.
 	 * @param execution the execution
 	 */
-	public void preProcessRequest(Execution execution) {
+	public void preProcessRequest(DelegateExecution execution) {
 
 	}
 	
@@ -41,7 +41,7 @@
 	 * Sends the synchronous response back to the API Handler.
 	 * @param execution the execution
 	 */
-	public void sendResponse(Execution execution) {
+	public void sendResponse(DelegateExecution execution) {
 		def status = execution.getVariable("healthyStatus")
 		def healthcheckmessage = execution.getVariable("healthcheckmessage")
 			if (status == "true") {
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/ReplaceVnfInfra.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/ReplaceVnfInfra.groovy
index 3a5a3b7..c84c73c 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/ReplaceVnfInfra.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/ReplaceVnfInfra.groovy
@@ -30,7 +30,7 @@
 import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil
 import org.camunda.bpm.engine.delegate.BpmnError
 import org.camunda.bpm.engine.impl.cmd.AbstractSetVariableCmd
-import org.camunda.bpm.engine.runtime.Execution
+import org.camunda.bpm.engine.delegate.DelegateExecution
 import org.openecomp.mso.rest.APIResponse
 import org.openecomp.mso.rest.RESTClient
 import org.openecomp.mso.rest.RESTConfig
@@ -45,25 +45,22 @@
 import org.openecomp.mso.bpmn.core.domain.VnfResource
 import org.openecomp.mso.client.aai.*
 
-import org.openecomp.mso.client.appc.ApplicationControllerClient;
-import org.openecomp.mso.client.appc.ApplicationControllerSupport;
-import org.openecomp.appc.client.lcm.model.Action;
-import org.openecomp.appc.client.lcm.model.ActionIdentifiers;
-import org.openecomp.appc.client.lcm.model.LockInput
-import org.openecomp.appc.client.lcm.model.UnlockInput
-import org.openecomp.appc.client.lcm.model.HealthCheckInput
-import org.openecomp.appc.client.lcm.model.StartInput
-import org.openecomp.appc.client.lcm.model.StopInput
-import org.openecomp.appc.client.lcm.model.Flags
-import org.openecomp.appc.client.lcm.model.Status
+import org.openecomp.mso.client.appc.ApplicationControllerOrchestrator
+import org.onap.appc.client.lcm.model.Action;
+import org.onap.appc.client.lcm.model.ActionIdentifiers;
+import org.onap.appc.client.lcm.model.LockInput
+import org.onap.appc.client.lcm.model.UnlockInput
+import org.onap.appc.client.lcm.model.HealthCheckInput
+import org.onap.appc.client.lcm.model.StartInput
+import org.onap.appc.client.lcm.model.Flags
+import org.onap.appc.client.lcm.model.Status
 
 
 
-public class ReplaceVnfInfra extends AbstractServiceTaskProcessor {
+public class ReplaceVnfInfra extends VnfCmBase {
 
 	ExceptionUtil exceptionUtil = new ExceptionUtil()
-	JsonUtils jsonUtils = new JsonUtils()
-	ApplicationControllerClient appcClient = new ApplicationControllerClient()	
+	JsonUtils jsonUtils = new JsonUtils()		
 	def prefix = "RPLVnfI_"
 
 	/**
@@ -71,26 +68,33 @@
 	 *
 	 * @param execution The flow's execution instance.
 	 */
-	public void initProcessVariables(Execution execution) {
+	public void initProcessVariables(DelegateExecution execution) {
 		execution.setVariable('prefix', 'RPLVnfI_')
-		execution.setVariable('RPLVnfI_Request', null)
-		execution.setVariable('RPLVnfI_requestInfo', null)
-		execution.setVariable('RPLVnfI_requestId', null)
-		execution.setVariable('RPLVnfI_source', null)
-		execution.setVariable('RPLVnfI_vnfInputs', null)
-		execution.setVariable('RPLVnfI_vnfId', null)		
-		execution.setVariable('RPLVnfI_tenantId', null)		
-		execution.setVariable('RPLVnfI_vnfParams', null)
-		execution.setVariable('RPLVnfI_cloudConfiguration', null)		
+		execution.setVariable('Request', null)
+		execution.setVariable('requestInfo', null)		
+		execution.setVariable('source', null)
+		execution.setVariable('vnfInputs', null)		
+		execution.setVariable('tenantId', null)		
+		execution.setVariable('vnfParams', null)
+		execution.setVariable('cloudConfiguration', null)		
 		execution.setVariable('ReplaceVnfSuccessIndicator', false)
-		execution.setVariable('RPLVnfI_serviceType', null)
-		execution.setVariable('RPLVnfI_nfRole', null)
-		execution.setVariable('RPLVnfI_currentActivity', 'RPLVnfI')
-		execution.setVariable('RPLVnfI_workStep', null)
-		execution.setVariable('RPLVnfI_failedActivity', null)
-		execution.setVariable('RPLVnfI_errorCode', "0")
-		execution.setVariable('RPLVnfI_errorText', null)
-		execution.setVariable('RPLVnfI_healthCheckIndex', 1)
+		execution.setVariable('serviceType', null)
+		execution.setVariable('nfRole', null)
+		execution.setVariable('currentActivity', 'RPLVnfI')
+		execution.setVariable('workStep', null)
+		execution.setVariable('failedActivity', null)
+		execution.setVariable('errorCode', "0")
+		execution.setVariable('errorText', null)
+		execution.setVariable('healthCheckIndex', 1)
+		execution.setVariable('retainResources', true)
+		execution.setVariable('productFamilyId', null)
+		execution.setVariable('healthCheckIndex0', 0)
+		execution.setVariable('healthCheckIndex1', 1)
+		execution.setVariable("rollbackSetClosedLoopDisabledFlag", false)
+		execution.setVariable("rollbackVnfStop", false)
+		execution.setVariable("rollbackVnfLock", false)
+		execution.setVariable("rollbackQuiesceTraffic", false)
+		execution.setVariable("rollbackSetVnfInMaintenanceFlag", false)
 	}
 
 	/**
@@ -98,7 +102,7 @@
 	 *
 	 * @param execution The flow's execution instance.
 	 */
-	public void preProcessRequest(Execution execution) {
+	public void preProcessRequest(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.preProcessRequest(' +
 		'execution=' + execution.getId() +
 		')'
@@ -120,9 +124,17 @@
 			def serviceInstanceId = execution.getVariable('serviceInstanceId')
 			def vnfId = execution.getVariable('vnfId')
 			
-			execution.setVariable(prefix + 'serviceInstanceId', serviceInstanceId)
-			execution.setVariable(prefix + 'vnfId', vnfId)
-			execution.setVariable("isVidRequest", "true")			
+			execution.setVariable('serviceInstanceId', serviceInstanceId)			
+			execution.setVariable("isVidRequest", "true")
+			execution.setVariable('serviceType', 'Mobility')
+			execution.setVariable('retainResources', true)
+			execution.setVariable('disableRollback', true)
+			execution.setVariable('payload', "")
+			execution.setVariable('actionLock', Action.Lock)
+			execution.setVariable('actionUnlock', Action.Unlock)
+			execution.setVariable('actionHealthCheck', Action.HealthCheck)
+			execution.setVariable('actionStart', Action.Start)
+			execution.setVariable('actionStop', Action.Stop)
 			
 			def asdcServiceModelVersion = ''
 			def serviceModelInfo = null
@@ -143,61 +155,64 @@
 				}
 			}		
 			
-			execution.setVariable(prefix + 'asdcServiceModelVersion', asdcServiceModelVersion)
-			execution.setVariable(prefix + 'serviceModelInfo', serviceModelInfo)
+			execution.setVariable('asdcServiceModelVersion', asdcServiceModelVersion)
+			execution.setVariable('serviceModelInfo', serviceModelInfo)			
 			def vnfModelInfo = jsonOutput.toJson(reqMap.requestDetails?.modelInfo)
-			execution.setVariable(prefix + 'vnfModelInfo', vnfModelInfo)
+			execution.setVariable('vnfModelInfo', vnfModelInfo)
 			def vnfModelInvariantUuid = jsonUtils.getJsonValue(vnfModelInfo, "modelInvariantUuid")
-			execution.setVariable(prefix + 'vnfModelInvariantUuid', vnfModelInvariantUuid)	
+			execution.setVariable('vnfModelInvariantUuid', vnfModelInvariantUuid)	
 			logDebug("vnfModelInvariantUuid: " + vnfModelInvariantUuid, isDebugLogEnabled)	
 			
 			def vnfType = execution.getVariable('vnfType')
-			execution.setVariable(prefix + 'vnfType', vnfType)	
+			execution.setVariable('vnfType', vnfType)	
 			
 			def userParams = reqMap.requestDetails?.requestParameters?.userParams					
 			
 			Map<String, String> userParamsMap = [:]
 			if (userParams != null) {
 				userParams.each { userParam ->
-					userParamsMap.put(userParam.name, userParam.value)
+					userParamsMap.put(userParam.name, userParam.value.toString())
 				}							
 			}		
 						
 			utils.log("DEBUG", 'Processed user params: ' + userParamsMap, isDebugLogEnabled)		
 			
-			execution.setVariable(prefix + 'vfModuleInputParams', userParamsMap)			
+			execution.setVariable('vfModuleInputParams', userParamsMap)			
 						
-			def requestId = execution.getVariable("mso-request-id")
-			execution.setVariable(prefix + 'requestId', requestId)
-			
+			def requestId = execution.getVariable("requestId")		
+			execution.setVariable('msoRequestId', requestId)
+			utils.log("DEBUG", "requestId is: " + requestId, isDebugLogEnabled)
 			
 			def vnfName = reqMap.requestDetails?.requestInfo?.instanceName ?: null
-			execution.setVariable(prefix + 'vnfName', vnfName)
+			execution.setVariable('vnfName', vnfName)
 			
 			def requestorId = reqMap.requestDetails?.requestInfo?.requestorId ?: null
-			execution.setVariable(prefix + 'requestorId', requestorId)
+			execution.setVariable('requestorId', requestorId)
 			
 			def usePreload = reqMap.requestDetails?.requestParameters?.usePreload
-			execution.setVariable(prefix + 'usePreload', usePreload)
+			execution.setVariable('usePreload', usePreload)
+			
+			def productFamilyId = reqMap.requestDetails?.requestInfo?.productFamilyId ?: null
+			execution.setVariable('productFamilyId', productFamilyId)
 			
 			def cloudConfiguration = jsonOutput.toJson(reqMap.requestDetails?.cloudConfiguration)		
-			execution.setVariable(prefix + 'cloudConfiguration', cloudConfiguration)
+			execution.setVariable('cloudConfiguration', cloudConfiguration)
 			def lcpCloudRegionId	= jsonUtils.getJsonValue(cloudConfiguration, "lcpCloudRegionId")
-			execution.setVariable(prefix + 'lcpCloudRegionId', lcpCloudRegionId)
+			execution.setVariable('lcpCloudRegionId', lcpCloudRegionId)
 			def tenantId = jsonUtils.getJsonValue(cloudConfiguration, "tenantId")
-			execution.setVariable(prefix + 'tenantId', tenantId)
+			execution.setVariable('tenantId', tenantId)
 			
 			def globalSubscriberId = reqMap.requestDetails?.subscriberInfo?.globalSubscriberId ?: ''
-			execution.setVariable(prefix + 'globalSubscriberId', globalSubscriberId)
+			execution.setVariable('globalSubscriberId', globalSubscriberId)
 			
-			execution.setVariable(prefix + 'sdncVersion', '1702')
+			execution.setVariable('sdncVersion', '1702')
 
 			execution.setVariable("ReplaceVnfInfraSuccessIndicator", false)
 						
 			execution.setVariable("isDebugLogEnabled", isDebugLogEnabled)			
 			
 			def source = reqMap.requestDetails?.requestInfo?.source
-			execution.setVariable(prefix + "source", source)
+			execution.setVariable("source", source)
 			
 			//For Completion Handler & Fallout Handler
 			String requestInfo =
@@ -207,9 +222,9 @@
 					<source>${source}</source>
 				   </request-info>"""
 			
-			execution.setVariable(prefix + "requestInfo", requestInfo)			
+			execution.setVariable("requestInfo", requestInfo)			
 			
-			logDebug('RequestInfo: ' + execution.getVariable(prefix + "requestInfo"), isDebugLogEnabled)		
+			logDebug('RequestInfo: ' + execution.getVariable("requestInfo"), isDebugLogEnabled)		
 			
 			logDebug('Exited ' + method, isDebugLogEnabled)
 
@@ -231,7 +246,7 @@
 	 *
 	 * @param execution The flow's execution instance.
 	 */
-	public void sendSynchResponse(Execution execution) {
+	public void sendSynchResponse(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.sendSynchResponse(' +
 			'execution=' + execution.getId() +
 			')'
@@ -240,9 +255,9 @@
 
 
 		try {
-			def requestInfo = execution.getVariable('RPLVnfI_requestInfo')
-			def requestId = execution.getVariable('RPLVnfI_requestId')
-			def source = execution.getVariable('RPLVnfI_source')
+			def requestInfo = execution.getVariable('requestInfo')
+			def requestId = execution.getVariable('requestId')
+			def source = execution.getVariable('source')
 			def progress = getNodeTextForce(requestInfo, 'progress')
 			if (progress.isEmpty()) {
 				progress = '0'
@@ -275,7 +290,7 @@
 	 *
 	 * @param execution The flow's execution instance.
 	 */
-	public void getVnfResourceDecomposition(Execution execution) {
+	public void getVnfResourceDecomposition(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.getVnfResourceDecomposition(' +
 			'execution=' + execution.getId() +
 			')'
@@ -284,7 +299,7 @@
 
 		try {
 			ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition")
-			String vnfModelInvariantUuid = execution.getVariable(prefix + 'vnfModelInvariantUuid')
+			String vnfModelInvariantUuid = execution.getVariable('vnfModelInvariantUuid')
 			logDebug("vnfModelInvariantUuid: " + vnfModelInvariantUuid, isDebugLogEnabled)
 			List<VnfResource> vnfResources = serviceDecomposition.getServiceVnfs()
 			
@@ -295,9 +310,9 @@
 				
 				if (vnfModelInvariantUuid.equals(modelInvariantUuidFromDecomposition)) {
 					VnfResource vnfResourceDecomposition = vnfResources[i]
-					execution.setVariable(prefix + 'vnfResourceDecomposition', vnfResourceDecomposition)
+					execution.setVariable('vnfResourceDecomposition', vnfResourceDecomposition)
 					def nfRole = vnfResourceDecomposition.getNfRole()					
-					execution.setVariable(prefix + 'nfRole', nfRole)
+					execution.setVariable('nfRole', nfRole)
 					logDebug("vnfResourceDecomposition: " + vnfResourceDecomposition.toJsonString(), isDebugLogEnabled)					
 					break
 				}
@@ -322,13 +337,13 @@
 	 *
 	 * @param execution The flow's execution instance.
 	 */
-	public void checkIfVnfInMaintInAAI(Execution execution) {
+	public void checkIfVnfInMaintInAAI(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.checkIfVnfInMaintInAAI(' +
 			'execution=' + execution.getId() +
 			')'
 		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
-		execution.setVariable(prefix + 'errorCode', "0")
-		execution.setVariable(prefix + "workStep", "checkIfVnfInMaintInAAI")
+		execution.setVariable('errorCode', "0")
+		execution.setVariable("workStep", "checkIfVnfInMaintInAAI")
 		execution.setVariable("failedActivity", "AAI")
 		logDebug('Entered ' + method, isDebugLogEnabled)
 
@@ -340,15 +355,21 @@
 			def vnfId = execution.getVariable("vnfId")
 			boolean isInMaint = aaiValidator.isVNFLocked(vnfId, transactionLoggingUuid)
 			logDebug("isInMaint result: " + isInMaint, isDebugLogEnabled)
-			execution.setVariable(prefix + 'isVnfInMaintenance', isInMaint)
+			execution.setVariable('isVnfInMaintenance', isInMaint)
+			
+			if (isInMaint) {
+				execution.setVariable("errorCode", "1003")
+				execution.setVariable("errorText", "VNF is in maintenance in A&AI")
+			}
+
 
 			logDebug('Exited ' + method, isDebugLogEnabled)
 		} catch (BpmnError e) {
 			throw e;
 		} catch (Exception e) {
 			logError('Caught exception in ' + method, e)
-			execution.setVariable(prefix + "errorCode", "1002")
-			execution.setVariable(prefix + "errorText", e.getMessage())
+			execution.setVariable("errorCode", "1002")
+			execution.setVariable("errorText", e.getMessage())
 			//exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in checkIfVnfInMaintInAAI(): ' + e.getMessage())
 		}
 	}
@@ -360,14 +381,14 @@
 	 *
 	 * @param execution The flow's execution instance.
 	 */
-	public void checkIfPserversInMaintInAAI(Execution execution) {
+	public void checkIfPserversInMaintInAAI(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.checkIfPserversInMaintInAAI(' +
 			'execution=' + execution.getId() +
 			')'
 		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
-		execution.setVariable(prefix + 'errorCode', "0")
+		execution.setVariable('errorCode', "0")
 		logDebug('Entered ' + method, isDebugLogEnabled)
-		execution.setVariable(prefix + "workStep", "checkIfPserversInMaintInAAI")
+		execution.setVariable("workStep", "checkIfPserversInMaintInAAI")
 		execution.setVariable("failedActivity", "AAI")
 
 		try {
@@ -378,15 +399,20 @@
 			def vnfId = execution.getVariable("vnfId")			
 			boolean areLocked = aaiValidator.isPhysicalServerLocked(vnfId, transactionLoggingUuid)
 			logDebug("areLocked result: " + areLocked, isDebugLogEnabled)
-			execution.setVariable(prefix + 'arePserversLocked', areLocked)
+			execution.setVariable('arePserversLocked', areLocked)
+			
+			if (areLocked) {
+				execution.setVariable("errorCode", "1003")
+				execution.setVariable("errorText", "pServers are locked in A&AI")
+			}
 
 			logDebug('Exited ' + method, isDebugLogEnabled)
 		} catch (BpmnError e) {
 			throw e;
 		} catch (Exception e) {
 			logError('Caught exception in ' + method, e)
-			execution.setVariable(prefix + "errorCode", "1002")
-			execution.setVariable(prefix + "errorText", e.getMessage())
+			execution.setVariable("errorCode", "1002")
+			execution.setVariable("errorText", e.getMessage())
 			//exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in checkIfPserversInMaintInAAI(): ' + e.getMessage())
 		}
 	}
@@ -398,18 +424,18 @@
 	 * @param execution The flow's execution instance.
 	 * @param inMaint The boolean value of the flag to set
 	 */
-	public void setVnfInMaintFlagInAAI(Execution execution, boolean inMaint) {
+	public void setVnfInMaintFlagInAAI(DelegateExecution execution, boolean inMaint) {
 		def method = getClass().getSimpleName() + '.setVnfInMaintFlagInAAI(' +
 			'execution=' + execution.getId() +
 			')'
 		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
-		execution.setVariable(prefix + 'errorCode', "0")
+		execution.setVariable('errorCode', "0")
 		logDebug('Entered ' + method, isDebugLogEnabled)
 		if (inMaint) {
-			execution.setVariable(prefix + "workStep", "setVnfInMaintFlagInAAI")
+			execution.setVariable("workStep", "setVnfInMaintFlagInAAI")
 		}
 		else {
-			execution.setVariable(prefix + "workStep", "unsetVnfInMaintFlagInAAI")
+			execution.setVariable("workStep", "unsetVnfInMaintFlagInAAI")
 		}
 		execution.setVariable("failedActivity", "AAI")
 
@@ -421,6 +447,7 @@
 			def vnfId = execution.getVariable("vnfId")
 			if (inMaint) {
 				aaiUpdator.updateVnfToLocked(vnfId, transactionLoggingUuid)
+				execution.setVariable("rollbackSetVnfInMaintenanceFlag", true)
 			}
 			else {
 				aaiUpdator.updateVnfToUnLocked(vnfId, transactionLoggingUuid)
@@ -431,8 +458,8 @@
 			throw e;
 		} catch (Exception e) {
 			logError('Caught exception in ' + method, e)
-			execution.setVariable(prefix + "errorCode", "1002")
-			execution.setVariable(prefix + "errorText", e.getMessage())
+			execution.setVariable("errorCode", "1002")
+			execution.setVariable("errorText", e.getMessage())
 			//exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in setVnfInMaintFlagInAAI(): ' + e.getMessage())
 		}
 	}
@@ -444,50 +471,46 @@
 	 * @param execution The flow's execution instance.
 	 * @param action The action to take in APP-C.
 	 */
-	public void runAppcCommand(Execution execution, Action action) {
+	public void runAppcCommand(DelegateExecution execution, Action action) {
 		def method = getClass().getSimpleName() + '.runAppcCommand(' +
 			'execution=' + execution.getId() +
 			')'
 		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
-		execution.setVariable(prefix + 'errorCode', "0")
-		logDebug('Entered ' + method, isDebugLogEnabled)
+		execution.setVariable('errorCode', "0")
+		logDebug('Entered ' + method, isDebugLogEnabled)		
 		
 		try {
 			logDebug("Running APP-C action: " + action.toString(), isDebugLogEnabled)
 			String vnfId = execution.getVariable('vnfId')
-			String msoRequestId = execution.getVariable(prefix + 'requestId')
+			String msoRequestId = execution.getVariable('requestId')
 			execution.setVariable('msoRequestId', msoRequestId)
-			execution.setVariable(prefix + "failedActivity", "APP-C")
-				
-			ApplicationControllerSupport support = new ApplicationControllerSupport()
-			appcClient.appCSupport=support
-			org.springframework.test.util.ReflectionTestUtils.setField(support, "lcmModelPackage", "org.openecomp.appc.client.lcm.model");
-			Flags flags = new Flags();
-			ActionIdentifiers actionIdentifiers = new ActionIdentifiers();
-			actionIdentifiers.setVnfId(vnfId);
-			Status appcStatus
+			execution.setVariable("failedActivity", "APP-C")
+			execution.setVariable("workStep", action.toString() + "VNF")
+			
+			ApplicationControllerOrchestrator appcClient = new ApplicationControllerOrchestrator()			
+			Status appcStatus = null
 			switch(action) {
 				case Action.Lock:
-					execution.setVariable(prefix + 'workStep', "LockVNF")
-					appcStatus = appcClient.runCommand(Action.Lock,actionIdentifiers,flags,null,msoRequestId)
+					execution.setVariable('workStep', "LockVNF")
+					appcStatus = appcClient.runCommand(Action.Lock,msoRequestId,vnfId,null)
 					break
 				case Action.Unlock:
-					execution.setVariable(prefix + 'workStep', "UnlockVNF")
-					appcStatus = appcClient.runCommand(Action.Unlock,actionIdentifiers,flags,null,msoRequestId)
+					execution.setVariable('workStep', "UnlockVNF")
+					appcStatus = appcClient.runCommand(Action.Unlock,msoRequestId,vnfId,null)
 					break
 				case Action.HealthCheck:
-					def healthCheckIndex = execution.getVariable(prefix + 'healthCheckIndex')
-					execution.setVariable(prefix + 'workStep', "HealthCheckVNF" + healthCheckIndex)
-					execution.setVariable(prefix + 'healthCheckIndex', healthCheckIndex + 1)
-					appcStatus = appcClient.runCommand(Action.HealthCheck,actionIdentifiers,flags,null,msoRequestId)
+					def healthCheckIndex = execution.getVariable('healthCheckIndex')
+					execution.setVariable('workStep', "HealthCheckVNF" + healthCheckIndex)
+					execution.setVariable('healthCheckIndex', healthCheckIndex + 1)
+					appcStatus = appcClient.runCommand(Action.HealthCheck,msoRequestId,vnfId,null)
 					break
 				case Action.Start:
-					execution.setVariable(prefix + 'workStep', "StartVNF")
-					appcStatus = appcClient.runCommand(Action.Start,actionIdentifiers,flags,null,msoRequestId)
+					execution.setVariable('workStep', "StartVNF")
+					appcStatus = appcClient.runCommand(Action.Start,msoRequestId,vnfId,null)
 					break
 				case Action.Stop:
-					execution.setVariable(prefix + 'workStep', "StopVNF")
-					appcStatus = appcClient.runCommand(Action.Stop,actionIdentifiers,flags,null,msoRequestId)
+					execution.setVariable('workStep', "StopVNF")
+					appcStatus = appcClient.runCommand(Action.Stop,msoRequestId,vnfId,null)
 					break
 				default:
 					break
@@ -497,86 +520,42 @@
 			logDebug("AppC status code is: " + appcCode, isDebugLogEnabled)
 			logDebug("AppC status message is: " + appcStatus.getMessage(), isDebugLogEnabled)
 			if (support.getCategoryOf(appcStatus) == ApplicationControllerSupport.StatusCategory.ERROR) {
-				execution.setVariable(prefix + "errorCode", Integer.toString(appcCode))
-				execution.setVariable(prefix + "errorText", appcStatus.getMessage())
+				execution.setVariable("errorCode", Integer.toString(appcCode))
+				execution.setVariable("errorText", appcStatus.getMessage())
 			}
+			
 			logDebug('Exited ' + method, isDebugLogEnabled)
 		} catch (BpmnError e) {
 			logError('Caught exception in ' + method, e)
-			execution.setVariable(prefix + "errorCode", "1002")
-			execution.setVariable(prefix + "errorText", e.getMessage())
-			//throw e;
+			execution.setVariable("errorCode", "1002")
+			execution.setVariable("errorText", e.getMessage())			
 		} catch (java.lang.NoSuchMethodError e) {
 			logError('Caught exception in ' + method, e)
-			execution.setVariable(prefix + "errorCode", "1002")
-			execution.setVariable(prefix + "errorText", e.getMessage())
-			//throw e;
+			execution.setVariable("errorCode", "1002")
+			execution.setVariable("errorText", e.getMessage())				
 		} catch (Exception e) {
 			logError('Caught exception in ' + method, e)
-			execution.setVariable(prefix + "errorCode", "1002")
-			execution.setVariable(prefix + "errorText", e.getMessage())
-			
-			//exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in ' + method + ': ' + e.getMessage())
+			execution.setVariable("errorCode", "1002")
+			execution.setVariable("errorText", e.getMessage())			
 		}
 	}
 
 
 	
-
-	/**
-	 * Builds a "CompletionHandler" request and stores it in the specified execution variable.
-	 *
-	 * @param execution the execution
-	 * @param resultVar the execution variable in which the result will be stored
-	 */
-	public void completionHandlerPrep(Execution execution, String resultVar) {
-		def method = getClass().getSimpleName() + '.completionHandlerPrep(' +
-			'execution=' + execution.getId() +
-			', resultVar=' + resultVar +
-			')'
-		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
-		logDebug('Entered ' + method, isDebugLogEnabled)
-
-		try {
-			def requestInfo = getVariable(execution, 'RPLVnfI_requestInfo')
-			
-			appcClient.shutdownclient()
-
-			String content = """
-				<sdncadapterworkflow:MsoCompletionRequest xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1"
-						xmlns:reqtype="http://org.openecomp/mso/request/types/v1">
-					${requestInfo}
-					<sdncadapterworkflow:mso-bpel-name>MSO_ACTIVATE_BPEL</sdncadapterworkflow:mso-bpel-name>
-				</sdncadapterworkflow:MsoCompletionRequest>
-			"""
-
-			content = utils.formatXml(content)
-			logDebug(resultVar + ' = ' + System.lineSeparator() + content, isDebugLogEnabled)
-			execution.setVariable(resultVar, content)
-
-			logDebug('Exited ' + method, isDebugLogEnabled)
-		} catch (BpmnError e) {
-			throw e;
-		} catch (Exception e) {
-			logError('Caught exception in ' + method, e)
-			exceptionUtil.buildAndThrowWorkflowException(execution, 2000, 'Internal Error')
-		}
-	}
-	
 	/**
 	* Prepare DoDeleteVnfAndModules call.
 	*
 	*
 	* @param execution The flow's execution instance.
 	*/
-   public void prepDoDeleteVnfAndModules(Execution execution) {
+   public void prepDoDeleteVnfAndModules(DelegateExecution execution) {
 	   def method = getClass().getSimpleName() + '.prepDoDeleteVnfAndModules(' +
 		   'execution=' + execution.getId() +
 		   ')'
 	   def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled') 
-	   execution.setVariable(prefix + 'errorCode', "0")
+	   execution.setVariable('errorCode', "0")
 	   logDebug('Entered ' + method, isDebugLogEnabled)
-	   execution.setVariable(prefix + "workStep", "doDeleteVnfAndModules")
+	   execution.setVariable("workStep", "doDeleteVnfAndModules")
 	   execution.setVariable("failedActivity", "MSO Delete VNF")
 	   logDebug('Exited ' + method, isDebugLogEnabled)
 	   
@@ -588,87 +567,34 @@
 	*
 	* @param execution The flow's execution instance.
 	*/
-   public void prepDoCreateVnfAndModules(Execution execution) {
+   public void prepDoCreateVnfAndModules(DelegateExecution execution) {
 	   def method = getClass().getSimpleName() + '.prepDoReplaceVnfAndModules(' +
 		   'execution=' + execution.getId() +
 		   ')'
 	   def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
-	   execution.setVariable(prefix + 'errorCode', "0")
+	   execution.setVariable('errorCode', "0")
 	   logDebug('Entered ' + method, isDebugLogEnabled)
-	   execution.setVariable(prefix + "workStep", "doReplaceVnfAndModules")
-	   execution.setVariable("failedActivity", "MSO Replace VNF")
+	   execution.setVariable("workStep", "doCreateVnfAndModules")
+	   execution.setVariable("failedActivity", "MSO Create VNF")
 	   logDebug('Exited ' + method, isDebugLogEnabled)
 	   
    }
 	
-	/**
-	 * Builds a "FalloutHandler" request and stores it in the specified execution variable.
-	 *
-	 * @param execution the execution
-	 * @param resultVar the execution variable in which the result will be stored
-	 */
-	public void falloutHandlerPrep(Execution execution, String resultVar) {
-		def method = getClass().getSimpleName() + '.falloutHandlerPrep(' +
-			'execution=' + execution.getId() +
-			', resultVar=' + resultVar +
-			')'
-		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
-		logDebug('Entered ' + method, isDebugLogEnabled)
-
-		try {
-			def prefix = execution.getVariable('prefix')
-			def request = getVariable(execution, prefix+'Request')
-			def requestInformation = execution.getVariable(prefix + "requestInfo")			
-			
-			appcClient.shutdownclient()
-
-			def WorkflowException workflowException = execution.getVariable("WorkflowException")
-			def errorResponseCode = workflowException.getErrorCode()
-			def errorResponseMsg = workflowException.getErrorMessage()
-			def encErrorResponseMsg = ""
-			if (errorResponseMsg != null) {
-				encErrorResponseMsg = errorResponseMsg.replace("&", "&amp;").replace("<", "&lt;").replace(">", "&gt;")
-			}
-
-			String content = """
-				<sdncadapterworkflow:FalloutHandlerRequest xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1"
-						xmlns:reqtype="http://org.openecomp/mso/request/types/v1"
-						xmlns:msoservtypes="http://org.openecomp/mso/request/types/v1"
-						xmlns:structuredtypes="http://org.openecomp/mso/structured/types/v1">
-					${requestInformation}
-					<sdncadapterworkflow:WorkflowException>
-						<sdncadapterworkflow:ErrorMessage>${encErrorResponseMsg}</sdncadapterworkflow:ErrorMessage>
-						<sdncadapterworkflow:ErrorCode>${errorResponseCode}</sdncadapterworkflow:ErrorCode>
-					</sdncadapterworkflow:WorkflowException>
-				</sdncadapterworkflow:FalloutHandlerRequest>
-			"""
-			content = utils.formatXml(content)
-			logDebug(resultVar + ' = ' + System.lineSeparator() + content, isDebugLogEnabled)
-			execution.setVariable(resultVar, content)
-
-			logDebug('Exited ' + method, isDebugLogEnabled)
-		} catch (BpmnError e) {
-			throw e;
-		} catch (Exception e) {
-			logError('Caught exception in ' + method, e)
-			exceptionUtil.buildWorkflowException(execution, 2000, 'Internal Error')
-		}
-	}
 	
 	/**
 	 * Handle Abort disposition from RainyDayHandler
 	 *	 
 	 * @param execution The flow's execution instance.	
 	 */
-	public void abortProcessing(Execution execution) {
+	public void abortProcessing(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.abortProcessing(' +
 			'execution=' + execution.getId() +
 			')'
 		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
 		logDebug('Entered ' + method, isDebugLogEnabled)
 		
-		def errorText = execution.getVariable(prefix + "errorText")
-		def errorCode = execution.getVariable(prefix + "errorCode")
+		def errorText = execution.getVariable("errorText")
+		def errorCode = execution.getVariable("errorCode")
 		
 		exceptionUtil.buildAndThrowWorkflowException(execution, errorCode as Integer, errorText)
 	}
@@ -678,14 +604,14 @@
 	 *
 	 * @param execution The flow's execution instance.
 	 */
-	public void manualProcessing(Execution execution) {
+	public void manualProcessing(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.manualProcessing(' +
 			'execution=' + execution.getId() +
 			')'
 		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
 		logDebug('Entered ' + method, isDebugLogEnabled)
 		
-		def taskId = execution.getVariable("RPLVnfI_taskId")
+		def taskId = execution.getVariable("taskId")
 		
 		exceptionUtil.buildAndThrowWorkflowException(execution, 2000, "Processing halted - manual task created: " + taskId)
 	}
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
new file mode 100644
index 0000000..b3ac195
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/RollbackVnf.groovy
@@ -0,0 +1,153 @@
+/*-
+ * ============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.bpmn.infrastructure.scripts
+
+import groovy.json.JsonOutput
+import groovy.json.JsonSlurper
+import groovy.util.Node
+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
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.impl.cmd.AbstractSetVariableCmd
+import org.camunda.bpm.engine.delegate.DelegateExecution
+import org.openecomp.mso.rest.APIResponse
+import org.openecomp.mso.rest.RESTClient
+import org.openecomp.mso.rest.RESTConfig
+import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor;
+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
+import org.openecomp.mso.bpmn.core.domain.VnfResource
+import org.openecomp.mso.client.aai.*
+
+import org.openecomp.mso.client.appc.ApplicationControllerClient;
+import org.openecomp.mso.client.appc.ApplicationControllerSupport;
+import org.openecomp.mso.client.aai.AAIResourcesClient
+import org.openecomp.mso.client.aai.entities.AAIResultWrapper
+import org.openecomp.mso.client.aai.entities.uri.AAIUri
+import org.openecomp.mso.client.aai.entities.uri.AAIUriFactory
+import org.onap.appc.client.lcm.model.Action;
+import org.onap.appc.client.lcm.model.ActionIdentifiers;
+import org.onap.appc.client.lcm.model.LockInput
+import org.onap.appc.client.lcm.model.UnlockInput
+import org.onap.appc.client.lcm.model.HealthCheckInput
+import org.onap.appc.client.lcm.model.StartInput
+import org.onap.appc.client.lcm.model.StopInput
+import org.onap.appc.client.lcm.model.Flags
+import org.onap.appc.client.lcm.model.Status
+
+
+
+public class RollbackVnf extends VnfCmBase {
+
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+	JsonUtils jsonUtils = new JsonUtils()	
+	def prefix = "VnfIPU_"
+
+	/**
+	 * Initialize the flow's variables.
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void initProcessVariables(DelegateExecution execution) {
+		execution.setVariable('prefix', 'RVnf_')
+		
+		execution.setVariable('rollbackSuccessful', false)		
+		execution.setVariable('currentActivity', 'RVnf')
+		execution.setVariable('workStep', null)
+		execution.setVariable('failedActivity', null)
+		execution.setVariable('errorCode', "0")
+		execution.setVariable('actionUnlock', Action.Unlock)	
+		execution.setVariable('actionStart', Action.Start)
+		execution.setVariable('actionResumeTraffic', Action.ResumeTraffic)
+		
+	}
+
+	/**
+	 * Check for missing elements in the received request.
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void preProcessRequest(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.preProcessRequest(' +
+		'execution=' + execution.getId() +
+		')'
+		initProcessVariables(execution)
+		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')		
+		logDebug('Entered ' + method, isDebugLogEnabled)
+
+		initProcessVariables(execution)
+		
+		try {
+		
+			execution.setVariable("rollbackErrorCode", "0")
+			
+			if (execution.getVariable("rollbackSetClosedLoopDisabledFlag") == true) {
+				logDebug("Will call setClosedLoopDisabledFlag", isDebugLogEnabled)
+			}			
+
+		
+			logDebug('Exited ' + method, isDebugLogEnabled)
+
+		}
+		catch(Exception e) {
+			String restFaultMessage = e.getMessage()
+			utils.log("ERROR", " Exception Encountered - " + "\n" + restFaultMessage, isDebugLogEnabled)
+			execution.setVariable("rollbackErrorCode", "1")
+		}	
+	}
+	
+	/**
+	 * Determine success of rollback execution.
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void setRollbackResult(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.setRollbackResult(' +
+		'execution=' + execution.getId() +
+		')'
+		initProcessVariables(execution)
+		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+		logDebug('Entered ' + method, isDebugLogEnabled)
+		
+		def rollbackErrorCode = execution.getVariable('rollbackErrorCode')
+		if (rollbackErrorCode == "0") {
+			execution.setVariable('rollbackSuccessful', true)
+			logDebug("rollback successful", isDebugLogEnabled)
+		}
+		else {
+			execution.setVariable('rollbackSuccessful', false)
+			logDebug("rollback unsuccessful", isDebugLogEnabled)
+		}		
+		
+		logDebug('Exited ' + method, isDebugLogEnabled)	
+		
+	}	
+	
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/UpdateCustomE2EServiceInstance.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/UpdateCustomE2EServiceInstance.groovy
index 44eaa34..1c87c11 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/UpdateCustomE2EServiceInstance.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/UpdateCustomE2EServiceInstance.groovy
@@ -34,7 +34,7 @@
 import java.util.UUID;
 
 import org.camunda.bpm.engine.delegate.BpmnError
-import org.camunda.bpm.engine.runtime.Execution
+import org.camunda.bpm.engine.delegate.DelegateExecution
 import org.apache.commons.lang3.*
 import org.apache.commons.codec.binary.Base64;
 import org.springframework.web.util.UriUtils
@@ -50,7 +50,7 @@
 	JsonUtils jsonUtil = new JsonUtils()
 
 
-	public void preProcessRequest (Execution execution) {
+	public void preProcessRequest (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 		String msg = ""
@@ -139,7 +139,7 @@
 		utils.log("INFO"," ***** Exit preProcessRequest *****",  isDebugEnabled)
 	}
 
-	public void sendSyncResponse (Execution execution) {
+	public void sendSyncResponse (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		utils.log("INFO", " *** sendSyncResponse *** ", isDebugEnabled)
 
@@ -161,7 +161,7 @@
 	}
 
 
-	public void sendSyncError (Execution execution) {
+	public void sendSyncError (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		utils.log("INFO", " *** sendSyncError *** ", isDebugEnabled)
 
@@ -189,7 +189,7 @@
 
 	}
 
-	public void prepareCompletionRequest (Execution execution) {
+	public void prepareCompletionRequest (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		utils.log("INFO", " *** prepareCompletion *** ", isDebugEnabled)
 
@@ -225,7 +225,7 @@
 		utils.log("INFO", "*** Exit prepareCompletionRequest ***", isDebugEnabled)
 	}
 
-	public void prepareFalloutRequest(Execution execution){
+	public void prepareFalloutRequest(DelegateExecution execution){
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		utils.log("INFO", " *** prepareFalloutRequest *** ", isDebugEnabled)
 
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/UpdateNetworkInstance.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/UpdateNetworkInstance.groovy
index 05fde9d..33eb4f9 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/UpdateNetworkInstance.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/UpdateNetworkInstance.groovy
@@ -30,7 +30,7 @@
 import java.util.UUID;
 
 import org.camunda.bpm.engine.delegate.BpmnError
-import org.camunda.bpm.engine.runtime.Execution
+import org.camunda.bpm.engine.delegate.DelegateExecution
 import org.apache.commons.lang3.*
 import org.apache.commons.codec.binary.Base64;
 import org.springframework.web.util.UriUtils
@@ -44,7 +44,7 @@
 	ExceptionUtil exceptionUtil = new ExceptionUtil()
 	JsonUtils jsonUtil = new JsonUtils()
 
-	public InitializeProcessVariables(Execution execution){
+	public InitializeProcessVariables(DelegateExecution execution){
 
 		execution.setVariable(Prefix + "source", "")
 		execution.setVariable(Prefix + "Success", false)
@@ -67,7 +67,7 @@
 	 * This method is executed during the preProcessRequest task of the <class>UpdateNetworkInstance.bpmn</class> process.
 	 * @param execution
 	 */
-	public void preProcessRequest (Execution execution) {
+	public void preProcessRequest (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 
@@ -150,7 +150,7 @@
 		}
 	}
 
-	public void sendSyncResponse (Execution execution) {
+	public void sendSyncResponse (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 
@@ -175,7 +175,7 @@
 	}
 
 
-	public void getNetworkModelInfo (Execution execution) {
+	public void getNetworkModelInfo (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix", Prefix)
 
@@ -200,7 +200,7 @@
 	}
 
 
-	public void sendSyncError (Execution execution) {
+	public void sendSyncError (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix", Prefix)
 
@@ -222,7 +222,7 @@
 
 	}
 
-	public void prepareDBRequestError (Execution execution) {
+	public void prepareDBRequestError (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 
@@ -270,7 +270,7 @@
 
 	 }
 
-	public void prepareCompletion (Execution execution) {
+	public void prepareCompletion (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 
@@ -318,7 +318,7 @@
 	//     Post or Validate Response Section
 	// **************************************************
 
-	public void postProcessResponse (Execution execution) {
+	public void postProcessResponse (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix", Prefix)
 
@@ -352,7 +352,7 @@
 	//     Build Error Section
 	// *******************************
 
-	public void processRollbackData (Execution execution) {
+	public void processRollbackData (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix", Prefix)
 
@@ -373,7 +373,7 @@
 	}
 
 	// Prepare for FalloutHandler
-	public void buildErrorResponse (Execution execution) {
+	public void buildErrorResponse (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix", Prefix)
 
@@ -434,7 +434,7 @@
 
 	}
 
-	public void processJavaException(Execution execution){
+	public void processJavaException(DelegateExecution execution){
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		execution.setVariable("prefix",Prefix)
 		try{
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/UpdateVfModule.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/UpdateVfModule.groovy
index 4fddced..2acc550 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/UpdateVfModule.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/UpdateVfModule.groovy
@@ -27,7 +27,7 @@
 import java.io.Serializable;
 
 import org.camunda.bpm.engine.delegate.BpmnError
-import org.camunda.bpm.engine.runtime.Execution
+import org.camunda.bpm.engine.delegate.DelegateExecution
 import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil
 import org.openecomp.mso.bpmn.core.WorkflowException
 import org.openecomp.mso.bpmn.core.json.JsonUtils;
@@ -45,7 +45,7 @@
 	 *
 	 * @param execution The flow's execution instance.
 	 */
-	public void initProcessVariables(Execution execution) {
+	public void initProcessVariables(DelegateExecution execution) {
 		execution.setVariable('prefix', 'UPDVfMod_')
 		execution.setVariable('UPDVfMod_Request', null)
 		execution.setVariable('UPDVfMod_requestInfo', null)
@@ -66,7 +66,7 @@
 	 *
 	 * @param execution The flow's execution instance.
 	 */
-	public void preProcessRequest(Execution execution) {
+	public void preProcessRequest(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.preProcessRequest(' +
 			'execution=' + execution.getId() +
 			')'
@@ -107,7 +107,7 @@
 	 *
 	 * @param execution The flow's execution instance.
 	 */
-	public void sendSynchResponse(Execution execution) {
+	public void sendSynchResponse(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.sendSynchResponse(' +
 			'execution=' + execution.getId() +
 			')'
@@ -165,7 +165,7 @@
 	 *
 	 * @param execution The flow's execution instance.
 	 */
-	public void prepDoUpdateVfModule(Execution execution) {
+	public void prepDoUpdateVfModule(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.prepDoUpdateVfModule(' +
 			'execution=' + execution.getId() +
 			')'
@@ -188,7 +188,7 @@
 	 *
 	 * @param execution The flow's execution instance.
 	 */
-	public void prepUpdateInfraRequest(Execution execution) {
+	public void prepUpdateInfraRequest(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.prepUpdateInfraRequest(' +
 			'execution=' + execution.getId() +
 			')'
@@ -243,7 +243,7 @@
 	 * @param execution the execution
 	 * @param resultVar the execution variable in which the result will be stored
 	 */
-	public void completionHandlerPrep(Execution execution, String resultVar) {
+	public void completionHandlerPrep(DelegateExecution execution, String resultVar) {
 		def method = getClass().getSimpleName() + '.completionHandlerPrep(' +
 			'execution=' + execution.getId() +
 			', resultVar=' + resultVar +
@@ -282,7 +282,7 @@
 	 * @param execution the execution
 	 * @param resultVar the execution variable in which the result will be stored
 	 */
-	public void falloutHandlerPrep(Execution execution, String resultVar) {
+	public void falloutHandlerPrep(DelegateExecution execution, String resultVar) {
 		def method = getClass().getSimpleName() + '.falloutHandlerPrep(' +
 			'execution=' + execution.getId() +
 			', resultVar=' + resultVar +
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/UpdateVfModuleInfra.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/UpdateVfModuleInfra.groovy
index 6ac3526..60e8ca4 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/UpdateVfModuleInfra.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/UpdateVfModuleInfra.groovy
@@ -29,7 +29,7 @@
 import java.io.Serializable;
 import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil
 import org.camunda.bpm.engine.delegate.BpmnError
-import org.camunda.bpm.engine.runtime.Execution
+import org.camunda.bpm.engine.delegate.DelegateExecution
 import org.openecomp.mso.rest.APIResponse
 import org.openecomp.mso.rest.RESTClient
 import org.openecomp.mso.rest.RESTConfig
@@ -48,7 +48,7 @@
 	 *
 	 * @param execution The flow's execution instance.
 	 */
-	public void initProcessVariables(Execution execution) {
+	public void initProcessVariables(DelegateExecution execution) {
 		execution.setVariable('prefix', 'UPDVfModI_')
 		execution.setVariable('UPDVfModI_Request', null)
 		execution.setVariable('UPDVfModI_requestInfo', null)
@@ -69,7 +69,7 @@
 	 *
 	 * @param execution The flow's execution instance.
 	 */
-	public void preProcessRequest(Execution execution) {
+	public void preProcessRequest(DelegateExecution execution) {
 		
 		def method = getClass().getSimpleName() + '.preProcessRequest(' +
 		'execution=' + execution.getId() +
@@ -134,7 +134,7 @@
 			Map<String, String> userParamsMap = [:]
 			if (userParams != null) {
 				userParams.each { userParam ->
-					userParamsMap.put(userParam.name, userParam.value)
+					userParamsMap.put(userParam.name, userParam.value.toString())
 				}							
 			}		
 						
@@ -231,7 +231,7 @@
 	 *
 	 * @param execution The flow's execution instance.
 	 */
-	public void sendSynchResponse(Execution execution) {
+	public void sendSynchResponse(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.sendSynchResponse(' +
 			'execution=' + execution.getId() +
 			')'
@@ -277,7 +277,7 @@
 	 *
 	 * @param execution The flow's execution instance.
 	 */
-	public void prepDoUpdateVfModule(Execution execution) {
+	public void prepDoUpdateVfModule(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.prepDoUpdateVfModule(' +
 			'execution=' + execution.getId() +
 			')'
@@ -300,7 +300,7 @@
 	 *
 	 * @param execution The flow's execution instance.
 	 */
-	public void prepUpdateInfraRequest(Execution execution) {
+	public void prepUpdateInfraRequest(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.prepUpdateInfraRequest(' +
 			'execution=' + execution.getId() +
 			')'
@@ -354,7 +354,7 @@
 	 * @param execution the execution
 	 * @param resultVar the execution variable in which the result will be stored
 	 */
-	public void completionHandlerPrep(Execution execution, String resultVar) {
+	public void completionHandlerPrep(DelegateExecution execution, String resultVar) {
 		def method = getClass().getSimpleName() + '.completionHandlerPrep(' +
 			'execution=' + execution.getId() +
 			', resultVar=' + resultVar +
@@ -392,7 +392,7 @@
 	 * @param execution the execution
 	 * @param resultVar the execution variable in which the result will be stored
 	 */
-	public void falloutHandlerPrep(Execution execution, String resultVar) {
+	public void falloutHandlerPrep(DelegateExecution execution, String resultVar) {
 		def method = getClass().getSimpleName() + '.falloutHandlerPrep(' +
 			'execution=' + execution.getId() +
 			', resultVar=' + resultVar +
@@ -445,7 +445,7 @@
 	 * @param execution the execution
 	 * @return the validated request
 	 */
-	public String validateInfraRequest(Execution execution) {
+	public String validateInfraRequest(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.validateInfraRequest(' +
 			'execution=' + execution.getId() +
 			')'
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/UpdateVfModuleInfraV2.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/UpdateVfModuleInfraV2.groovy
index bdb89f0..18f36b8 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/UpdateVfModuleInfraV2.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/UpdateVfModuleInfraV2.groovy
@@ -26,13 +26,10 @@
 import groovy.util.Node
 import groovy.util.XmlParser;
 import groovy.xml.QName
-import inventory.aai.att.com.v10.GenericVnf
-import inventory.aai.att.com.v10.GenericVnfs
-import inventory.aai.att.com.v10.Pserver
 
 import org.camunda.bpm.engine.delegate.BpmnError
 import org.camunda.bpm.engine.impl.cmd.AbstractSetVariableCmd
-import org.camunda.bpm.engine.runtime.Execution
+import org.camunda.bpm.engine.delegate.DelegateExecution
 
 import java.io.Serializable;
 import java.util.List
@@ -76,7 +73,7 @@
 
 
 
-	public void initProcessVariables(Execution execution) {
+	public void initProcessVariables(DelegateExecution execution) {
 		execution.setVariable('prefix', 'UPDVfModI_')
 		execution.setVariable('UPDVfModI_Request', null)
 		execution.setVariable('UPDVfModI_requestInfo', null)
@@ -98,7 +95,7 @@
 	 *
 	 * @param execution The flow's execution instance.
 	 */
-	public void preProcessRequest(Execution execution) {
+	public void preProcessRequest(DelegateExecution execution) {
 		System.out.print("*****************************PreProcessRequest**************************")
 
 		def method = getClass().getSimpleName() + '.preProcessRequest(' +
@@ -164,7 +161,7 @@
 			Map<String, String> userParamsMap = [:]
 			if (userParams != null) {
 				userParams.each { userParam ->
-					userParamsMap.put(userParam.name, userParam.value)
+					userParamsMap.put(userParam.name, userParam.value.toString())
 				}
 			}
 
@@ -260,7 +257,7 @@
 	 *
 	 * @param execution The flow's execution instance.
 	 */
-	public void sendSynchResponse(Execution execution) {
+	public void sendSynchResponse(DelegateExecution execution) {
 		System.out.print("*****************************SendSynchResponse**************************")
 
 		def method = getClass().getSimpleName() + '.sendSynchResponse(' +
@@ -297,7 +294,7 @@
 	}
 
 	//check to see if the Pserver Flag is locked
-	public void checkPserverFlag(Execution execution) {
+	public void checkPserverFlag(DelegateExecution execution) {
 
 		System.out.println("*****************************CheckingPserverFlag*************************")
 		String vnfId = (String)execution.getVariable('vnfId')
@@ -307,7 +304,7 @@
 	}
 
 	//check to see if the VFFlag is locked
-	public void vfFlagCheck(Execution execution) {
+	public void vfFlagCheck(DelegateExecution execution) {
 
 		System.out.print("*****************************VfFlagCheck*************************")
 		String vnfId = (String)execution.getVariable('vnfId')
@@ -317,7 +314,7 @@
 
 	}
 	//lock the VF Flag
-	public void vfFlagSet(Execution execution) {
+	public void vfFlagSet(DelegateExecution execution) {
 
 		System.out.print("*****************************VfFlagSet*************************")
 		String vnfId = (String)execution.getVariable('vnfId')
@@ -328,7 +325,7 @@
 	}
 
 	//Lock AppC
-	public void lockAppC(Execution execution) {
+	public void lockAppC(DelegateExecution execution) {
 
 		System.out.print("*****************************lockAppC*************************")
 		def vfModuleId = ""
@@ -338,7 +335,7 @@
 
 	}
 	//run health check
-	public void healthCheckAppC(Execution execution) {
+	public void healthCheckAppC(DelegateExecution execution) {
 
 		System.out.print("*****************************healthCheckAppC*************************")
 		def vfModuleId = ""
@@ -347,14 +344,14 @@
 
 	}
 	//SDNO health diagnostic
-	public void healthDiagnosticSDNO(Execution execution) {
+	public void healthDiagnosticSDNO(DelegateExecution execution) {
 
 		System.out.print("*****************************healthDiagnosticSDNO is currently ignored*************************")
 		//SDNOValidatorImpl.healthDiagnostic("","");
 
 	}
 	//stop VF module controller
-	public void stopVfModuleController(Execution execution) {
+	public void stopVfModuleController(DelegateExecution execution) {
 
 		System.out.print("*****************************stopVfModuleController*************************")
 		def vfModuleId = ""
@@ -364,7 +361,7 @@
 
 	}
 
-	public void doUpdateVfModulePrep(Execution execution) {
+	public void doUpdateVfModulePrep(DelegateExecution execution) {
 
 		System.out.print("*****************************doUpdateVfModulePrep*************************")
 		def method = getClass().getSimpleName() + '.prepDoUpdateVfModule(' +
@@ -386,7 +383,7 @@
 
 	}
 
-	public void completionHandlerPrep(Execution execution,String resultVar) {
+	public void completionHandlerPrep(DelegateExecution execution,String resultVar) {
 
 		System.out.print("*****************************completionHandlerPrep*************************")
 		def method = getClass().getSimpleName() + '.completionHandlerPrep(' +
@@ -422,7 +419,7 @@
 
 	}
 
-	public void healthCheckController(Execution execution) {
+	public void healthCheckController(DelegateExecution execution) {
 
 		System.out.print("*****************************healthCheckController*************************")
 		def vfModuleId = ""
@@ -431,7 +428,7 @@
 
 	}
 
-	public void startVfModuleController(Execution execution) {
+	public void startVfModuleController(DelegateExecution execution) {
 
 		System.out.print("*****************************startVfModuleController*************************")
 		def vfModuleId = ""
@@ -440,7 +437,7 @@
 
 	}
 
-	public void vFFlagUnset(Execution execution) {
+	public void vFFlagUnset(DelegateExecution execution) {
 
 		System.out.print("*****************************vFFlagUnset*************************")
 		String vnfId = (String)execution.getVariable('vnfId')
@@ -451,7 +448,7 @@
 
 	}
 
-	public void unlockAppC(Execution execution) {
+	public void unlockAppC(DelegateExecution execution) {
 
 		System.out.print("*****************************unlockAppC*************************")
 		def vfModuleId = ""
@@ -460,7 +457,7 @@
 
 	}
 
-	public void postUpgradeHealthCheckController(Execution execution) {
+	public void postUpgradeHealthCheckController(DelegateExecution execution) {
 
 		System.out.print("*****************************postUpgradeHealthCheckController*************************")
 		def vfModuleId = ""
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/UpdateVfModuleVolume.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/UpdateVfModuleVolume.groovy
index 9dca8df..c68b04f 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/UpdateVfModuleVolume.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/UpdateVfModuleVolume.groovy
@@ -23,7 +23,7 @@
 import java.util.concurrent.ExecutionException;
 
 import org.camunda.bpm.engine.delegate.BpmnError
-import org.camunda.bpm.engine.runtime.Execution
+import org.camunda.bpm.engine.delegate.DelegateExecution
 import org.apache.commons.lang3.*
 import org.springframework.web.util.UriUtils
 import org.openecomp.mso.bpmn.common.scripts.AaiUtil
@@ -42,7 +42,7 @@
 	 *
 	 * @param execution The flow's execution instance.
 	 */
-	private void initProcessVariables(Execution execution) {
+	private void initProcessVariables(DelegateExecution execution) {
 		execution.setVariable('prefix', 'UPDVfModVol_')
 		execution.setVariable('UPDVfModVol_Request', null)
 		execution.setVariable('UPDVfModVol_requestInfo', null)
@@ -66,7 +66,7 @@
 	 * @param execution The flow's execution instance.
 	 */
 	@Override
-	public void preProcessRequest(Execution execution) {
+	public void preProcessRequest(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.preProcessRequest(' +
 			'execution=' + execution.getId() +
 			')'
@@ -108,7 +108,7 @@
 	 *
 	 * @param execution The flow's execution instance.
 	 */
-	public void sendSynchResponse(Execution execution) {
+	public void sendSynchResponse(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.sendSynchResponse(' +
 			'execution=' + execution.getId() +
 			')'
@@ -160,7 +160,7 @@
 	 *
 	 * @param execution The flow's execution instance.
 	 */
-	public void queryAAIForVolumeGroup(Execution execution) {
+	public void queryAAIForVolumeGroup(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.queryAAIForVolumeGroup(' +
 			'execution=' + execution.getId() +
 			')'
@@ -218,7 +218,7 @@
 	 *
 	 * @param execution The flow's execution instance.
 	 */
-	public void prepVnfAdapterRest(Execution execution) {
+	public void prepVnfAdapterRest(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.prepVnfAdapterRest(' +
 			'execution=' + execution.getId() +
 			')'
@@ -285,7 +285,7 @@
 	 *
 	 * @param execution The flow's execution instance.
 	 */
-	public void prepDbInfraDbRequest(Execution execution) {
+	public void prepDbInfraDbRequest(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.prepDbInfraDbRequest(' +
 			'execution=' + execution.getId() +
 			')'
@@ -329,7 +329,7 @@
 	 *
 	 * @param execution The flow's execution instance.
 	 */
-	public void prepCompletionHandlerRequest(Execution execution) {
+	public void prepCompletionHandlerRequest(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.prepCompletionHandlerRequest(' +
 			'execution=' + execution.getId() +
 			')'
@@ -366,7 +366,7 @@
 	 *
 	 * @param execution The flow's execution instance.
 	 */
-	public void prepFalloutHandler(Execution execution) {
+	public void prepFalloutHandler(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.prepFalloutHandler(' +
 			'execution=' + execution.getId() +
 			')'
@@ -416,7 +416,7 @@
 	 *
 	 * @param execution The flow's execution instance.
 	 */
-	public void handleTenantIdMismatch(Execution execution) {
+	public void handleTenantIdMismatch(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.handleTenantIdMismatch(' +
 			'execution=' + execution.getId() +
 			')'
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/UpdateVfModuleVolumeInfraV1.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/UpdateVfModuleVolumeInfraV1.groovy
index 3d5a31c..913046b 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/UpdateVfModuleVolumeInfraV1.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/UpdateVfModuleVolumeInfraV1.groovy
@@ -25,7 +25,7 @@
 import java.util.concurrent.ExecutionException;
 
 import org.camunda.bpm.engine.delegate.BpmnError
-import org.camunda.bpm.engine.runtime.Execution
+import org.camunda.bpm.engine.delegate.DelegateExecution
 import org.apache.commons.lang3.*
 import org.springframework.web.util.UriUtils
 import org.openecomp.mso.bpmn.common.scripts.AaiUtil;
@@ -44,7 +44,7 @@
 	 * 
 	 * @param execution The flow's execution instance.
 	 */
-	private void initProcessVariables(Execution execution) {
+	private void initProcessVariables(DelegateExecution execution) {
 		execution.setVariable('prefix', 'UPDVfModVol_')
 		execution.setVariable('UPDVfModVol_Request', null)
 		execution.setVariable('UPDVfModVol_requestInfo', null)
@@ -67,12 +67,12 @@
 	 * Perform initial processing, such as request validation, initialization of variables, etc.
 	 * * @param execution
 	 */
-	public void preProcessRequest (Execution execution) {
+	public void preProcessRequest (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
 		preProcessRequest(execution, isDebugEnabled)
 	}
 	
-	public void preProcessRequest(Execution execution, isDebugLogEnabled) {
+	public void preProcessRequest(DelegateExecution execution, isDebugLogEnabled) {
 
 		initProcessVariables(execution)
 		String jsonRequest = validateRequest(execution)
@@ -135,7 +135,7 @@
 	 * 
 	 * @param execution The flow's execution instance.
 	 */
-	public void sendSynchResponse(Execution execution, isDebugLogEnabled) {
+	public void sendSynchResponse(DelegateExecution execution, isDebugLogEnabled) {
 
 		def requestInfo = execution.getVariable('UPDVfModVol_requestInfo')
 		def requestId = execution.getVariable('UPDVfModVol_requestId')
@@ -185,7 +185,7 @@
 	 * Volume Group Id and Aic Cloud Region.
 	 * @param execution The flow's execution instance.
 	 */
-	public void queryAAIForVolumeGroup(Execution execution, isDebugLogEnabled) {
+	public void queryAAIForVolumeGroup(DelegateExecution execution, isDebugLogEnabled) {
 
 		def volumeGroupId = execution.getVariable('UPDVfModVol_volumeGroupId')
 		def aicCloudRegion = execution.getVariable('UPDVfModVol_aicCloudRegion')
@@ -244,7 +244,7 @@
 	 * @param execution
 	 * @param isDebugEnabled
 	 */
-	public void queryAAIForGenericVnf(Execution execution, isDebugEnabled) {
+	public void queryAAIForGenericVnf(DelegateExecution execution, isDebugEnabled) {
 		
 		def vnfId = execution.getVariable('vnfId')
 		
@@ -285,7 +285,7 @@
 	 * @param execution
 	 * @param isDebugLogEnabled
 	 */
-	public void queryAAIForVfModule(Execution execution, isDebugLogEnabled) {
+	public void queryAAIForVfModule(DelegateExecution execution, isDebugLogEnabled) {
 		
 			AaiUtil aaiUtil = new AaiUtil(this)
 			String queryAAIVfModuleRequest = execution.getVariable('UPDVfModVol_relatedVfModuleLink')
@@ -346,7 +346,7 @@
 	 *
 	 * @param execution The flow's execution instance.
 	 */
-	public void prepVnfAdapterRest(Execution execution, isDebugLogEnabled) {
+	public void prepVnfAdapterRest(DelegateExecution execution, isDebugLogEnabled) {
 		
 		def aicCloudRegion = execution.getVariable('UPDVfModVol_aicCloudRegion')
 		def tenantId = execution.getVariable('UPDVfModVol_tenantId')
@@ -433,7 +433,7 @@
 	 *
 	 * @param execution The flow's execution instance.
 	 */
-	public void prepDbInfraDbRequest(Execution execution, isDebugLogEnabled) {
+	public void prepDbInfraDbRequest(DelegateExecution execution, isDebugLogEnabled) {
 
 		def requestId = execution.getVariable('UPDVfModVol_requestId')
 		ExceptionUtil exceptionUtil = new ExceptionUtil();
@@ -462,7 +462,7 @@
 	 * Build a "CompletionHandler" request.
 	 * @param execution The flow's execution instance.
 	 */
-	public void prepCompletionHandlerRequest(Execution execution, requestId, action, source, isDebugLogEnabled) {
+	public void prepCompletionHandlerRequest(DelegateExecution execution, requestId, action, source, isDebugLogEnabled) {
 
 		String content = """
 		<aetgt:MsoCompletionRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
@@ -486,7 +486,7 @@
 	 * Build a "FalloutHandler" request.
 	 * @param execution The flow's execution instance.
 	 */
-	public void prepFalloutHandler(Execution execution, isDebugLogEnabled) {
+	public void prepFalloutHandler(DelegateExecution execution, isDebugLogEnabled) {
 		def requestId = execution.getVariable('UPDVfModVol_requestId')
 		def source = execution.getVariable('UPDVfModVol_source')
 		
@@ -527,7 +527,7 @@
 	 * AAI did not match the Tenant Id in the incoming request.
 	 * @param execution The flow's execution instance.
 	 */
-	public void handleTenantIdMismatch(Execution execution, isDebugLogEnabled) {
+	public void handleTenantIdMismatch(DelegateExecution execution, isDebugLogEnabled) {
 		
 		def volumeGroupId = execution.getVariable('UPDVfModVol_volumeGroupId')
 		def aicCloudRegion = execution.getVariable('UPDVfModVol_aicCloudRegion')
@@ -547,7 +547,7 @@
 	 * AAI did not match the model invariant ID in the incoming request.
 	 * @param execution The flow's execution instance.
 	 */
-	public void handlePersonaModelIdMismatch(Execution execution, isDebugLogEnabled) {
+	public void handlePersonaModelIdMismatch(DelegateExecution execution, isDebugLogEnabled) {
 		
 		def modelInvariantId = execution.getVariable('UPDVfModVol_modelInvariantId')
 		def personaModelId = execution.getVariable('UPDVfModVol_personaModelId')
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 4f574c4..0db7616 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
@@ -31,7 +31,7 @@
 import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil
 import org.camunda.bpm.engine.delegate.BpmnError
 import org.camunda.bpm.engine.impl.cmd.AbstractSetVariableCmd
-import org.camunda.bpm.engine.runtime.Execution
+import org.camunda.bpm.engine.delegate.DelegateExecution
 import org.openecomp.mso.rest.APIResponse
 import org.openecomp.mso.rest.RESTClient
 import org.openecomp.mso.rest.RESTConfig
@@ -46,25 +46,23 @@
 import org.openecomp.mso.bpmn.core.domain.VnfResource
 import org.openecomp.mso.client.aai.*
 
-import org.openecomp.mso.client.appc.ApplicationControllerClient;
-import org.openecomp.mso.client.appc.ApplicationControllerSupport;
-import org.openecomp.appc.client.lcm.model.Action;
-import org.openecomp.appc.client.lcm.model.ActionIdentifiers;
-import org.openecomp.appc.client.lcm.model.LockInput
-import org.openecomp.appc.client.lcm.model.UnlockInput
-import org.openecomp.appc.client.lcm.model.HealthCheckInput
-import org.openecomp.appc.client.lcm.model.StartInput
-import org.openecomp.appc.client.lcm.model.StopInput
-import org.openecomp.appc.client.lcm.model.Flags
-import org.openecomp.appc.client.lcm.model.Status
+import org.openecomp.mso.client.appc.ApplicationControllerOrchestrator
+import org.onap.appc.client.lcm.model.Action;
+import org.onap.appc.client.lcm.model.ActionIdentifiers;
+import org.onap.appc.client.lcm.model.LockInput
+import org.onap.appc.client.lcm.model.UnlockInput
+import org.onap.appc.client.lcm.model.HealthCheckInput
+import org.onap.appc.client.lcm.model.StartInput
+import org.onap.appc.client.lcm.model.StopInput
+import org.onap.appc.client.lcm.model.Flags
+import org.onap.appc.client.lcm.model.Status
 
 
 
-public class UpdateVnfInfra extends AbstractServiceTaskProcessor {
+public class UpdateVnfInfra extends VnfCmBase {
 
 	ExceptionUtil exceptionUtil = new ExceptionUtil()
-	JsonUtils jsonUtils = new JsonUtils()
-	ApplicationControllerClient appcClient = new ApplicationControllerClient()
+	JsonUtils jsonUtils = new JsonUtils()	
 	def prefix = "UPDVnfI_"
 
 	/**
@@ -72,25 +70,28 @@
 	 *
 	 * @param execution The flow's execution instance.
 	 */
-	public void initProcessVariables(Execution execution) {
+	public void initProcessVariables(DelegateExecution execution) {
 		execution.setVariable('prefix', 'UPDVnfI_')
-		execution.setVariable('UPDVnfI_Request', null)
-		execution.setVariable('UPDVnfI_requestInfo', null)
-		execution.setVariable('UPDVnfI_requestId', null)
-		execution.setVariable('UPDVnfI_source', null)
-		execution.setVariable('UPDVnfI_vnfInputs', null)
-		execution.setVariable('UPDVnfI_vnfId', null)		
-		execution.setVariable('UPDVnfI_tenantId', null)		
-		execution.setVariable('UPDVnfI_vnfParams', null)		
+		execution.setVariable('Request', null)		
+		execution.setVariable('source', null)
+		execution.setVariable('vnfInputs', null)			
+		execution.setVariable('tenantId', null)		
+		execution.setVariable('vnfParams', null)		
 		execution.setVariable('UpdateVnfSuccessIndicator', false)
-		execution.setVariable('UPDVnfI_serviceType', null)
-		execution.setVariable('UPDVnfI_nfRole', null)
-		execution.setVariable('UPDVnfI_currentActivity', 'UPDVnfI')
-		execution.setVariable('UPDVnfI_workStep', null)
-		execution.setVariable('UPDVnfI_failedActivity', null)
-		execution.setVariable('UPDVnfI_errorCode', "0")
-		execution.setVariable('UPDVnfI_errorText', null)
-		execution.setVariable('UPDVnfI_healthCheckIndex', 1)
+		execution.setVariable('serviceType', null)
+		execution.setVariable('nfRole', null)
+		execution.setVariable('currentActivity', 'UPDVnfI')
+		execution.setVariable('workStep', null)
+		execution.setVariable('failedActivity', null)
+		execution.setVariable('errorCode', "0")
+		execution.setVariable('errorText', null)
+		execution.setVariable('healthCheckIndex0', 0)
+		execution.setVariable('healthCheckIndex1', 1)
+		execution.setVariable("rollbackSetClosedLoopDisabledFlag", false)
+		execution.setVariable("rollbackVnfStop", false)
+		execution.setVariable("rollbackVnfLock", false)
+		execution.setVariable("rollbackQuiesceTraffic", false)
+		execution.setVariable("rollbackSetVnfInMaintenanceFlag", false)
 	}
 
 	/**
@@ -98,7 +99,7 @@
 	 *
 	 * @param execution The flow's execution instance.
 	 */
-	public void preProcessRequest(Execution execution) {
+	public void preProcessRequest(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.preProcessRequest(' +
 		'execution=' + execution.getId() +
 		')'
@@ -116,13 +117,14 @@
 			def jsonOutput = new JsonOutput()
 			Map reqMap = jsonSlurper.parseText(incomingRequest)
 			utils.log("DEBUG", " Request is in JSON format.", isDebugLogEnabled)
-
-			def serviceInstanceId = execution.getVariable('serviceInstanceId')
-			def vnfId = execution.getVariable('vnfId')
 			
-			execution.setVariable(prefix + 'serviceInstanceId', serviceInstanceId)
-			execution.setVariable(prefix + 'vnfId', vnfId)
-			execution.setVariable("isVidRequest", "true")			
+			execution.setVariable("isVidRequest", "true")
+			execution.setVariable('serviceType', 'Mobility')
+			execution.setVariable('actionLock', Action.Lock)
+			execution.setVariable('actionUnlock', Action.Unlock)
+			execution.setVariable('actionHealthCheck', Action.HealthCheck)
+			execution.setVariable('actionStart', Action.Start)
+			execution.setVariable('actionStop', Action.Stop)
 			
 			def asdcServiceModelVersion = ''
 			def serviceModelInfo = null
@@ -143,61 +145,61 @@
 				}
 			}		
 			
-			execution.setVariable(prefix + 'asdcServiceModelVersion', asdcServiceModelVersion)
-			execution.setVariable(prefix + 'serviceModelInfo', serviceModelInfo)
+			execution.setVariable('asdcServiceModelVersion', asdcServiceModelVersion)
+			execution.setVariable('serviceModelInfo', serviceModelInfo)
 			def vnfModelInfo = jsonOutput.toJson(reqMap.requestDetails?.modelInfo)
-			execution.setVariable(prefix + 'vnfModelInfo', vnfModelInfo)
+			execution.setVariable('vnfModelInfo', vnfModelInfo)
 			def vnfModelInvariantUuid = jsonUtils.getJsonValue(vnfModelInfo, "modelInvariantUuid")
-			execution.setVariable(prefix + 'vnfModelInvariantUuid', vnfModelInvariantUuid)	
+			execution.setVariable('vnfModelInvariantUuid', vnfModelInvariantUuid)	
 			logDebug("vnfModelInvariantUuid: " + vnfModelInvariantUuid, isDebugLogEnabled)	
 			
 			def vnfType = execution.getVariable('vnfType')
-			execution.setVariable(prefix + 'vnfType', vnfType)
+			execution.setVariable('vnfType', vnfType)
 			
 			def userParams = reqMap.requestDetails?.requestParameters?.userParams					
 			
 			Map<String, String> userParamsMap = [:]
 			if (userParams != null) {
 				userParams.each { userParam ->
-					userParamsMap.put(userParam.name, userParam.value)
+					userParamsMap.put(userParam.name, userParam.value.toString())
 				}							
 			}		
 						
 			utils.log("DEBUG", 'Processed user params: ' + userParamsMap, isDebugLogEnabled)		
 			
-			execution.setVariable(prefix + 'vfModuleInputParams', userParamsMap)			
+			execution.setVariable('vfModuleInputParams', userParamsMap)			
 						
 			def requestId = execution.getVariable("mso-request-id")
-			execution.setVariable(prefix + 'requestId', requestId)
+			execution.setVariable('requestId', requestId)
 			execution.setVariable('msoRequestId', requestId)
 			
 			
 			def vnfName = reqMap.requestDetails?.requestInfo?.instanceName ?: null
-			execution.setVariable(prefix + 'vnfName', vnfName)
+			execution.setVariable('vnfName', vnfName)
 			
 			def requestorId = reqMap.requestDetails?.requestInfo?.requestorId ?: null
-			execution.setVariable(prefix + 'requestorId', requestorId)
+			execution.setVariable('requestorId', requestorId)
 			
 			def usePreload = reqMap.requestDetails?.requestParameters?.usePreload
-			execution.setVariable(prefix + 'usePreload', usePreload)
+			execution.setVariable('usePreload', usePreload)
 			
 			def cloudConfiguration = reqMap.requestDetails?.cloudConfiguration
 			def lcpCloudRegionId	= cloudConfiguration.lcpCloudRegionId
-			execution.setVariable(prefix + 'lcpCloudRegionId', lcpCloudRegionId)
+			execution.setVariable('lcpCloudRegionId', lcpCloudRegionId)
 			def tenantId = cloudConfiguration.tenantId
-			execution.setVariable(prefix + 'tenantId', tenantId)
+			execution.setVariable('tenantId', tenantId)
 			
 			def globalSubscriberId = reqMap.requestDetails?.subscriberInfo?.globalSubscriberId ?: ''
-			execution.setVariable(prefix + 'globalSubscriberId', globalSubscriberId)
+			execution.setVariable('globalSubscriberId', globalSubscriberId)
 			
-			execution.setVariable(prefix + 'sdncVersion', '1702')
+			execution.setVariable('sdncVersion', '1702')
 
 			execution.setVariable("UpdateVnfInfraSuccessIndicator", false)
 						
 			execution.setVariable("isDebugLogEnabled", isDebugLogEnabled)			
 			
 			def source = reqMap.requestDetails?.requestInfo?.source
-			execution.setVariable(prefix + "source", source)
+			execution.setVariable("source", source)
 			
 			//For Completion Handler & Fallout Handler
 			String requestInfo =
@@ -207,9 +209,9 @@
 					<source>${source}</source>
 				   </request-info>"""
 			
-			execution.setVariable(prefix + "requestInfo", requestInfo)			
+			execution.setVariable("requestInfo", requestInfo)			
 			
-			logDebug('RequestInfo: ' + execution.getVariable(prefix + "requestInfo"), isDebugLogEnabled)		
+			logDebug('RequestInfo: ' + execution.getVariable("requestInfo"), isDebugLogEnabled)		
 			
 			logDebug('Exited ' + method, isDebugLogEnabled)
 
@@ -231,7 +233,7 @@
 	 *
 	 * @param execution The flow's execution instance.
 	 */
-	public void sendSynchResponse(Execution execution) {
+	public void sendSynchResponse(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.sendSynchResponse(' +
 			'execution=' + execution.getId() +
 			')'
@@ -240,9 +242,9 @@
 
 
 		try {
-			def requestInfo = execution.getVariable('UPDVnfI_requestInfo')
-			def requestId = execution.getVariable('UPDVnfI_requestId')
-			def source = execution.getVariable('UPDVnfI_source')
+			def requestInfo = execution.getVariable('requestInfo')
+			def requestId = execution.getVariable('requestId')
+			def source = execution.getVariable('source')
 			def progress = getNodeTextForce(requestInfo, 'progress')
 			if (progress.isEmpty()) {
 				progress = '0'
@@ -275,7 +277,7 @@
 	 *
 	 * @param execution The flow's execution instance.
 	 */
-	public void getVnfResourceDecomposition(Execution execution) {
+	public void getVnfResourceDecomposition(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.getVnfResourceDecomposition(' +
 			'execution=' + execution.getId() +
 			')'
@@ -284,7 +286,7 @@
 
 		try {
 			ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition")
-			String vnfModelInvariantUuid = execution.getVariable(prefix + 'vnfModelInvariantUuid')
+			String vnfModelInvariantUuid = execution.getVariable('vnfModelInvariantUuid')
 			logDebug("vnfModelInvariantUuid: " + vnfModelInvariantUuid, isDebugLogEnabled)
 			List<VnfResource> vnfResources = serviceDecomposition.getServiceVnfs()
 			
@@ -295,9 +297,9 @@
 				
 				if (vnfModelInvariantUuid.equals(modelInvariantUuidFromDecomposition)) {
 					VnfResource vnfResourceDecomposition = vnfResources[i]
-					execution.setVariable(prefix + 'vnfResourceDecomposition', vnfResourceDecomposition)
+					execution.setVariable('vnfResourceDecomposition', vnfResourceDecomposition)
 					def nfRole = vnfResourceDecomposition.getNfRole()					
-					execution.setVariable(prefix + 'nfRole', nfRole)
+					execution.setVariable('nfRole', nfRole)
 					logDebug("vnfResourceDecomposition: " + vnfResourceDecomposition.toJsonString(), isDebugLogEnabled)					
 					break
 				}
@@ -322,14 +324,14 @@
 	 *
 	 * @param execution The flow's execution instance.
 	 */
-	public void checkIfVnfInMaintInAAI(Execution execution) {
+	public void checkIfVnfInMaintInAAI(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.checkIfVnfInMaintInAAI(' +
 			'execution=' + execution.getId() +
 			')'
 		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
-		execution.setVariable(prefix + 'errorCode', "0")
-		execution.setVariable(prefix + "workStep", "checkIfVnfInMaintInAAI")
-		execution.setVariable(prefix + "failedActivity", "AAI")
+		execution.setVariable('errorCode', "0")
+		execution.setVariable("workStep", "checkIfVnfInMaintInAAI")
+		execution.setVariable("failedActivity", "AAI")
 		logDebug('Entered ' + method, isDebugLogEnabled)
 
 		try {
@@ -340,15 +342,21 @@
 			def vnfId = execution.getVariable("vnfId")
 			boolean isInMaint = aaiValidator.isVNFLocked(vnfId, transactionLoggingUuid)
 			logDebug("isInMaint result: " + isInMaint, isDebugLogEnabled)
-			execution.setVariable(prefix + 'isVnfInMaintenance', isInMaint)
+			execution.setVariable('isVnfInMaintenance', isInMaint)
+			
+			if (isInMaint) {
+				execution.setVariable("errorCode", "1003")
+				execution.setVariable("errorText", "VNF is in maintenance in A&AI")
+			}
+
 
 			logDebug('Exited ' + method, isDebugLogEnabled)
 		} catch (BpmnError e) {
 			throw e;
 		} catch (Exception e) {
 			logError('Caught exception in ' + method, e)			
-			execution.setVariable(prefix + "errorCode", "1002")
-			execution.setVariable(prefix + "errorText", e.getMessage())
+			execution.setVariable("errorCode", "1002")
+			execution.setVariable("errorText", e.getMessage())
 			//exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in checkIfVnfInMaintInAAI(): ' + e.getMessage())
 		}
 	}
@@ -360,15 +368,15 @@
 	 *
 	 * @param execution The flow's execution instance.
 	 */
-	public void checkIfPserversInMaintInAAI(Execution execution) {
+	public void checkIfPserversInMaintInAAI(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.checkIfPserversInMaintInAAI(' +
 			'execution=' + execution.getId() +
 			')'
 		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
-		execution.setVariable(prefix + 'errorCode', "0")
+		execution.setVariable('errorCode', "0")
 		logDebug('Entered ' + method, isDebugLogEnabled)
-		execution.setVariable(prefix + "workStep", "checkIfPserversInMaintInAAI")
-		execution.setVariable(prefix + "failedActivity", "AAI")
+		execution.setVariable("workStep", "checkIfPserversInMaintInAAI")
+		execution.setVariable("failedActivity", "AAI")
 
 		try {
 			def transactionLoggingUuid = UUID.randomUUID().toString()
@@ -378,15 +386,20 @@
 			def vnfId = execution.getVariable("vnfId")			
 			boolean areLocked = aaiValidator.isPhysicalServerLocked(vnfId, transactionLoggingUuid)
 			logDebug("areLocked result: " + areLocked, isDebugLogEnabled)
-			execution.setVariable(prefix + 'arePserversLocked', areLocked)
+			execution.setVariable('arePserversLocked', areLocked)
+			
+			if (areLocked) {
+				execution.setVariable("errorCode", "1003")
+				execution.setVariable("errorText", "pServers are locked in A&AI")
+			}
 
 			logDebug('Exited ' + method, isDebugLogEnabled)
 		} catch (BpmnError e) {
 			throw e;
 		} catch (Exception e) {
 			logError('Caught exception in ' + method, e)
-			execution.setVariable(prefix + "errorCode", "1002")
-			execution.setVariable(prefix + "errorText", e.getMessage())
+			execution.setVariable("errorCode", "1002")
+			execution.setVariable("errorText", e.getMessage())
 			//exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in checkIfPserversInMaintInAAI(): ' + e.getMessage())
 		}
 	}
@@ -398,20 +411,20 @@
 	 * @param execution The flow's execution instance.
 	 * @param inMaint The boolean value of the flag to set
 	 */
-	public void setVnfInMaintFlagInAAI(Execution execution, boolean inMaint) {
+	public void setVnfInMaintFlagInAAI(DelegateExecution execution, boolean inMaint) {
 		def method = getClass().getSimpleName() + '.setVnfInMaintFlagInAAI(' +
 			'execution=' + execution.getId() +
 			')'
 		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
-		execution.setVariable(prefix + 'errorCode', "0")
+		execution.setVariable('errorCode', "0")
 		logDebug('Entered ' + method, isDebugLogEnabled)
 		if (inMaint) {
-			execution.setVariable(prefix + "workStep", "setVnfInMaintFlagInAAI")
+			execution.setVariable("workStep", "setVnfInMaintFlagInAAI")
 		}
 		else {
-			execution.setVariable(prefix + "workStep", "unsetVnfInMaintFlagInAAI")
+			execution.setVariable("workStep", "unsetVnfInMaintFlagInAAI")
 		}
-		execution.setVariable(prefix + "failedActivity", "AAI")
+		execution.setVariable("failedActivity", "AAI")
 
 		try {
 			def transactionLoggingUuid = UUID.randomUUID().toString()
@@ -421,6 +434,7 @@
 			def vnfId = execution.getVariable("vnfId")
 			if (inMaint) {
 				aaiUpdator.updateVnfToLocked(vnfId, transactionLoggingUuid)
+				execution.setVariable("rollbackSetVnfInMaintenanceFlag", true)
 			}
 			else {
 				aaiUpdator.updateVnfToUnLocked(vnfId, transactionLoggingUuid)
@@ -431,246 +445,53 @@
 			throw e;
 		} catch (Exception e) {
 			logError('Caught exception in ' + method, e)
-			execution.setVariable(prefix + "errorCode", "1002")
-			execution.setVariable(prefix + "errorText", e.getMessage())
+			execution.setVariable("errorCode", "1002")
+			execution.setVariable("errorText", e.getMessage())
 			//exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in setVnfInMaintFlagInAAI(): ' + e.getMessage())
 		}
 	}
 	
-	/**
-	 * Call APP-C client to execute specified APP-C command for this VNF.
-	 *
-	 *
-	 * @param execution The flow's execution instance.
-	 * @param action The action to take in APP-C.
-	 */
-	public void runAppcCommand(Execution execution, Action action) {
-		def method = getClass().getSimpleName() + '.runAppcCommand(' +
-			'execution=' + execution.getId() +
-			')'
-		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
-		execution.setVariable(prefix + 'errorCode', "0")
-		logDebug('Entered ' + method, isDebugLogEnabled)
-		
-		try {
-			logDebug("Running APP-C action: " + action.toString(), isDebugLogEnabled)
-			String vnfId = execution.getVariable('vnfId')
-			String msoRequestId = execution.getVariable(prefix + 'requestId')
-			execution.setVariable('msoRequestId', msoRequestId)			
-			execution.setVariable(prefix + "failedActivity", "APP-C")			
-				
-			ApplicationControllerSupport support = new ApplicationControllerSupport()			
-			appcClient.appCSupport=support			
-			org.springframework.test.util.ReflectionTestUtils.setField(support, "lcmModelPackage", "org.openecomp.appc.client.lcm.model");			
-			Flags flags = new Flags();			
-			ActionIdentifiers actionIdentifiers = new ActionIdentifiers();			
-			actionIdentifiers.setVnfId(vnfId);
-			Status appcStatus
-			switch(action) {
-				case Action.Lock:
-					execution.setVariable(prefix + 'workStep', "LockVNF")
-					appcStatus = appcClient.runCommand(Action.Lock,actionIdentifiers,flags,null,msoRequestId)					
-					break
-				case Action.Unlock:
-					execution.setVariable(prefix + 'workStep', "UnlockVNF")
-					appcStatus = appcClient.runCommand(Action.Unlock,actionIdentifiers,flags,null,msoRequestId)					
-					break
-				case Action.HealthCheck:
-					def healthCheckIndex = execution.getVariable(prefix + 'healthCheckIndex')
-					execution.setVariable(prefix + 'workStep', "HealthCheckVNF" + healthCheckIndex)
-					execution.setVariable(prefix + 'healthCheckIndex', healthCheckIndex + 1)
-					appcStatus = appcClient.runCommand(Action.HealthCheck,actionIdentifiers,flags,null,msoRequestId)					
-					break
-				case Action.Start:
-					execution.setVariable(prefix + 'workStep', "StartVNF")
-					appcStatus = appcClient.runCommand(Action.Start,actionIdentifiers,flags,null,msoRequestId)					
-					break
-				case Action.Stop:
-					execution.setVariable(prefix + 'workStep', "StopVNF")
-					appcStatus = appcClient.runCommand(Action.Stop,actionIdentifiers,flags,null,msoRequestId)					
-					break
-				default:
-					break
-			}
-			logDebug("Completed AppC request", isDebugLogEnabled)			
-			int appcCode = appcStatus.getCode()
-			logDebug("AppC status code is: " + appcCode, isDebugLogEnabled)
-			logDebug("AppC status message is: " + appcStatus.getMessage(), isDebugLogEnabled)
-			if (support.getCategoryOf(appcStatus) == ApplicationControllerSupport.StatusCategory.ERROR) {
-				execution.setVariable(prefix + "errorCode", Integer.toString(appcCode))
-				execution.setVariable(prefix + "errorText", appcStatus.getMessage())				
-			}		
-			logDebug('Exited ' + method, isDebugLogEnabled)
-		} catch (BpmnError e) {
-			logError('Caught exception in ' + method, e)
-			execution.setVariable(prefix + "errorCode", "1002")
-			execution.setVariable(prefix + "errorText", e.getMessage())
-			//throw e;
-		} catch (java.lang.NoSuchMethodError e) {
-			logError('Caught exception in ' + method, e)
-			execution.setVariable(prefix + "errorCode", "1002")
-			execution.setVariable(prefix + "errorText", e.getMessage())
-			//throw e;
-		} catch (Exception e) {
-			logError('Caught exception in ' + method, e)
-			execution.setVariable(prefix + "errorCode", "1002")
-			execution.setVariable(prefix + "errorText", e.getMessage())
-			
-			//exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in ' + method + ': ' + e.getMessage())
-		}
-	}
-
-
-
 	
 
 	/**
-	 * Builds a "CompletionHandler" request and stores it in the specified execution variable.
-	 *
-	 * @param execution the execution
-	 * @param resultVar the execution variable in which the result will be stored
-	 */
-	public void completionHandlerPrep(Execution execution, String resultVar) {
-		def method = getClass().getSimpleName() + '.completionHandlerPrep(' +
-			'execution=' + execution.getId() +
-			', resultVar=' + resultVar +
-			')'
-		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
-		logDebug('Entered ' + method, isDebugLogEnabled)		
-		
-
-		try {
-			appcClient.shutdownclient()
-			def requestInfo = getVariable(execution, 'UPDVnfI_requestInfo')
-
-			String content = """
-				<sdncadapterworkflow:MsoCompletionRequest xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1"
-						xmlns:reqtype="http://org.openecomp/mso/request/types/v1">
-					${requestInfo}
-					<sdncadapterworkflow:mso-bpel-name>MSO_ACTIVATE_BPEL</sdncadapterworkflow:mso-bpel-name>
-				</sdncadapterworkflow:MsoCompletionRequest>
-			"""
-
-			content = utils.formatXml(content)
-			logDebug(resultVar + ' = ' + System.lineSeparator() + content, isDebugLogEnabled)
-			execution.setVariable(resultVar, content)
-
-			logDebug('Exited ' + method, isDebugLogEnabled)
-		} catch (BpmnError e) {
-			throw e;
-		} catch (Exception e) {
-			logError('Caught exception in ' + method, e)
-			exceptionUtil.buildAndThrowWorkflowException(execution, 2000, 'Internal Error')
-		}
-	}
-	
-	/**
 	* Prepare DoUpdateVnfAndModules call.
 	*
 	*
 	* @param execution The flow's execution instance.
 	*/
-   public void prepDoUpdateVnfAndModules(Execution execution) {
+   public void prepDoUpdateVnfAndModules(DelegateExecution execution) {
 	   def method = getClass().getSimpleName() + '.prepDoUpdateVnfAndModules(' +
 		   'execution=' + execution.getId() +
 		   ')'
 	   def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
-	   execution.setVariable(prefix + 'errorCode', "0")
+	   execution.setVariable('errorCode', "0")
 	   logDebug('Entered ' + method, isDebugLogEnabled)
-	   execution.setVariable(prefix + "workStep", "doUpdateVnfAndModules")
-	   execution.setVariable(prefix + "failedActivity", "MSO Update VNF")
+	   execution.setVariable("workStep", "doUpdateVnfAndModules")
+	   execution.setVariable("failedActivity", "MSO Update VNF")
 	   logDebug('Exited ' + method, isDebugLogEnabled)
 	   
    }
 	
-	/**
-	 * Builds a "FalloutHandler" request and stores it in the specified execution variable.
-	 *
-	 * @param execution the execution
-	 * @param resultVar the execution variable in which the result will be stored
-	 */
-	public void falloutHandlerPrep(Execution execution, String resultVar) {
-		def method = getClass().getSimpleName() + '.falloutHandlerPrep(' +
-			'execution=' + execution.getId() +
-			', resultVar=' + resultVar +
-			')'
-		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
-		logDebug('Entered ' + method, isDebugLogEnabled)
-
-		try {
-			def prefix = execution.getVariable('prefix')
-			def request = getVariable(execution, prefix+'Request')
-			def requestInformation = execution.getVariable(prefix + "requestInfo")		
-			
-			appcClient.shutdownclient()
-
-			def WorkflowException workflowException = execution.getVariable("WorkflowException")
-			def errorResponseCode = workflowException.getErrorCode()
-			def errorResponseMsg = workflowException.getErrorMessage()
-			def encErrorResponseMsg = ""
-			if (errorResponseMsg != null) {
-				encErrorResponseMsg = errorResponseMsg.replace("&", "&amp;").replace("<", "&lt;").replace(">", "&gt;")
-			}
-
-			String content = """
-				<sdncadapterworkflow:FalloutHandlerRequest xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1"
-						xmlns:reqtype="http://org.openecomp/mso/request/types/v1"
-						xmlns:msoservtypes="http://org.openecomp/mso/request/types/v1"
-						xmlns:structuredtypes="http://org.openecomp/mso/structured/types/v1">
-					${requestInformation}
-					<sdncadapterworkflow:WorkflowException>
-						<sdncadapterworkflow:ErrorMessage>${encErrorResponseMsg}</sdncadapterworkflow:ErrorMessage>
-						<sdncadapterworkflow:ErrorCode>${errorResponseCode}</sdncadapterworkflow:ErrorCode>
-					</sdncadapterworkflow:WorkflowException>
-				</sdncadapterworkflow:FalloutHandlerRequest>
-			"""
-			content = utils.formatXml(content)
-			logDebug(resultVar + ' = ' + System.lineSeparator() + content, isDebugLogEnabled)
-			execution.setVariable(resultVar, content)
-
-			logDebug('Exited ' + method, isDebugLogEnabled)
-		} catch (BpmnError e) {
-			throw e;
-		} catch (Exception e) {
-			logError('Caught exception in ' + method, e)
-			exceptionUtil.buildWorkflowException(execution, 2000, 'Internal Error')
-		}
-	}
 	
 	/**
 	 * Handle Abort disposition from RainyDayHandler
 	 *
 	 * @param execution The flow's execution instance.	 
 	 */
-	public void abortProcessing(Execution execution) {
+	public void abortProcessing(DelegateExecution execution) {
 		def method = getClass().getSimpleName() + '.abortProcessing(' +
 			'execution=' + execution.getId() +
 			')'
 		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
 		logDebug('Entered ' + method, isDebugLogEnabled)
 		
-		def errorText = execution.getVariable(prefix + "errorText")
-		def errorCode = execution.getVariable(prefix + "errorCode")
+		def errorText = execution.getVariable("errorText")
+		def errorCode = execution.getVariable("errorCode")
 		
 		exceptionUtil.buildAndThrowWorkflowException(execution, errorCode as Integer, errorText)
 	}
 	
-	/**
-	 * Handle Manual disposition from RainyDayHandler
-	 *
-	 * @param execution The flow's execution instance. 
-	 */
-	public void manualProcessing(Execution execution) {
-		def method = getClass().getSimpleName() + '.manualProcessing(' +
-			'execution=' + execution.getId() +
-			')'
-		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
-		logDebug('Entered ' + method, isDebugLogEnabled)
-		
-		def taskId = execution.getVariable("UPDVnfI_taskId")		
-		
-		exceptionUtil.buildAndThrowWorkflowException(execution, 2000, "Processing halted - manual task created: " + taskId)
-	}
+	
 
 	
 }
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
new file mode 100644
index 0000000..c588d38
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/VnfCmBase.groovy
@@ -0,0 +1,806 @@
+/*-
+ * ============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.bpmn.infrastructure.scripts
+
+import groovy.json.JsonOutput
+import groovy.json.JsonSlurper
+import groovy.util.Node
+import groovy.util.XmlParser;
+import groovy.xml.QName
+
+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;
+import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.impl.cmd.AbstractSetVariableCmd
+import org.camunda.bpm.engine.delegate.DelegateExecution
+import org.openecomp.mso.rest.APIResponse
+import org.openecomp.mso.rest.RESTClient
+import org.openecomp.mso.rest.RESTConfig
+import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor;
+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
+import org.openecomp.mso.bpmn.core.domain.VnfResource
+import org.openecomp.mso.client.aai.*
+
+import org.openecomp.mso.client.appc.ApplicationControllerClient;
+import org.openecomp.mso.client.appc.ApplicationControllerSupport;
+import org.openecomp.mso.client.aai.entities.AAIResultWrapper
+import org.openecomp.mso.client.aai.entities.Relationships
+import org.openecomp.mso.client.aai.entities.uri.AAIResourceUri
+import org.openecomp.mso.client.aai.entities.uri.AAIUri
+import org.openecomp.mso.client.aai.entities.uri.AAIUriFactory
+import org.onap.appc.client.lcm.model.Action;
+import org.onap.appc.client.lcm.model.ActionIdentifiers;
+import org.onap.appc.client.lcm.model.LockInput
+import org.onap.appc.client.lcm.model.UnlockInput
+import org.onap.appc.client.lcm.model.HealthCheckInput
+import org.onap.appc.client.lcm.model.StartInput
+import org.onap.appc.client.lcm.model.StopInput
+import org.onap.appc.client.lcm.model.Flags
+import org.onap.appc.client.lcm.model.Status
+
+
+
+public abstract class VnfCmBase extends AbstractServiceTaskProcessor {
+
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+	JsonUtils jsonUtils = new JsonUtils()	
+	def prefix = "VnfIPU_"
+
+	/**
+	 * Initialize the flow's variables.
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	
+	/**
+	 * Prepare and send the sychronous response for this flow.
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void sendSynchResponse(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.sendSynchResponse(' +
+			'execution=' + execution.getId() +
+			')'
+		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+		logDebug('Entered ' + method, isDebugLogEnabled)
+
+
+		try {
+			def requestInfo = execution.getVariable('requestInfo')
+			def requestId = execution.getVariable('requestId')
+			def source = execution.getVariable('source')
+			def progress = getNodeTextForce(requestInfo, 'progress')
+			if (progress.isEmpty()) {
+				progress = '0'
+			}
+			def startTime = getNodeTextForce(requestInfo, 'start-time')
+			if (startTime.isEmpty()) {
+				startTime = System.currentTimeMillis()
+			}
+
+			// RESTResponse (for API Handler (APIH) Reply Task)
+			def vnfId = execution.getVariable("vnfId")
+			String synchResponse = """{"requestReferences":{"instanceId":"${vnfId}","requestId":"${requestId}"}}""".trim()
+
+			sendWorkflowResponse(execution, 200, synchResponse)
+
+			logDebug('Exited ' + method, isDebugLogEnabled)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			logError('Caught exception in ' + method, e)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in sendResponse(): ' + e.getMessage())
+		}
+	}
+	
+	
+
+	/**
+	 * Get VnfResource decomposition object for this VNF.
+	 *	
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void getVnfResourceDecomposition(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.getVnfResourceDecomposition(' +
+			'execution=' + execution.getId() +
+			')'
+		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+		logDebug('Entered ' + method, isDebugLogEnabled)
+
+		try {
+			ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition")
+			String vnfModelInvariantUuid = execution.getVariable('vnfModelInvariantUuid')
+			logDebug("vnfModelInvariantUuid: " + vnfModelInvariantUuid, isDebugLogEnabled)
+			List<VnfResource> vnfResources = serviceDecomposition.getServiceVnfs()
+			
+			for (i in 0..vnfResources.size()-1) {
+				ModelInfo modelInfo = vnfResources[i].getModelInfo()
+				String modelInvariantUuidFromDecomposition = modelInfo.getModelInvariantUuid()
+				logDebug("modelInvariantUuidFromDecomposition: " + modelInvariantUuidFromDecomposition, isDebugLogEnabled)
+				
+				if (vnfModelInvariantUuid.equals(modelInvariantUuidFromDecomposition)) {
+					VnfResource vnfResourceDecomposition = vnfResources[i]
+					execution.setVariable('vnfResourceDecomposition', vnfResourceDecomposition)
+					def nfRole = vnfResourceDecomposition.getNfRole()					
+					execution.setVariable('nfRole', nfRole)
+					logDebug("vnfResourceDecomposition: " + vnfResourceDecomposition.toJsonString(), isDebugLogEnabled)					
+					break
+				}
+				else {
+					//exception!
+				}
+				
+			}
+
+			logDebug('Exited ' + method, isDebugLogEnabled)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			logError('Caught exception in ' + method, e)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in getVnfResourceDecomposition(): ' + e.getMessage())
+		}
+	}
+	
+	/**
+	 * Check if this VNF is already in maintenance in A&AI.
+	 *
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void checkIfVnfInMaintInAAI(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.checkIfVnfInMaintInAAI(' +
+			'execution=' + execution.getId() +
+			')'
+		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+		execution.setVariable('errorCode', "0")
+		execution.setVariable("workStep", "checkIfVnfInMaintInAAI")
+		execution.setVariable("failedActivity", "AAI")
+		logDebug('Entered ' + method, isDebugLogEnabled)
+
+		try {
+			def transactionLoggingUuid = UUID.randomUUID().toString()
+			AAIRestClientImpl client = new AAIRestClientImpl()
+			AAIValidatorImpl aaiValidator = new AAIValidatorImpl()
+			aaiValidator.setClient(client)
+			def vnfId = execution.getVariable("vnfId")
+			boolean isInMaint = aaiValidator.isVNFLocked(vnfId, transactionLoggingUuid)
+			logDebug("isInMaint result: " + isInMaint, isDebugLogEnabled)
+			execution.setVariable('isVnfInMaintenance', isInMaint)
+			
+			if (isInMaint) {
+				execution.setVariable("errorCode", "1003")
+				execution.setVariable("errorText", "VNF is in maintenance in A&AI")
+			}
+
+
+			logDebug('Exited ' + method, isDebugLogEnabled)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			logError('Caught exception in ' + method, e)			
+			execution.setVariable("errorCode", "1002")
+			execution.setVariable("errorText", e.getMessage())
+			//exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in checkIfVnfInMaintInAAI(): ' + e.getMessage())
+		}
+	}
+	
+	/**
+	 * Get VNF info from A&AI.
+	 *
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void queryAAIForVnf(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.queryAAIForVnf(' +
+			'execution=' + execution.getId() +
+			')'
+		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+		logDebug('Entered ' + method, isDebugLogEnabled)
+
+		try {
+			def transactionLoggingUuid = UUID.randomUUID().toString()
+			def vnfId = execution.getVariable("vnfId")
+			logDebug("vnfId is: " + vnfId, isDebugLogEnabled)
+			def cloudRegionId = execution.getVariable("lcpCloudRegionId")
+			logDebug("cloudRegionId is: " + cloudRegionId, isDebugLogEnabled)
+			
+			AAIResourcesClient client = new AAIResourcesClient()
+			
+			AAIUri genericVnfUri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId)
+			// Check if this VNF exists
+			if (!client.exists(genericVnfUri)) {
+				logDebug("VNF with vnfId " + vnfId + " does not exist in A&AI", isDebugLogEnabled)
+				exceptionUtil.buildAndThrowWorkflowException(execution, 404, "VNF with vnfId " + vnfId + " does not exist in A&AI")
+			}
+			
+			AAIResultWrapper aaiRW = client.get(genericVnfUri)
+			
+			Map<String, Object> result = aaiRW.asMap()
+			
+			String vnfName = result.get("vnf-name")
+			logDebug("vnfName from A&AI is: " + vnfName, isDebugLogEnabled)
+			execution.setVariable("vnfName", vnfName)
+			String nfRole = result.get("nf-role")
+			logDebug("nfRole from A&AI is: " + nfRole, isDebugLogEnabled)
+			execution.setVariable("nfRole", nfRole)
+			String vnfHostIpAddress = result.get("ipv4-oam-address")
+			logDebug("vnfHostIpAddress from A&AI is: " + vnfHostIpAddress, isDebugLogEnabled)
+			execution.setVariable("vnfHostIpAddress", vnfHostIpAddress)
+			execution.setVariable("vmIdList", null)
+			if (aaiRW.getRelationships() != null) {
+				Relationships relationships = aaiRW.getRelationships().get()
+				if (relationships != null) {
+						
+					List<AAIResourceUri> vserverUris = relationships.getRelatedAAIUris(AAIObjectType.VSERVER)
+					JSONArray vserverIds = new JSONArray()
+				
+					for (AAIResourceUri j in vserverUris) {
+						
+						String vserverId = j.getURIKeys().get('vserver-id')
+						vserverIds.put(vserverId)					
+					}
+				
+					JSONObject vmidsArray = new JSONObject()
+					vmidsArray.put("vmIds", vserverIds.toString())
+				
+					logDebug("vmidsArray is: " + vmidsArray.toString(), isDebugLogEnabled)								
+			
+					execution.setVariable("vmIdList", vmidsArray.toString())
+				}
+			}
+						
+			if (cloudRegionId != null) {			
+				AAIUri cloudRegionUri = AAIUriFactory.createResourceUri(AAIObjectType.DEFAULT_CLOUD_REGION, cloudRegionId)				
+				// Check if this client region exists
+				if (!client.exists(cloudRegionUri)) {
+					logDebug("Cloud Region with cloudRegionId " + cloudRegionId + " does not exist in A&AI", isDebugLogEnabled)
+					exceptionUtil.buildAndThrowWorkflowException(execution, 404, "Cloud Region with cloudRegionId " + cloudRegionId + " does not exist in A&AI")
+				}
+			
+				AAIResultWrapper aaiRWCloud = client.get(cloudRegionUri)
+			
+				Map<String, Object> resultCloud = aaiRWCloud.asMap()			
+			
+				String aicIdentity = resultCloud.get("identity-url")
+				logDebug("aicIdentity from A&AI is: " + aicIdentity, isDebugLogEnabled)
+				execution.setVariable("aicIdentity", aicIdentity)
+			}
+
+			logDebug('Exited ' + method, isDebugLogEnabled)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			logError('Caught exception in ' + method, e)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in queryAAIForVnf(): ' + e.getMessage())
+		}
+	}
+
+	
+	
+	/**
+	 * Check if this VNF's pservers are locked in A&AI.
+	 *
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void checkIfPserversInMaintInAAI(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.checkIfPserversInMaintInAAI(' +
+			'execution=' + execution.getId() +
+			')'
+		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+		execution.setVariable('errorCode', "0")
+		logDebug('Entered ' + method, isDebugLogEnabled)
+		execution.setVariable("workStep", "checkIfPserversInMaintInAAI")
+		execution.setVariable("failedActivity", "AAI")
+
+		try {
+			def transactionLoggingUuid = UUID.randomUUID().toString()
+			AAIRestClientImpl client = new AAIRestClientImpl()
+			AAIValidatorImpl aaiValidator = new AAIValidatorImpl()
+			aaiValidator.setClient(client)
+			def vnfId = execution.getVariable("vnfId")			
+			boolean areLocked = aaiValidator.isPhysicalServerLocked(vnfId, transactionLoggingUuid)
+			logDebug("areLocked result: " + areLocked, isDebugLogEnabled)
+			execution.setVariable('arePserversLocked', areLocked)
+			
+			if (areLocked) {
+				execution.setVariable("errorCode", "1003")
+				execution.setVariable("errorText", "pServers are locked in A&AI")
+			}			
+
+			logDebug('Exited ' + method, isDebugLogEnabled)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			logError('Caught exception in ' + method, e)
+			execution.setVariable("errorCode", "1002")
+			execution.setVariable("errorText", e.getMessage())
+			//exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in checkIfPserversInMaintInAAI(): ' + e.getMessage())
+		}
+	}
+	
+	/**
+	 * Set inMaint flag for this VNF to the specified value in A&AI.
+	 *
+	 *
+	 * @param execution The flow's execution instance.
+	 * @param inMaint The boolean value of the flag to set
+	 */
+	public void setVnfInMaintFlagInAAI(DelegateExecution execution, boolean inMaint) {
+		def method = getClass().getSimpleName() + '.setVnfInMaintFlagInAAI(' +
+			'execution=' + execution.getId() +
+			')'
+		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+		execution.setVariable('errorCode', "0")
+		logDebug('Entered ' + method, isDebugLogEnabled)
+		if (inMaint) {
+			execution.setVariable("workStep", "setVnfInMaintFlagInAAI")
+		}
+		else {
+			execution.setVariable("workStep", "unsetVnfInMaintFlagInAAI")
+		}
+		execution.setVariable("failedActivity", "AAI")
+
+		try {
+			def transactionLoggingUuid = UUID.randomUUID().toString()
+			AAIRestClientImpl client = new AAIRestClientImpl()
+			AAIUpdatorImpl aaiUpdator = new AAIUpdatorImpl()
+			aaiUpdator.setClient(client)
+			def vnfId = execution.getVariable("vnfId")
+			if (inMaint) {
+				aaiUpdator.updateVnfToLocked(vnfId, transactionLoggingUuid)
+				execution.setVariable("rollbackSetVnfInMaintenanceFlag", true)
+			}
+			else {
+				aaiUpdator.updateVnfToUnLocked(vnfId, transactionLoggingUuid)
+				execution.setVariable("rollbackSetVnfInMaintenanceFlag", false)
+			}
+							
+			logDebug('Exited ' + method, isDebugLogEnabled)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			logError('Caught exception in ' + method, e)
+			execution.setVariable("errorCode", "1002")
+			execution.setVariable("errorText", e.getMessage())
+			//exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in setVnfInMaintFlagInAAI(): ' + e.getMessage())
+		}
+	}
+	
+	/**
+	 * Check if VF Closed Loop Disabled in A&AI.
+	 *
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void checkIfClosedLoopDisabledInAAI(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.checkIfClosedLoopDisabledInAAI(' +
+			'execution=' + execution.getId() +
+			')'
+		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+		execution.setVariable('errorCode', "0")
+		execution.setVariable("workStep", "checkClosedLoopDisabledFlagInAAI")
+		execution.setVariable("failedActivity", "AAI")
+		logDebug('Entered ' + method, isDebugLogEnabled)
+
+		try {
+			def transactionLoggingUuid = UUID.randomUUID().toString()			
+			def vnfId = execution.getVariable("vnfId")
+			logDebug("vnfId is: " + vnfId, isDebugLogEnabled)
+			AAIResourcesClient client = new AAIResourcesClient()			
+			AAIUri genericVnfUri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId)
+			AAIResultWrapper aaiRW = client.get(genericVnfUri)
+			Map<String, Object> result = aaiRW.asMap()
+			boolean isClosedLoopDisabled = result.getOrDefault("is-closed-loop-disabled", false)
+		
+			logDebug("isClosedLoopDisabled result: " + isClosedLoopDisabled, isDebugLogEnabled)
+			execution.setVariable('isClosedLoopDisabled', isClosedLoopDisabled)
+			
+			if (isClosedLoopDisabled) {
+				execution.setVariable("errorCode", "1004")
+				execution.setVariable("errorText", "closedLoop is disabled in A&AI")
+			}
+
+			logDebug('Exited ' + method, isDebugLogEnabled)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			logError('Caught exception in ' + method, e)
+			execution.setVariable("errorCode", "1002")
+			execution.setVariable("errorText", e.getMessage())		
+		}
+	}
+	
+	/**
+	 * Set VF Closed Loop Disabled Flag in A&AI.
+	 *
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void setClosedLoopDisabledInAAI(DelegateExecution execution, boolean setDisabled) {
+		def method = getClass().getSimpleName() + '.setClosedLoopDisabledInAAI(' +
+			'execution=' + execution.getId() +
+			')'
+		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+		execution.setVariable('errorCode', "0")
+		if (setDisabled) {
+			execution.setVariable("workStep", "setClosedLoopDisabledFlagInAAI")
+			execution.setVariable("rollbackSetClosedLoopDisabledFlag", true)
+		}
+		else {
+			execution.setVariable("workStep", "unsetClosedLoopDisabledFlagInAAI")
+			execution.setVariable("rollbackSetClosedLoopDisabledFlag", false)
+		}
+		
+		execution.setVariable("failedActivity", "AAI")
+		logDebug('Entered ' + method, isDebugLogEnabled)
+
+		try {
+			def transactionLoggingUuid = UUID.randomUUID().toString()
+			def vnfId = execution.getVariable("vnfId")
+			AAIResourcesClient client = new AAIResourcesClient()			
+			AAIUri genericVnfUri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId)
+			
+			Map<String, Boolean> request = new HashMap<>()
+			request.put("is-closed-loop-disabled", setDisabled)
+			client.update(genericVnfUri, request)
+			logDebug("set isClosedLoop to: " + setDisabled, isDebugLogEnabled)		
+
+			logDebug('Exited ' + method, isDebugLogEnabled)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			logError('Caught exception in ' + method, e)
+			execution.setVariable("errorCode", "1002")
+			execution.setVariable("errorText", e.getMessage())			
+		}
+	}
+	
+	
+	
+	
+	/**
+	 * Call APP-C client to execute specified APP-C command for this VNF.
+	 *
+	 *
+	 * @param execution The flow's execution instance.
+	 * @param action The action to take in APP-C.
+	 */
+	public void runAppcCommand(DelegateExecution execution, Action action) {
+		def method = getClass().getSimpleName() + '.runAppcCommand(' +
+			'execution=' + execution.getId() +
+			')'
+		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+		execution.setVariable('errorCode', "0")
+		logDebug('Entered ' + method, isDebugLogEnabled)
+		
+		ApplicationControllerClient appcClient = null
+		
+		try {
+			logDebug("Running APP-C action: " + action.toString(), isDebugLogEnabled)
+			String vnfId = execution.getVariable('vnfId')
+			String msoRequestId = execution.getVariable('requestId')
+			execution.setVariable('msoRequestId', msoRequestId)			
+			execution.setVariable("failedActivity", "APP-C")
+			
+			appcClient = new ApplicationControllerClient()				
+			ApplicationControllerSupport support = new ApplicationControllerSupport()			
+			appcClient.appCSupport=support			
+			org.springframework.test.util.ReflectionTestUtils.setField(support, "lcmModelPackage", "org.onap.appc.client.lcm.model");			
+			Flags flags = new Flags();			
+			ActionIdentifiers actionIdentifiers = new ActionIdentifiers();			
+			actionIdentifiers.setVnfId(vnfId);
+			Status appcStatus
+			switch(action) {
+				case Action.Lock:
+					execution.setVariable('workStep', "LockVNF")
+					appcStatus = appcClient.runCommand(Action.Lock,actionIdentifiers,null,msoRequestId)					
+					break
+				case Action.Unlock:
+					execution.setVariable('workStep', "UnlockVNF")
+					appcStatus = appcClient.runCommand(Action.Unlock,actionIdentifiers,null,msoRequestId)					
+					break
+				case Action.HealthCheck:
+					def healthCheckIndex = execution.getVariable('healthCheckIndex')
+					execution.setVariable('workStep', "HealthCheckVNF" + healthCheckIndex)
+					execution.setVariable('healthCheckIndex', healthCheckIndex + 1)
+					appcStatus = appcClient.runCommand(Action.HealthCheck,actionIdentifiers,null,msoRequestId)					
+					break
+				case Action.Start:
+					execution.setVariable('workStep', "StartVNF")
+					appcStatus = appcClient.runCommand(Action.Start,actionIdentifiers,null,msoRequestId)					
+					break
+				case Action.Stop:
+					execution.setVariable('workStep', "StopVNF")
+					appcStatus = appcClient.runCommand(Action.Stop,actionIdentifiers,null,msoRequestId)					
+					break
+				default:
+					break
+			}
+			logDebug("Completed AppC request", isDebugLogEnabled)			
+			int appcCode = appcStatus.getCode()
+			logDebug("AppC status code is: " + appcCode, isDebugLogEnabled)
+			logDebug("AppC status message is: " + appcStatus.getMessage(), isDebugLogEnabled)
+			if (support.getCategoryOf(appcStatus) == ApplicationControllerSupport.StatusCategory.ERROR) {
+				execution.setVariable("errorCode", Integer.toString(appcCode))
+				execution.setVariable("errorText", appcStatus.getMessage())				
+			}
+				
+			logDebug('Exited ' + method, isDebugLogEnabled)
+		} catch (BpmnError e) {
+			logError('Caught exception in ' + method, e)
+			execution.setVariable("errorCode", "1002")
+			execution.setVariable("errorText", e.getMessage())
+			
+		} catch (java.lang.NoSuchMethodError e) {
+			logError('Caught exception in ' + method, e)
+			execution.setVariable("errorCode", "1002")
+			execution.setVariable("errorText", e.getMessage())		
+			
+		} catch (Exception e) {
+			logError('Caught exception in ' + method, e)
+			execution.setVariable("errorCode", "1002")
+			execution.setVariable("errorText", e.getMessage())	
+			
+		}
+	}
+	
+	/**
+	 * Placeholder for a call to APP-C client to execute specified APP-C command for this VNF.
+	 *
+	 *
+	 * @param execution The flow's execution instance.
+	 * @param action The action to take in APP-C.
+	 */
+	public void runAppcCommandPlaceholder(DelegateExecution execution, String action) {
+		def method = getClass().getSimpleName() + '.runAppcCommandPlaceholder(' +
+			'execution=' + execution.getId() +
+			')'
+		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')		
+		execution.setVariable('errorCode', "0")
+		logDebug('Entered ' + method, isDebugLogEnabled)		
+		execution.setVariable("failedActivity", "APP-C")
+		execution.setVariable("workStep", action)		
+	}
+
+
+
+
+
+	
+
+	/**
+	 * Builds a "CompletionHandler" request and stores it in the specified execution variable.
+	 *
+	 * @param execution the execution
+	 * @param resultVar the execution variable in which the result will be stored
+	 */
+	public void completionHandlerPrep(DelegateExecution execution, String resultVar) {
+		def method = getClass().getSimpleName() + '.completionHandlerPrep(' +
+			'execution=' + execution.getId() +
+			', resultVar=' + resultVar +
+			')'
+		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+		logDebug('Entered ' + method, isDebugLogEnabled)		
+
+		try {
+			
+			def requestInfo = execution.getVariable('requestInfo')
+
+			String content = """
+				<sdncadapterworkflow:MsoCompletionRequest xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1"
+						xmlns:reqtype="http://org.openecomp/mso/request/types/v1">
+					${requestInfo}
+					<sdncadapterworkflow:status-message>Vnf has been updated successfully.</sdncadapterworkflow:status-message>
+					<sdncadapterworkflow:mso-bpel-name>MSO_ACTIVATE_BPEL</sdncadapterworkflow:mso-bpel-name>
+				</sdncadapterworkflow:MsoCompletionRequest>
+			"""
+
+			content = utils.formatXml(content)
+			logDebug(resultVar + ' = ' + System.lineSeparator() + content, isDebugLogEnabled)
+			execution.setVariable(resultVar, content)
+
+			logDebug('Exited ' + method, isDebugLogEnabled)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			logError('Caught exception in ' + method, e)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 2000, 'Internal Error')
+		}
+	}
+	
+	/**
+	* Prepare DoUpdateVnfAndModules call.
+	*
+	*
+	* @param execution The flow's execution instance.
+	*/
+   public void prepDoUpdateVnfAndModules(DelegateExecution execution) {
+	   def method = getClass().getSimpleName() + '.prepDoUpdateVnfAndModules(' +
+		   'execution=' + execution.getId() +
+		   ')'
+	   def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+	   execution.setVariable('errorCode', "0")
+	   logDebug('Entered ' + method, isDebugLogEnabled)
+	   execution.setVariable("workStep", "doUpdateVnfAndModules")
+	   execution.setVariable("failedActivity", "MSO Update VNF")
+	   logDebug('Exited ' + method, isDebugLogEnabled)
+	   
+   }
+	
+	/**
+	 * Builds a "FalloutHandler" request and stores it in the specified execution variable.
+	 *
+	 * @param execution the execution
+	 * @param resultVar the execution variable in which the result will be stored
+	 */
+	public void falloutHandlerPrep(DelegateExecution execution, String resultVar) {
+		def method = getClass().getSimpleName() + '.falloutHandlerPrep(' +
+			'execution=' + execution.getId() +
+			', resultVar=' + resultVar +
+			')'
+		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+		logDebug('Entered ' + method, isDebugLogEnabled)
+
+		try {
+			def prefix = execution.getVariable('prefix')			
+			def requestInformation = execution.getVariable("requestInfo")		
+			
+			def WorkflowException workflowException = execution.getVariable("WorkflowException")
+			def errorResponseCode = workflowException.getErrorCode()
+			def errorResponseMsg = workflowException.getErrorMessage()
+			def encErrorResponseMsg = ""
+			if (errorResponseMsg != null) {
+				encErrorResponseMsg = errorResponseMsg.replace("&", "&amp;").replace("<", "&lt;").replace(">", "&gt;")
+			}
+
+			String content = """
+				<sdncadapterworkflow:FalloutHandlerRequest xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1"
+						xmlns:reqtype="http://org.openecomp/mso/request/types/v1"
+						xmlns:msoservtypes="http://org.openecomp/mso/request/types/v1"
+						xmlns:structuredtypes="http://org.openecomp/mso/structured/types/v1">
+					${requestInformation}
+					<sdncadapterworkflow:WorkflowException>
+						<sdncadapterworkflow:ErrorMessage>${encErrorResponseMsg}</sdncadapterworkflow:ErrorMessage>
+						<sdncadapterworkflow:ErrorCode>${errorResponseCode}</sdncadapterworkflow:ErrorCode>
+					</sdncadapterworkflow:WorkflowException>
+				</sdncadapterworkflow:FalloutHandlerRequest>
+			"""
+			content = utils.formatXml(content)
+			logDebug(resultVar + ' = ' + System.lineSeparator() + content, isDebugLogEnabled)
+			execution.setVariable(resultVar, content)
+
+			logDebug('Exited ' + method, isDebugLogEnabled)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			logError('Caught exception in ' + method, e)
+			exceptionUtil.buildWorkflowException(execution, 2000, 'Internal Error')
+		}
+	}
+	
+	/**
+	 * Handle Abort disposition from RainyDayHandler
+	 *
+	 * @param execution The flow's execution instance.	 
+	 */
+	public void abortProcessing(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.abortProcessing(' +
+			'execution=' + execution.getId() +
+			')'
+		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+		logDebug('Entered ' + method, isDebugLogEnabled)
+		
+		def errorText = execution.getVariable("errorText")
+		def errorCode = execution.getVariable("errorCode")
+		
+		exceptionUtil.buildAndThrowWorkflowException(execution, errorCode as Integer, errorText)
+	}	
+	
+	/**
+	 * Increment Retry Count for Current Work Step
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void incrementRetryCount(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.incrementRetryCount(' +
+			'execution=' + execution.getId() +
+			')'
+		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+		logDebug('Entered ' + method, isDebugLogEnabled)
+		
+		String retryCountVariableName = execution.getVariable("workStep") + "RetryCount"
+		execution.setVariable("retryCountVariableName", retryCountVariableName)
+		
+		def retryCountVariable = execution.getVariable(retryCountVariableName)
+		int retryCount = 0
+		
+		if (retryCountVariable != null) {
+			retryCount = (int) retryCountVariable
+		}
+		
+		retryCount += 1
+		
+		execution.setVariable(retryCountVariableName, retryCount)
+		
+		logDebug("value of " + retryCountVariableName + " is " + retryCount, isDebugLogEnabled)
+		logDebug('Exited ' + method, isDebugLogEnabled)
+			
+		
+	}
+	
+	public void preProcessRollback (DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG"," ***** preProcessRollback ***** ", isDebugEnabled)
+		try {
+			
+			Object workflowException = execution.getVariable("WorkflowException");
+ 
+			if (workflowException instanceof WorkflowException) {
+				utils.log("DEBUG", "Prev workflowException: " + workflowException.getErrorMessage(), isDebugEnabled)
+				execution.setVariable("prevWorkflowException", workflowException);
+				//execution.setVariable("WorkflowException", null);
+			}
+		} catch (BpmnError e) {
+			utils.log("DEBUG", "BPMN Error during preProcessRollback", isDebugEnabled)
+		} catch(Exception ex) {
+			String msg = "Exception in preProcessRollback. " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+		}
+		utils.log("DEBUG"," *** Exit preProcessRollback *** ", isDebugEnabled)
+	}
+ 
+	public void postProcessRollback (DelegateExecution execution) {
+		def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
+		utils.log("DEBUG"," ***** postProcessRollback ***** ", isDebugEnabled)
+		String msg = ""
+		try {
+			Object workflowException = execution.getVariable("prevWorkflowException");
+			if (workflowException instanceof WorkflowException) {
+				utils.log("DEBUG", "Setting prevException to WorkflowException: ", isDebugEnabled)
+				execution.setVariable("WorkflowException", workflowException);
+			}
+			
+		} catch (BpmnError b) {
+			utils.log("DEBUG", "BPMN Error during postProcessRollback", isDebugEnabled)
+			throw b;
+		} catch(Exception ex) {
+			msg = "Exception in postProcessRollback. " + ex.getMessage()
+			utils.log("DEBUG", msg, isDebugEnabled)
+		}
+		utils.log("DEBUG"," *** Exit postProcessRollback *** ", isDebugEnabled)
+	}
+ 
+
+	
+}
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
new file mode 100644
index 0000000..33aaef0
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/VnfConfigUpdate.groovy
@@ -0,0 +1,503 @@
+/*-
+ * ============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.bpmn.infrastructure.scripts
+
+import groovy.json.JsonOutput
+import groovy.json.JsonSlurper
+import groovy.util.Node
+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
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.impl.cmd.AbstractSetVariableCmd
+import org.camunda.bpm.engine.delegate.DelegateExecution
+import org.openecomp.mso.rest.APIResponse
+import org.openecomp.mso.rest.RESTClient
+import org.openecomp.mso.rest.RESTConfig
+import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor;
+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
+import org.openecomp.mso.bpmn.core.domain.VnfResource
+import org.openecomp.mso.client.aai.*
+
+import org.openecomp.mso.client.appc.ApplicationControllerClient;
+import org.openecomp.mso.client.appc.ApplicationControllerSupport;
+import org.openecomp.mso.client.aai.AAIResourcesClient
+import org.openecomp.mso.client.aai.entities.AAIResultWrapper
+import org.openecomp.mso.client.aai.entities.uri.AAIUri
+import org.openecomp.mso.client.aai.entities.uri.AAIUriFactory
+import org.onap.appc.client.lcm.model.Action;
+import org.onap.appc.client.lcm.model.ActionIdentifiers;
+import org.onap.appc.client.lcm.model.LockInput
+import org.onap.appc.client.lcm.model.UnlockInput
+import org.onap.appc.client.lcm.model.HealthCheckInput
+import org.onap.appc.client.lcm.model.StartInput
+import org.onap.appc.client.lcm.model.StopInput
+import org.onap.appc.client.lcm.model.Flags
+import org.onap.appc.client.lcm.model.Status
+
+
+public class VnfConfigUpdate extends VnfCmBase {
+
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+	JsonUtils jsonUtils = new JsonUtils()	
+	def prefix = "VnfIPU_"
+
+	/**
+	 * Initialize the flow's variables.
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void initProcessVariables(DelegateExecution execution) {
+		execution.setVariable('prefix', 'VnfCU_')
+		execution.setVariable('Request', null)			
+		execution.setVariable('source', null)			
+		execution.setVariable('UpdateVnfSuccessIndicator', false)
+		execution.setVariable('serviceType', null)
+		execution.setVariable('nfRole', null)
+		execution.setVariable('currentActivity', 'VnfCU')
+		execution.setVariable('workStep', null)
+		execution.setVariable('failedActivity', null)
+		execution.setVariable('errorCode', "0")
+		execution.setVariable('errorText', null)
+		execution.setVariable('healthCheckIndex0', 0)
+		execution.setVariable('healthCheckIndex1', 1)
+		execution.setVariable('maxRetryCount', 3)
+		execution.setVariable('retryCount', 0)
+		execution.setVariable("lcpCloudRegionId", null)
+		execution.setVariable("rollbackSetClosedLoopDisabledFlag", false)
+		execution.setVariable("rollbackVnfStop", false)
+		execution.setVariable("rollbackVnfLock", false)
+		execution.setVariable("rollbackQuiesceTraffic", false)
+		execution.setVariable("rollbackSetVnfInMaintenanceFlag", false)
+	}
+
+	/**
+	 * Check for missing elements in the received request.
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void preProcessRequest(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.preProcessRequest(' +
+		'execution=' + execution.getId() +
+		')'
+		initProcessVariables(execution)
+		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+		logDebug('Entered ' + method, isDebugLogEnabled)
+
+		initProcessVariables(execution)		
+
+		def incomingRequest = execution.getVariable('bpmnRequest')
+
+		utils.log("DEBUG", "Incoming Infra Request: " + incomingRequest, isDebugLogEnabled)
+		try {
+			def jsonSlurper = new JsonSlurper()
+			def jsonOutput = new JsonOutput()
+			Map reqMap = jsonSlurper.parseText(incomingRequest)
+			utils.log("DEBUG", " Request is in JSON format.", isDebugLogEnabled)
+
+			def serviceInstanceId = execution.getVariable('serviceInstanceId')
+			def vnfId = execution.getVariable('vnfId')
+			
+			execution.setVariable('serviceInstanceId', serviceInstanceId)
+			execution.setVariable('vnfId', vnfId)			
+			execution.setVariable('serviceType', 'Mobility')
+			execution.setVariable('payload', "")
+			execution.setVariable('actionHealthCheck', Action.HealthCheck)
+			execution.setVariable('actionConfigModify', Action.ConfigModify)			
+			
+			def payload = reqMap.requestDetails?.requestParameters?.payload
+			execution.setVariable('payload', payload)
+			
+			utils.log("DEBUG", 'Processed payload: ' + payload, isDebugLogEnabled)
+			
+			def requestId = execution.getVariable("mso-request-id")
+			execution.setVariable('requestId', requestId)
+			execution.setVariable('msoRequestId', requestId)			
+			
+			def requestorId = reqMap.requestDetails?.requestInfo?.requestorId ?: null
+			execution.setVariable('requestorId', requestorId)
+			
+			execution.setVariable('sdncVersion', '1702')
+
+			execution.setVariable("UpdateVnfInfraSuccessIndicator", false)
+						
+			execution.setVariable("isDebugLogEnabled", isDebugLogEnabled)			
+			
+			def source = reqMap.requestDetails?.requestInfo?.source
+			execution.setVariable("source", source)
+			
+			//For Completion Handler & Fallout Handler
+			String requestInfo =
+			"""<request-info xmlns="http://org.openecomp/mso/infra/vnf-request/v1">
+					<request-id>${requestId}</request-id>
+					<action>UPDATE</action>
+					<source>${source}</source>
+				   </request-info>"""
+			
+			execution.setVariable("requestInfo", requestInfo)			
+			
+			logDebug('RequestInfo: ' + execution.getVariable("requestInfo"), isDebugLogEnabled)		
+			
+			logDebug('Exited ' + method, isDebugLogEnabled)
+
+		}
+		catch(groovy.json.JsonException je) {
+			utils.log("DEBUG", " Request is not in JSON format.", isDebugLogEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 5000, "Invalid request format")
+
+		}
+		catch(Exception e) {
+			String restFaultMessage = e.getMessage()
+			utils.log("ERROR", " Exception Encountered - " + "\n" + restFaultMessage, isDebugLogEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 5000, restFaultMessage)
+		}	
+	}
+
+	/**
+	 * Prepare and send the sychronous response for this flow.
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void sendSynchResponse(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.sendSynchResponse(' +
+			'execution=' + execution.getId() +
+			')'
+		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+		logDebug('Entered ' + method, isDebugLogEnabled)
+
+
+		try {
+			def requestInfo = execution.getVariable('requestInfo')
+			def requestId = execution.getVariable('requestId')
+			def source = execution.getVariable('source')
+			def progress = getNodeTextForce(requestInfo, 'progress')
+			if (progress.isEmpty()) {
+				progress = '0'
+			}
+			def startTime = getNodeTextForce(requestInfo, 'start-time')
+			if (startTime.isEmpty()) {
+				startTime = System.currentTimeMillis()
+			}
+
+			// RESTResponse (for API Handler (APIH) Reply Task)
+			def vnfId = execution.getVariable("vnfId")
+			String synchResponse = """{"requestReferences":{"instanceId":"${vnfId}","requestId":"${requestId}"}}""".trim()
+
+			sendWorkflowResponse(execution, 200, synchResponse)
+
+			logDebug('Exited ' + method, isDebugLogEnabled)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			logError('Caught exception in ' + method, e)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in sendResponse(): ' + e.getMessage())
+		}
+	}	
+	
+	
+	/**
+	 * Check if this VNF is already in maintenance in A&AI.
+	 *
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void checkIfVnfInMaintInAAI(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.checkIfVnfInMaintInAAI(' +
+			'execution=' + execution.getId() +
+			')'
+		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+		execution.setVariable('errorCode', "0")
+		execution.setVariable("workStep", "checkIfVnfInMaintInAAI")
+		execution.setVariable("failedActivity", "AAI")
+		logDebug('Entered ' + method, isDebugLogEnabled)
+
+		try {
+			def transactionLoggingUuid = UUID.randomUUID().toString()
+			AAIRestClientImpl client = new AAIRestClientImpl()
+			AAIValidatorImpl aaiValidator = new AAIValidatorImpl()
+			aaiValidator.setClient(client)
+			def vnfId = execution.getVariable("vnfId")
+			boolean isInMaint = aaiValidator.isVNFLocked(vnfId, transactionLoggingUuid)
+			logDebug("isInMaint result: " + isInMaint, isDebugLogEnabled)
+			execution.setVariable('isVnfInMaintenance', isInMaint)
+			
+			if (isInMaint) {
+				execution.setVariable("errorCode", "1003")
+				execution.setVariable("errorText", "VNF is in maintenance in A&AI")
+			}
+
+			logDebug('Exited ' + method, isDebugLogEnabled)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			logError('Caught exception in ' + method, e)			
+			execution.setVariable("errorCode", "1002")
+			execution.setVariable("errorText", e.getMessage())
+			//exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in checkIfVnfInMaintInAAI(): ' + e.getMessage())
+		}
+	}
+	
+	
+	/**
+	 * Check if this VNF's pservers are locked in A&AI.
+	 *
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void checkIfPserversInMaintInAAI(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.checkIfPserversInMaintInAAI(' +
+			'execution=' + execution.getId() +
+			')'
+		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+		execution.setVariable('errorCode', "0")
+		logDebug('Entered ' + method, isDebugLogEnabled)
+		execution.setVariable("workStep", "checkIfPserversInMaintInAAI")
+		execution.setVariable("failedActivity", "AAI")
+
+		try {
+			def transactionLoggingUuid = UUID.randomUUID().toString()
+			AAIRestClientImpl client = new AAIRestClientImpl()
+			AAIValidatorImpl aaiValidator = new AAIValidatorImpl()
+			aaiValidator.setClient(client)
+			def vnfId = execution.getVariable("vnfId")			
+			boolean areLocked = aaiValidator.isPhysicalServerLocked(vnfId, transactionLoggingUuid)
+			logDebug("areLocked result: " + areLocked, isDebugLogEnabled)
+			execution.setVariable('arePserversLocked', areLocked)
+			
+			if (areLocked) {
+				execution.setVariable("errorCode", "1003")
+				execution.setVariable("errorText", "pServers are locked in A&AI")
+			}
+
+
+			logDebug('Exited ' + method, isDebugLogEnabled)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			logError('Caught exception in ' + method, e)
+			execution.setVariable("errorCode", "1002")
+			execution.setVariable("errorText", e.getMessage())
+			//exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in checkIfPserversInMaintInAAI(): ' + e.getMessage())
+		}
+	}
+	
+	/**
+	 * Set inMaint flag for this VNF to the specified value in A&AI.
+	 *
+	 *
+	 * @param execution The flow's execution instance.
+	 * @param inMaint The boolean value of the flag to set
+	 */
+	public void setVnfInMaintFlagInAAI(DelegateExecution execution, boolean inMaint) {
+		def method = getClass().getSimpleName() + '.setVnfInMaintFlagInAAI(' +
+			'execution=' + execution.getId() +
+			')'
+		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+		execution.setVariable('errorCode', "0")
+		logDebug('Entered ' + method, isDebugLogEnabled)
+		if (inMaint) {
+			execution.setVariable("workStep", "setVnfInMaintFlagInAAI")
+			execution.setVariable("rollbackSetVnfInMaintenanceFlag", true)
+		}
+		else {
+			execution.setVariable("workStep", "unsetVnfInMaintFlagInAAI")
+		}
+		execution.setVariable("failedActivity", "AAI")
+
+		try {
+			def transactionLoggingUuid = UUID.randomUUID().toString()
+			AAIRestClientImpl client = new AAIRestClientImpl()
+			AAIUpdatorImpl aaiUpdator = new AAIUpdatorImpl()
+			aaiUpdator.setClient(client)
+			def vnfId = execution.getVariable("vnfId")
+			if (inMaint) {
+				aaiUpdator.updateVnfToLocked(vnfId, transactionLoggingUuid)
+				execution.setVariable("rollbackSetVnfInMaintenanceFlag", true)
+			}
+			else {
+				aaiUpdator.updateVnfToUnLocked(vnfId, transactionLoggingUuid)
+			}
+							
+			logDebug('Exited ' + method, isDebugLogEnabled)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			logError('Caught exception in ' + method, e)
+			execution.setVariable("errorCode", "1002")
+			execution.setVariable("errorText", e.getMessage())
+			//exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in setVnfInMaintFlagInAAI(): ' + e.getMessage())
+		}
+	}
+	
+	/**
+	 * Check if VF Closed Loop Disabled in A&AI.
+	 *
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void checkIfClosedLoopDisabledInAAI(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.checkIfClosedLoopDisabledInAAI(' +
+			'execution=' + execution.getId() +
+			')'
+		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+		execution.setVariable('errorCode', "0")
+		execution.setVariable("workStep", "checkClosedLoopDisabledFlagInAAI")
+		execution.setVariable("failedActivity", "AAI")
+		logDebug('Entered ' + method, isDebugLogEnabled)
+
+		try {
+			def transactionLoggingUuid = UUID.randomUUID().toString()
+			def vnfId = execution.getVariable("vnfId")
+			logDebug("vnfId is: " + vnfId, isDebugLogEnabled)
+			AAIResourcesClient client = new AAIResourcesClient()			
+			AAIUri genericVnfUri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId)
+			AAIResultWrapper aaiRW = client.get(genericVnfUri)
+			Map<String, Object> result = aaiRW.asMap()
+			boolean isClosedLoopDisabled = result.getOrDefault("is-closed-loop-disabled", false)
+		
+			logDebug("isClosedLoopDisabled result: " + isClosedLoopDisabled, isDebugLogEnabled)
+			execution.setVariable('isClosedLoopDisabled', isClosedLoopDisabled)
+			
+			if (isClosedLoopDisabled) {
+				execution.setVariable("errorCode", "1004")
+				execution.setVariable("errorText", "closedLoop is disabled in A&AI")
+			}
+
+			logDebug('Exited ' + method, isDebugLogEnabled)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			logError('Caught exception in ' + method, e)
+			execution.setVariable("errorCode", "1002")
+			execution.setVariable("errorText", e.getMessage())
+			//exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in checkIfVnfInMaintInAAI(): ' + e.getMessage())
+		}
+	}
+	
+	/**
+	 * Set VF Closed Loop Disabled Flag in A&AI.
+	 *
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void setClosedLoopDisabledInAAI(DelegateExecution execution, boolean setDisabled) {
+		def method = getClass().getSimpleName() + '.setClosedLoopDisabledInAAI(' +
+			'execution=' + execution.getId() +
+			')'
+		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+		execution.setVariable('errorCode', "0")
+		if (setDisabled) {
+			execution.setVariable("workStep", "setClosedLoopDisabledFlagInAAI")
+			execution.setVariable("rollbackSetClosedLoopDisabledFlag", true)
+		}
+		else {
+			execution.setVariable("workStep", "unsetClosedLoopDisabledFlagInAAI")
+		}
+		
+		execution.setVariable("failedActivity", "AAI")
+		logDebug('Entered ' + method, isDebugLogEnabled)
+
+		try {
+			def transactionLoggingUuid = UUID.randomUUID().toString()
+			def vnfId = execution.getVariable("vnfId")
+			AAIResourcesClient client = new AAIResourcesClient()			
+			AAIUri genericVnfUri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId)
+			
+			Map<String, Boolean> request = new HashMap<>()
+			request.put("is-closed-loop-disabled", setDisabled)
+			client.update(genericVnfUri, request)
+			logDebug("set isClosedLoop to: " + setDisabled, isDebugLogEnabled)		
+
+
+			logDebug('Exited ' + method, isDebugLogEnabled)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			logError('Caught exception in ' + method, e)
+			execution.setVariable("errorCode", "1002")
+			execution.setVariable("errorText", e.getMessage())
+			//exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in checkIfVnfInMaintInAAI(): ' + e.getMessage())
+		}
+	}	
+
+	
+	/**
+	 * Handle Abort disposition from RainyDayHandler
+	 *
+	 * @param execution The flow's execution instance.	 
+	 */
+	public void abortProcessing(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.abortProcessing(' +
+			'execution=' + execution.getId() +
+			')'
+		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+		logDebug('Entered ' + method, isDebugLogEnabled)
+		
+		def errorText = execution.getVariable("errorText")
+		def errorCode = execution.getVariable("errorCode")
+		
+		exceptionUtil.buildAndThrowWorkflowException(execution, errorCode as Integer, errorText)
+	}
+	
+	/**
+	 * Increment Retry Count for Current Work Step
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void incrementRetryCount(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.incrementRetryCount(' +
+			'execution=' + execution.getId() +
+			')'
+		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+		logDebug('Entered ' + method, isDebugLogEnabled)
+		
+		String retryCountVariableName = execution.getVariable("workStep") + "RetryCount"
+		execution.setVariable("retryCountVariableName", retryCountVariableName)
+		
+		def retryCountVariable = execution.getVariable(retryCountVariableName)
+		int retryCount = 0
+		
+		if (retryCountVariable != null) {
+			retryCount = (int) retryCountVariable
+		}		
+		
+		retryCount += 1
+		
+		execution.setVariable(retryCountVariableName, retryCount)
+		
+		logDebug("value of " + retryCountVariableName + " is " + retryCount, isDebugLogEnabled)
+		logDebug('Exited ' + method, isDebugLogEnabled)
+			
+		
+	}
+	
+	
+	
+}
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
new file mode 100644
index 0000000..2b336af
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/VnfInPlaceUpdate.groovy
@@ -0,0 +1,622 @@
+/*-
+ * ============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.bpmn.infrastructure.scripts
+
+import groovy.json.JsonOutput
+import groovy.json.JsonSlurper
+import groovy.util.Node
+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
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.impl.cmd.AbstractSetVariableCmd
+import org.camunda.bpm.engine.delegate.DelegateExecution
+import org.openecomp.mso.rest.APIResponse
+import org.openecomp.mso.rest.RESTClient
+import org.openecomp.mso.rest.RESTConfig
+import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor;
+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
+import org.openecomp.mso.bpmn.core.domain.VnfResource
+import org.openecomp.mso.client.aai.*
+
+import org.openecomp.mso.client.appc.ApplicationControllerClient;
+import org.openecomp.mso.client.appc.ApplicationControllerSupport;
+import org.openecomp.mso.client.aai.AAIResourcesClient
+import org.openecomp.mso.client.aai.entities.AAIResultWrapper
+import org.openecomp.mso.client.aai.entities.uri.AAIUri
+import org.openecomp.mso.client.aai.entities.uri.AAIUriFactory
+import org.onap.appc.client.lcm.model.Action;
+import org.onap.appc.client.lcm.model.ActionIdentifiers;
+import org.onap.appc.client.lcm.model.LockInput
+import org.onap.appc.client.lcm.model.UnlockInput
+import org.onap.appc.client.lcm.model.HealthCheckInput
+import org.onap.appc.client.lcm.model.StartInput
+import org.onap.appc.client.lcm.model.StopInput
+import org.onap.appc.client.lcm.model.Flags
+import org.onap.appc.client.lcm.model.Status
+
+
+
+public class VnfInPlaceUpdate extends VnfCmBase {
+
+	ExceptionUtil exceptionUtil = new ExceptionUtil()
+	JsonUtils jsonUtils = new JsonUtils()	
+	def prefix = "VnfIPU_"
+
+	/**
+	 * Initialize the flow's variables.
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void initProcessVariables(DelegateExecution execution) {
+		execution.setVariable('prefix', 'VnfIPU_')
+		execution.setVariable('Request', null)
+		execution.setVariable('requestInfo', null)		
+		execution.setVariable('source', null)
+		execution.setVariable('vnfInputs', null)	
+		execution.setVariable('tenantId', null)		
+		execution.setVariable('vnfParams', null)		
+		execution.setVariable('UpdateVnfSuccessIndicator', false)
+		execution.setVariable('serviceType', null)
+		execution.setVariable('nfRole', null)
+		execution.setVariable('currentActivity', 'VnfIPU')
+		execution.setVariable('workStep', null)
+		execution.setVariable('failedActivity', null)
+		execution.setVariable('errorCode', "0")
+		execution.setVariable('errorText', null)
+		execution.setVariable('healthCheckIndex0', 0)
+		execution.setVariable('healthCheckIndex1', 1)
+		execution.setVariable('maxRetryCount', 3)
+		execution.setVariable("rollbackSetClosedLoopDisabledFlag", false)
+		execution.setVariable("rollbackVnfStop", false)
+		execution.setVariable("rollbackVnfLock", false)
+		execution.setVariable("rollbackQuiesceTraffic", false)
+		execution.setVariable("rollbackSetVnfInMaintenanceFlag", false)		
+	}
+
+	/**
+	 * Check for missing elements in the received request.
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void preProcessRequest(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.preProcessRequest(' +
+		'execution=' + execution.getId() +
+		')'
+		initProcessVariables(execution)
+		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+		logDebug('Entered ' + method, isDebugLogEnabled)
+
+		initProcessVariables(execution)		
+
+		def incomingRequest = execution.getVariable('bpmnRequest')
+
+		utils.log("DEBUG", "Incoming Infra Request: " + incomingRequest, isDebugLogEnabled)
+		try {
+			def jsonSlurper = new JsonSlurper()
+			def jsonOutput = new JsonOutput()
+			Map reqMap = jsonSlurper.parseText(incomingRequest)
+			utils.log("DEBUG", " Request is in JSON format.", isDebugLogEnabled)
+
+			def serviceInstanceId = execution.getVariable('serviceInstanceId')
+			def vnfId = execution.getVariable('vnfId')
+			
+			execution.setVariable('serviceInstanceId', serviceInstanceId)
+			execution.setVariable('vnfId', vnfId)
+			execution.setVariable("isVidRequest", "true")
+			execution.setVariable('serviceType', 'Mobility')
+			execution.setVariable('payload', "")
+			execution.setVariable('actionSnapshot', Action.Snapshot)
+			execution.setVariable('actionLock', Action.Lock)
+			execution.setVariable('actionUnlock', Action.Unlock)			
+			execution.setVariable('actionUpgradePreCheck', Action.UpgradePreCheck)
+			execution.setVariable('actionUpgradePostCheck', Action.UpgradePostCheck)
+			execution.setVariable('actionQuiesceTraffic', Action.QuiesceTraffic)
+			execution.setVariable('actionUpgradeBackup', Action.UpgradeBackup)
+			execution.setVariable('actionUpgradeSoftware', Action.UpgradeSoftware)
+			execution.setVariable('actionResumeTraffic', Action.ResumeTraffic)
+		
+			def payload = reqMap.requestDetails?.requestParameters?.payload
+			execution.setVariable('payload', payload)
+			
+			utils.log("DEBUG", 'Processed payload: ' + payload, isDebugLogEnabled)			
+					
+						
+			def requestId = execution.getVariable("mso-request-id")
+			execution.setVariable('requestId', requestId)
+			execution.setVariable('msoRequestId', requestId)
+			
+			def requestorId = reqMap.requestDetails?.requestInfo?.requestorId ?: null
+			execution.setVariable('requestorId', requestorId)
+								
+			def cloudConfiguration = reqMap.requestDetails?.cloudConfiguration
+			def lcpCloudRegionId	= cloudConfiguration.lcpCloudRegionId
+			execution.setVariable('lcpCloudRegionId', lcpCloudRegionId)
+			def tenantId = cloudConfiguration.tenantId
+			execution.setVariable('tenantId', tenantId)			
+
+			execution.setVariable("UpdateVnfInfraSuccessIndicator", false)
+						
+			execution.setVariable("isDebugLogEnabled", isDebugLogEnabled)			
+			
+			def source = reqMap.requestDetails?.requestInfo?.source
+			execution.setVariable("source", source)
+			
+			//For Completion Handler & Fallout Handler
+			String requestInfo =
+			"""<request-info xmlns="http://org.openecomp/mso/infra/vnf-request/v1">
+					<request-id>${requestId}</request-id>
+					<action>UPDATE</action>
+					<source>${source}</source>
+				   </request-info>"""
+			
+			execution.setVariable("requestInfo", requestInfo)			
+			
+			logDebug('RequestInfo: ' + execution.getVariable("requestInfo"), isDebugLogEnabled)		
+			
+			logDebug('Exited ' + method, isDebugLogEnabled)
+
+		}
+		catch(groovy.json.JsonException je) {
+			utils.log("DEBUG", " Request is not in JSON format.", isDebugLogEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 5000, "Invalid request format")
+
+		}
+		catch(Exception e) {
+			String restFaultMessage = e.getMessage()
+			utils.log("ERROR", " Exception Encountered - " + "\n" + restFaultMessage, isDebugLogEnabled)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 5000, restFaultMessage)
+		}	
+	}
+
+	/**
+	 * Prepare and send the sychronous response for this flow.
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void sendSynchResponse(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.sendSynchResponse(' +
+			'execution=' + execution.getId() +
+			')'
+		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+		logDebug('Entered ' + method, isDebugLogEnabled)
+
+
+		try {
+			def requestInfo = execution.getVariable('requestInfo')
+			def requestId = execution.getVariable('requestId')
+			def source = execution.getVariable('source')
+			def progress = getNodeTextForce(requestInfo, 'progress')
+			if (progress.isEmpty()) {
+				progress = '0'
+			}
+			def startTime = getNodeTextForce(requestInfo, 'start-time')
+			if (startTime.isEmpty()) {
+				startTime = System.currentTimeMillis()
+			}
+
+			// RESTResponse (for API Handler (APIH) Reply Task)
+			def vnfId = execution.getVariable("vnfId")
+			String synchResponse = """{"requestReferences":{"instanceId":"${vnfId}","requestId":"${requestId}"}}""".trim()
+
+			sendWorkflowResponse(execution, 200, synchResponse)
+
+			logDebug('Exited ' + method, isDebugLogEnabled)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			logError('Caught exception in ' + method, e)
+			exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in sendResponse(): ' + e.getMessage())
+		}
+	}
+
+	
+	/**
+	 * Check if this VNF is already in maintenance in A&AI.
+	 *
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void checkIfVnfInMaintInAAI(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.checkIfVnfInMaintInAAI(' +
+			'execution=' + execution.getId() +
+			')'
+		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+		execution.setVariable('errorCode', "0")
+		execution.setVariable("workStep", "checkIfVnfInMaintInAAI")
+		execution.setVariable("failedActivity", "AAI")
+		logDebug('Entered ' + method, isDebugLogEnabled)
+
+		try {
+			def transactionLoggingUuid = UUID.randomUUID().toString()
+			AAIRestClientImpl client = new AAIRestClientImpl()
+			AAIValidatorImpl aaiValidator = new AAIValidatorImpl()
+			aaiValidator.setClient(client)
+			def vnfId = execution.getVariable("vnfId")
+			boolean isInMaint = aaiValidator.isVNFLocked(vnfId, transactionLoggingUuid)
+			logDebug("isInMaint result: " + isInMaint, isDebugLogEnabled)
+			execution.setVariable('isVnfInMaintenance', isInMaint)
+			
+			if (isInMaint) {
+				execution.setVariable("errorCode", "1003")
+				execution.setVariable("errorText", "VNF is in maintenance in A&AI")
+			}
+
+
+			logDebug('Exited ' + method, isDebugLogEnabled)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			logError('Caught exception in ' + method, e)			
+			execution.setVariable("errorCode", "1002")
+			execution.setVariable("errorText", e.getMessage())
+			//exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in checkIfVnfInMaintInAAI(): ' + e.getMessage())
+		}
+	}
+	
+	
+	/**
+	 * Check if this VNF's pservers are locked in A&AI.
+	 *
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void checkIfPserversInMaintInAAI(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.checkIfPserversInMaintInAAI(' +
+			'execution=' + execution.getId() +
+			')'
+		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+		execution.setVariable('errorCode', "0")
+		logDebug('Entered ' + method, isDebugLogEnabled)
+		execution.setVariable("workStep", "checkIfPserversInMaintInAAI")
+		execution.setVariable("failedActivity", "AAI")
+
+		try {
+			def transactionLoggingUuid = UUID.randomUUID().toString()
+			AAIRestClientImpl client = new AAIRestClientImpl()
+			AAIValidatorImpl aaiValidator = new AAIValidatorImpl()
+			aaiValidator.setClient(client)
+			def vnfId = execution.getVariable("vnfId")			
+			boolean areLocked = aaiValidator.isPhysicalServerLocked(vnfId, transactionLoggingUuid)
+			logDebug("areLocked result: " + areLocked, isDebugLogEnabled)
+			execution.setVariable('arePserversLocked', areLocked)
+			
+			if (areLocked) {
+				execution.setVariable("errorCode", "1003")
+				execution.setVariable("errorText", "pServers are locked in A&AI")
+			}			
+
+			logDebug('Exited ' + method, isDebugLogEnabled)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			logError('Caught exception in ' + method, e)
+			execution.setVariable("errorCode", "1002")
+			execution.setVariable("errorText", e.getMessage())
+			//exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in checkIfPserversInMaintInAAI(): ' + e.getMessage())
+		}
+	}
+	
+	/**
+	 * Set inMaint flag for this VNF to the specified value in A&AI.
+	 *
+	 *
+	 * @param execution The flow's execution instance.
+	 * @param inMaint The boolean value of the flag to set
+	 */
+	public void setVnfInMaintFlagInAAI(DelegateExecution execution, boolean inMaint) {
+		def method = getClass().getSimpleName() + '.setVnfInMaintFlagInAAI(' +
+			'execution=' + execution.getId() +
+			')'
+		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+		execution.setVariable('errorCode', "0")
+		logDebug('Entered ' + method, isDebugLogEnabled)
+		if (inMaint) {
+			execution.setVariable("workStep", "setVnfInMaintFlagInAAI")
+		}
+		else {
+			execution.setVariable("workStep", "unsetVnfInMaintFlagInAAI")
+		}
+		execution.setVariable("failedActivity", "AAI")
+
+		try {
+			def transactionLoggingUuid = UUID.randomUUID().toString()
+			AAIRestClientImpl client = new AAIRestClientImpl()
+			AAIUpdatorImpl aaiUpdator = new AAIUpdatorImpl()
+			aaiUpdator.setClient(client)
+			def vnfId = execution.getVariable("vnfId")
+			if (inMaint) {
+				aaiUpdator.updateVnfToLocked(vnfId, transactionLoggingUuid)
+				execution.setVariable("rollbackSetVnfInMaintenanceFlag", true)
+			}
+			else {
+				aaiUpdator.updateVnfToUnLocked(vnfId, transactionLoggingUuid)				
+			}
+							
+			logDebug('Exited ' + method, isDebugLogEnabled)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			logError('Caught exception in ' + method, e)
+			execution.setVariable("errorCode", "1002")
+			execution.setVariable("errorText", e.getMessage())
+			//exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in setVnfInMaintFlagInAAI(): ' + e.getMessage())
+		}
+	}
+	
+	/**
+	 * Check if VF Closed Loop Disabled in A&AI.
+	 *
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void checkIfClosedLoopDisabledInAAI(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.checkIfClosedLoopDisabledInAAI(' +
+			'execution=' + execution.getId() +
+			')'
+		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+		execution.setVariable('errorCode', "0")
+		execution.setVariable("workStep", "checkClosedLoopDisabledFlagInAAI")
+		execution.setVariable("failedActivity", "AAI")
+		logDebug('Entered ' + method, isDebugLogEnabled)
+
+		try {
+			def transactionLoggingUuid = UUID.randomUUID().toString()			
+			def vnfId = execution.getVariable("vnfId")
+			logDebug("vnfId is: " + vnfId, isDebugLogEnabled)
+			AAIResourcesClient client = new AAIResourcesClient()			
+			AAIUri genericVnfUri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId)
+			AAIResultWrapper aaiRW = client.get(genericVnfUri)
+			Map<String, Object> result = aaiRW.asMap()
+			boolean isClosedLoopDisabled = result.getOrDefault("is-closed-loop-disabled", false)
+		
+			logDebug("isClosedLoopDisabled result: " + isClosedLoopDisabled, isDebugLogEnabled)
+			execution.setVariable('isClosedLoopDisabled', isClosedLoopDisabled)
+			
+			if (isClosedLoopDisabled) {
+				execution.setVariable("errorCode", "1004")
+				execution.setVariable("errorText", "closedLoop is disabled in A&AI")
+			}
+
+			logDebug('Exited ' + method, isDebugLogEnabled)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			logError('Caught exception in ' + method, e)
+			execution.setVariable("errorCode", "1002")
+			execution.setVariable("errorText", e.getMessage())		
+		}
+	}
+	
+	/**
+	 * Set VF Closed Loop Disabled Flag in A&AI.
+	 *
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void setClosedLoopDisabledInAAI(DelegateExecution execution, boolean setDisabled) {
+		def method = getClass().getSimpleName() + '.setClosedLoopDisabledInAAI(' +
+			'execution=' + execution.getId() +
+			')'
+		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+		execution.setVariable('errorCode', "0")
+		if (setDisabled) {
+			execution.setVariable("workStep", "setClosedLoopDisabledFlagInAAI")
+			execution.setVariable("rollbackSetClosedLoopDisabledFlag", true)
+		}
+		else {
+			execution.setVariable("workStep", "unsetClosedLoopDisabledFlagInAAI")
+		}
+		
+		execution.setVariable("failedActivity", "AAI")
+		logDebug('Entered ' + method, isDebugLogEnabled)
+
+		try {
+			def transactionLoggingUuid = UUID.randomUUID().toString()
+			def vnfId = execution.getVariable("vnfId")
+			AAIResourcesClient client = new AAIResourcesClient()			
+			AAIUri genericVnfUri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId)
+			
+			Map<String, Boolean> request = new HashMap<>()
+			request.put("is-closed-loop-disabled", setDisabled)
+			client.update(genericVnfUri, request)
+			logDebug("set isClosedLoop to: " + setDisabled, isDebugLogEnabled)		
+
+			logDebug('Exited ' + method, isDebugLogEnabled)
+		} catch (BpmnError e) {
+			throw e;
+		} catch (Exception e) {
+			logError('Caught exception in ' + method, e)
+			execution.setVariable("errorCode", "1002")
+			execution.setVariable("errorText", e.getMessage())			
+		}
+	}
+	
+	
+	
+	
+	/**
+	 * Call APP-C client to execute specified APP-C command for this VNF.
+	 *
+	 *
+	 * @param execution The flow's execution instance.
+	 * @param action The action to take in APP-C.
+	 */
+	public void runAppcCommand(DelegateExecution execution, Action action) {
+		def method = getClass().getSimpleName() + '.runAppcCommand(' +
+			'execution=' + execution.getId() +
+			')'
+		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+		execution.setVariable('errorCode', "0")
+		logDebug('Entered ' + method, isDebugLogEnabled)
+		
+		ApplicationControllerClient appcClient = null
+		
+		try {
+			logDebug("Running APP-C action: " + action.toString(), isDebugLogEnabled)
+			String vnfId = execution.getVariable('vnfId')
+			String msoRequestId = execution.getVariable('requestId')
+			execution.setVariable('msoRequestId', msoRequestId)			
+			execution.setVariable("failedActivity", "APP-C")
+			
+			appcClient = new ApplicationControllerClient()				
+			ApplicationControllerSupport support = new ApplicationControllerSupport()			
+			appcClient.appCSupport=support			
+			org.springframework.test.util.ReflectionTestUtils.setField(support, "lcmModelPackage", "org.onap.appc.client.lcm.model");			
+			Flags flags = new Flags();			
+			ActionIdentifiers actionIdentifiers = new ActionIdentifiers();			
+			actionIdentifiers.setVnfId(vnfId);
+			Status appcStatus
+			switch(action) {
+				case Action.Lock:
+					execution.setVariable('workStep', "LockVNF")
+					appcStatus = appcClient.runCommand(Action.Lock,actionIdentifiers,null,msoRequestId)					
+					break
+				case Action.Unlock:
+					execution.setVariable('workStep', "UnlockVNF")
+					appcStatus = appcClient.runCommand(Action.Unlock,actionIdentifiers,null,msoRequestId)					
+					break
+				case Action.HealthCheck:
+					def healthCheckIndex = execution.getVariable('healthCheckIndex')
+					execution.setVariable('workStep', "HealthCheckVNF" + healthCheckIndex)
+					execution.setVariable('healthCheckIndex', healthCheckIndex + 1)
+					appcStatus = appcClient.runCommand(Action.HealthCheck,actionIdentifiers,null,msoRequestId)					
+					break
+				case Action.Start:
+					execution.setVariable('workStep', "StartVNF")
+					appcStatus = appcClient.runCommand(Action.Start,actionIdentifiers,null,msoRequestId)					
+					break
+				case Action.Stop:
+					execution.setVariable('workStep', "StopVNF")
+					appcStatus = appcClient.runCommand(Action.Stop,actionIdentifiers,null,msoRequestId)					
+					break
+				default:
+					break
+			}
+			logDebug("Completed AppC request", isDebugLogEnabled)			
+			int appcCode = appcStatus.getCode()
+			logDebug("AppC status code is: " + appcCode, isDebugLogEnabled)
+			logDebug("AppC status message is: " + appcStatus.getMessage(), isDebugLogEnabled)
+			if (support.getCategoryOf(appcStatus) == ApplicationControllerSupport.StatusCategory.ERROR) {
+				execution.setVariable("errorCode", Integer.toString(appcCode))
+				execution.setVariable("errorText", appcStatus.getMessage())				
+			}
+				
+			logDebug('Exited ' + method, isDebugLogEnabled)
+		} catch (BpmnError e) {
+			logError('Caught exception in ' + method, e)
+			execution.setVariable("errorCode", "1002")
+			execution.setVariable("errorText", e.getMessage())
+			
+		} catch (java.lang.NoSuchMethodError e) {
+			logError('Caught exception in ' + method, e)
+			execution.setVariable("errorCode", "1002")
+			execution.setVariable("errorText", e.getMessage())		
+			
+		} catch (Exception e) {
+			logError('Caught exception in ' + method, e)
+			execution.setVariable("errorCode", "1002")
+			execution.setVariable("errorText", e.getMessage())	
+			
+		}
+	}
+	
+	/**
+	 * Placeholder for a call to APP-C client to execute specified APP-C command for this VNF.
+	 *
+	 *
+	 * @param execution The flow's execution instance.
+	 * @param action The action to take in APP-C.
+	 */
+	public void runAppcCommandPlaceholder(DelegateExecution execution, String action) {
+		def method = getClass().getSimpleName() + '.runAppcCommandPlaceholder(' +
+			'execution=' + execution.getId() +
+			')'
+		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')		
+		execution.setVariable('errorCode', "0")
+		logDebug('Entered ' + method, isDebugLogEnabled)		
+		execution.setVariable("failedActivity", "APP-C")
+		execution.setVariable("workStep", action)		
+	}
+
+
+
+	/**
+	 * Handle Abort disposition from RainyDayHandler
+	 *
+	 * @param execution The flow's execution instance.	 
+	 */
+	public void abortProcessing(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.abortProcessing(' +
+			'execution=' + execution.getId() +
+			')'
+		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+		logDebug('Entered ' + method, isDebugLogEnabled)
+		
+		def errorText = execution.getVariable("errorText")
+		def errorCode = execution.getVariable("errorCode")
+		
+		exceptionUtil.buildAndThrowWorkflowException(execution, errorCode as Integer, errorText)
+	}	
+	
+	/**
+	 * Increment Retry Count for Current Work Step
+	 *
+	 * @param execution The flow's execution instance.
+	 */
+	public void incrementRetryCount(DelegateExecution execution) {
+		def method = getClass().getSimpleName() + '.incrementRetryCount(' +
+			'execution=' + execution.getId() +
+			')'
+		def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+		logDebug('Entered ' + method, isDebugLogEnabled)
+		
+		String retryCountVariableName = execution.getVariable("workStep") + "RetryCount"
+		execution.setVariable("retryCountVariableName", retryCountVariableName)
+		
+		def retryCountVariable = execution.getVariable(retryCountVariableName)
+		int retryCount = 0
+		
+		if (retryCountVariable != null) {
+			retryCount = (int) retryCountVariable
+		}
+		
+		retryCount += 1
+		
+		execution.setVariable(retryCountVariableName, retryCount)
+		
+		logDebug("value of " + retryCountVariableName + " is " + retryCount, isDebugLogEnabled)
+		logDebug('Exited ' + method, isDebugLogEnabled)
+			
+		
+	}
+
+	
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/vcpe/scripts/CreateVcpeResCustService.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/vcpe/scripts/CreateVcpeResCustService.groovy
index e1cae80..503cdfd 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/vcpe/scripts/CreateVcpeResCustService.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/vcpe/scripts/CreateVcpeResCustService.groovy
Binary files differ
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DeleteVcpeResCustService.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DeleteVcpeResCustService.groovy
index 16fb22a..aa16d3b 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DeleteVcpeResCustService.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DeleteVcpeResCustService.groovy
@@ -35,7 +35,7 @@
 import java.util.UUID;
 
 import org.camunda.bpm.engine.delegate.BpmnError
-import org.camunda.bpm.engine.runtime.Execution
+import org.camunda.bpm.engine.delegate.DelegateExecution
 import org.json.JSONObject;
 import org.json.JSONArray;
 import org.apache.commons.lang3.*
@@ -64,7 +64,7 @@
 	 * This method is executed during the preProcessRequest task of the <class>DeleteVcpeResCustService.bpmn</class> process.
 	 * @param execution
 	 */
-	public InitializeProcessVariables(Execution execution){
+	public InitializeProcessVariables(DelegateExecution execution){
 		/* Initialize all the process variables in this block */
 
 		execution.setVariable("DeleteVcpeResCustServiceRequest", "")
@@ -80,7 +80,7 @@
 	 * This method is executed during the preProcessRequest task of the <class>CreateServiceInstance.bpmn</class> process.
 	 * @param execution
 	 */
-	public void preProcessRequest (Execution execution) {
+	public void preProcessRequest (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable(DebugFlag)
 		execution.setVariable("prefix",Prefix)
 
@@ -174,7 +174,7 @@
 		}
 	}
 
-	public void sendSyncResponse(Execution execution) {
+	public void sendSyncResponse(DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable(DebugFlag)
 
 		utils.log("DEBUG", " ***** Inside sendSyncResponse of DeleteVcpeResCustService ***** ", isDebugEnabled)
@@ -189,12 +189,12 @@
 			utils.log("DEBUG", " sendSynchResponse: xmlSyncResponse - " + "\n" + syncResponse, isDebugEnabled)
 			sendWorkflowResponse(execution, 202, syncResponse)
 		} catch (Exception ex) {
-			String exceptionMessage = "Bpmn error encountered in DeleteVcpeResCustService flow. Unexpected from method preProcessRequest() - " + ex.getMessage()
+			String exceptionMessage = "Bpmn error encountered in DeleteVcpeResCustService flow. Unexpected from method preProcessRequest() - " + ex.getMessage()
 			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
 		}
 	}
 
-	public void prepareServiceDelete(Execution execution) {
+	public void prepareServiceDelete(DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable(DebugFlag)
 		utils.log("DEBUG", " ***** Inside prepareServiceDelete() of DeleteVcpeResCustService ***** ", isDebugEnabled)
 		
@@ -281,7 +281,7 @@
 		}
 	}
 	
-	private getAaiAr(Execution execution, String relink) {
+	private getAaiAr(DelegateExecution execution, String relink) {
 		def isDebugEnabled = execution.getVariable(DebugFlag)
 		AaiUtil aaiUtil = new AaiUtil(this)
 		String aaiEndpoint = execution.getVariable("URN_aai_endpoint") + relink
@@ -309,7 +309,7 @@
 	// *******************************
 	//     
 	// *******************************
-	public void prepareVnfAndModulesDelete (Execution execution) {
+	public void prepareVnfAndModulesDelete (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable(DebugFlag)
 		utils.log("DEBUG", " ***** Inside prepareVnfAndModulesDelete of DeleteVcpeResCustService ***** ", isDebugEnabled)
 
@@ -336,7 +336,7 @@
 	// *******************************
 	//     Validate Vnf request Section -> increment count
 	// *******************************
-	public void validateVnfDelete (Execution execution) {
+	public void validateVnfDelete (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable(DebugFlag)
 		utils.log("DEBUG", " ***** Inside validateVnfDelete of DeleteVcpeResCustService ***** ", isDebugEnabled)
 
@@ -358,7 +358,7 @@
 	// *****************************************
 	//     Prepare Completion request Section
 	// *****************************************
-	public void postProcessResponse (Execution execution) {
+	public void postProcessResponse (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable(DebugFlag)
 		utils.log("DEBUG", " ***** Inside postProcessResponse of DeleteVcpeResCustService ***** ", isDebugEnabled)
 
@@ -395,7 +395,7 @@
 		}
 	}
 
-	public void prepareFalloutRequest(Execution execution){
+	public void prepareFalloutRequest(DelegateExecution execution){
 		def isDebugEnabled=execution.getVariable(DebugFlag)
 		utils.log("DEBUG", " *** STARTED DeleteVcpeResCustService prepareFalloutRequest Process *** ", isDebugEnabled)
 
@@ -416,7 +416,7 @@
 	}
 
 
-	public void sendSyncError (Execution execution) {
+	public void sendSyncError (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable(DebugFlag)
 		utils.log("DEBUG", " ***** Inside sendSyncError() of DeleteVcpeResCustService ***** ", isDebugEnabled)
 
@@ -442,7 +442,7 @@
 		}
 	}
 
-	public void processJavaException(Execution execution){
+	public void processJavaException(DelegateExecution execution){
 		def isDebugEnabled=execution.getVariable(DebugFlag)
 		execution.setVariable("prefix",Prefix)
 		try{
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DoCreateAllottedResourceBRG.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DoCreateAllottedResourceBRG.groovy
index 997757a..7d7c862 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DoCreateAllottedResourceBRG.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DoCreateAllottedResourceBRG.groovy
@@ -28,7 +28,7 @@
 
 import java.util.UUID;
 import org.camunda.bpm.engine.delegate.BpmnError
-import org.camunda.bpm.engine.runtime.Execution
+import org.camunda.bpm.engine.delegate.DelegateExecution
 import org.apache.commons.lang3.*
 import org.springframework.web.util.UriUtils;
 import static org.apache.commons.lang3.StringUtils.*
@@ -72,7 +72,7 @@
 	ExceptionUtil exceptionUtil = new ExceptionUtil()
 	JsonUtils jsonUtil = new JsonUtils()
 
-	public void preProcessRequest (Execution execution) {
+	public void preProcessRequest (DelegateExecution execution) {
 
 		def isDebugEnabled = execution.getVariable(DebugFlag)
 		String msg = ""
@@ -152,7 +152,7 @@
 		utils.log("DEBUG"," ***** Exit preProcessRequest *****",  isDebugEnabled)
 	}
 
-	public void getAaiAR (Execution execution) {
+	public void getAaiAR (DelegateExecution execution) {
 
 		def isDebugEnabled = execution.getVariable(DebugFlag)
 		utils.log("DEBUG"," ***** getAaiAR ***** ", isDebugEnabled)
@@ -190,7 +190,7 @@
 		utils.log("DEBUG"," *****Exit getAaiAR *****", isDebugEnabled)
 	}
 
-	public void createAaiAR(Execution execution) {
+	public void createAaiAR(DelegateExecution execution) {
 
 		def isDebugEnabled=execution.getVariable(DebugFlag)
 		utils.log("DEBUG"," ***** createAaiAR ***** ", isDebugEnabled)
@@ -312,7 +312,7 @@
 		utils.log("DEBUG"," *** Exit createAaiAR*** ", isDebugEnabled)
 	}
 
-	public String buildSDNCRequest(Execution execution, String action, String sdncRequestId) {
+	public String buildSDNCRequest(DelegateExecution execution, String action, String sdncRequestId) {
 
 		def isDebugEnabled = execution.getVariable(DebugFlag)
 		String msg = ""
@@ -379,7 +379,7 @@
 					<service-information>
 						<service-id></service-id>
 						<subscription-service-type>${subscriptionServiceType}</subscription-service-type>
-						<onap-model-information></onap-model-information>
+						<ecomp-model-information></ecomp-model-information>
 						<service-instance-id>${serviceInstanceId}</service-instance-id>
 						<subscriber-name/>
 						<global-customer-id>${globalCustomerId}</global-customer-id>
@@ -388,13 +388,13 @@
 						<allotted-resource-id>${allottedResourceId}</allotted-resource-id>    
 						<allotted-resource-type>brg</allotted-resource-type>
 						<parent-service-instance-id>${parentServiceInstanceId}</parent-service-instance-id>   
-						<onap-model-information>
+						<ecomp-model-information>
 							<model-invariant-uuid>${modelInvariantId}</model-invariant-uuid>
 							<model-uuid>${modelUUId}</model-uuid>
 							<model-customization-uuid>${modelCustomizationId}</model-customization-uuid>
 							<model-version>${modelVersion}</model-version>
 							<model-name>${modelName}</model-name>
-						</onap-model-information>
+						</ecomp-model-information>
 					</allotted-resource-information>
 					<brg-request-input>
 							<brg-wan-mac-address>${brgWanMacAddress}</brg-wan-mac-address>
@@ -416,7 +416,7 @@
 		return sdncReq
 	}
 
-	public void preProcessSDNCAssign(Execution execution) {
+	public void preProcessSDNCAssign(DelegateExecution execution) {
 
 		def isDebugEnabled = execution.getVariable(DebugFlag)
 		String msg = ""
@@ -446,7 +446,7 @@
 		utils.log("DEBUG"," *****Exit preProcessSDNCAssign *****", isDebugEnabled)
 	}
 
-	public void preProcessSDNCCreate(Execution execution) {
+	public void preProcessSDNCCreate(DelegateExecution execution) {
 
 		def isDebugEnabled = execution.getVariable(DebugFlag)
 		String msg = ""
@@ -476,7 +476,7 @@
 		utils.log("DEBUG"," *****Exit preProcessSDNCCreate *****", isDebugEnabled)
 	}
 
-	public void preProcessSDNCActivate(Execution execution) {
+	public void preProcessSDNCActivate(DelegateExecution execution) {
 
 		def isDebugEnabled = execution.getVariable(DebugFlag)
 		String msg = ""
@@ -506,7 +506,7 @@
 		utils.log("DEBUG"," *****Exit preProcessSDNCActivate *****", isDebugEnabled)
 	}
 
-	public void validateSDNCResp(Execution execution, String response, String method){
+	public void validateSDNCResp(DelegateExecution execution, String response, String method){
 
 		def isDebugLogEnabled=execution.getVariable(DebugFlag)
 		utils.log("DEBUG", " *** ValidateSDNCResponse Process*** ", isDebugLogEnabled)
@@ -546,7 +546,7 @@
 		logDebug(" *** Exit ValidateSDNCResp Process*** ", isDebugLogEnabled)
 	}
 
-	public void preProcessSDNCGet(Execution execution){
+	public void preProcessSDNCGet(DelegateExecution execution){
 		def isDebugLogEnabled = execution.getVariable(DebugFlag)
 		utils.log("DEBUG", "*** preProcessSDNCGet *** ", isDebugLogEnabled)
 		try{
@@ -575,7 +575,7 @@
 
 			String serviceInstanceId = execution.getVariable("serviceInstanceId")
 			String sdncRequestId = UUID.randomUUID().toString()
-
+			
 			//neeed the same url as used by vfmodules
 			String SDNCGetRequest =
 			"""<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.openecomp/mso/request/types/v1"
@@ -601,7 +601,7 @@
 		utils.log("DEBUG", "*** Exit preProcessSDNCGet *** ", isDebugLogEnabled)
 	}
 	
-	public void updateAaiAROrchStatus(Execution execution, String status){
+	public void updateAaiAROrchStatus(DelegateExecution execution, String status){
 		def isDebugEnabled = execution.getVariable(DebugFlag)
 		utils.log("DEBUG", " *** updateAaiAROrchStatus *** ", isDebugEnabled)
 		String aaiARPath = execution.getVariable("aaiARPath") //set during query (existing AR) or create
@@ -610,7 +610,7 @@
 		utils.log("DEBUG", " *** Exit updateAaiAROrchStatus *** ", isDebugEnabled)
 	}
 	
-	public void generateOutputs(Execution execution)
+	public void generateOutputs(DelegateExecution execution)
 	{
 		def isDebugEnabled=execution.getVariable(DebugFlag)
 		utils.log("DEBUG"," ***** generateOutputs ***** ", isDebugEnabled)
@@ -633,7 +633,7 @@
 		
 	}
 
-	public void preProcessRollback (Execution execution) {
+	public void preProcessRollback (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable(DebugFlag)
 		utils.log("DEBUG"," ***** preProcessRollback ***** ", isDebugEnabled)
 		try {
@@ -654,7 +654,7 @@
 		utils.log("DEBUG"," *** Exit preProcessRollback *** ", isDebugEnabled)
 	}
 
-	public void postProcessRollback (Execution execution) {
+	public void postProcessRollback (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable(DebugFlag)
 		utils.log("DEBUG"," ***** postProcessRollback ***** ", isDebugEnabled)
 		String msg = ""
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DoCreateAllottedResourceBRGRollback.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DoCreateAllottedResourceBRGRollback.groovy
index cac2ad8..4d27b82 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DoCreateAllottedResourceBRGRollback.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DoCreateAllottedResourceBRGRollback.groovy
@@ -30,7 +30,7 @@
 
 import java.util.UUID;
 import org.camunda.bpm.engine.delegate.BpmnError
-import org.camunda.bpm.engine.runtime.Execution
+import org.camunda.bpm.engine.delegate.DelegateExecution
 import org.apache.commons.lang3.*
 import org.springframework.web.util.UriUtils;
 import static org.apache.commons.lang3.StringUtils.*
@@ -58,7 +58,7 @@
 	String Prefix="DCARBRGRB_"
 	ExceptionUtil exceptionUtil = new ExceptionUtil()
 
-	public void preProcessRequest (Execution execution) {
+	public void preProcessRequest (DelegateExecution execution) {
 		
 		def isDebugEnabled = execution.getVariable(DebugFlag)
 		String msg = ""
@@ -131,7 +131,7 @@
 	}
 
 	// aaiARPath set during query (existing AR)
-	public void updateAaiAROrchStatus(Execution execution, String status){
+	public void updateAaiAROrchStatus(DelegateExecution execution, String status){
 		def isDebugEnabled = execution.getVariable(DebugFlag)
 		String msg = null;
 		utils.log("DEBUG", " *** updateAaiAROrchStatus ***", isDebugEnabled)
@@ -153,7 +153,7 @@
 		utils.log("DEBUG", " *** Exit updateAaiAROrchStatus *** ", isDebugEnabled)
 	}
 
-	public void validateSDNCResp(Execution execution, String response, String method){
+	public void validateSDNCResp(DelegateExecution execution, String response, String method){
 
 		def isDebugLogEnabled=execution.getVariable(DebugFlag)
 		utils.log("DEBUG", " *** ValidateSDNCResponse Process*** ", isDebugLogEnabled)
@@ -194,7 +194,7 @@
 		logDebug(" *** Exit ValidateSDNCResp Process*** ", isDebugLogEnabled)
 	}
 
-	public void deleteAaiAR(Execution execution){
+	public void deleteAaiAR(DelegateExecution execution){
 		def isDebugLogEnabled = execution.getVariable(DebugFlag)
 		try{
 			utils.log("DEBUG", " *** deleteAaiAR *** ", isDebugLogEnabled)
@@ -215,7 +215,7 @@
 		utils.log("DEBUG", " *** Exit deleteAaiAR *** ", isDebugLogEnabled)
 	}
 	
-	public void postProcessRequest(Execution execution) {
+	public void postProcessRequest(DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable(DebugFlag)
 		utils.log("DEBUG"," ***** postProcessRequest ***** ", isDebugEnabled)
 		String msg = ""
@@ -239,7 +239,7 @@
 
 	}
 	
-	public void processRollbackException(Execution execution){
+	public void processRollbackException(DelegateExecution execution){
 		def isDebugEnabled=execution.getVariable(DebugFlag)
 		utils.log("DEBUG"," ***** processRollbackException ***** ", isDebugEnabled)
 		try{
@@ -258,7 +258,7 @@
 		utils.log("DEBUG", " Exit processRollbackException", isDebugEnabled)
 	}
 
-	public void processRollbackJavaException(Execution execution){
+	public void processRollbackJavaException(DelegateExecution execution){
 		def isDebugEnabled=execution.getVariable(DebugFlag)
 		utils.log("DEBUG"," ***** processRollbackJavaException ***** ", isDebugEnabled)
 		try{
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DoCreateAllottedResourceTXC.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DoCreateAllottedResourceTXC.groovy
index 602df6b..2240c60 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DoCreateAllottedResourceTXC.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DoCreateAllottedResourceTXC.groovy
@@ -28,7 +28,7 @@
 
 import java.util.UUID;
 import org.camunda.bpm.engine.delegate.BpmnError
-import org.camunda.bpm.engine.runtime.Execution
+import org.camunda.bpm.engine.delegate.DelegateExecution
 import org.apache.commons.lang3.*
 import org.springframework.web.util.UriUtils;
 import static org.apache.commons.lang3.StringUtils.*
@@ -73,7 +73,7 @@
 	ExceptionUtil exceptionUtil = new ExceptionUtil()
 	JsonUtils jsonUtil = new JsonUtils()
 
-	public void preProcessRequest (Execution execution) {
+	public void preProcessRequest (DelegateExecution execution) {
 
 		def isDebugEnabled = execution.getVariable(DebugFlag)
 		String msg = ""
@@ -146,7 +146,7 @@
 		utils.log("DEBUG"," ***** Exit preProcessRequest *****",  isDebugEnabled)
 	}
 
-	public void getAaiAR (Execution execution) {
+	public void getAaiAR (DelegateExecution execution) {
 
 		def isDebugEnabled = execution.getVariable(DebugFlag)
 		utils.log("DEBUG"," ***** getAaiAR ***** ", isDebugEnabled)
@@ -184,7 +184,7 @@
 		utils.log("DEBUG"," *****Exit getAaiAR *****", isDebugEnabled)
 	}
 
-	public void createAaiAR(Execution execution) {
+	public void createAaiAR(DelegateExecution execution) {
 
 		def isDebugEnabled=execution.getVariable(DebugFlag)
 		utils.log("DEBUG"," ***** createAaiAR ***** ", isDebugEnabled)
@@ -307,7 +307,7 @@
 		utils.log("DEBUG"," *** Exit createAaiAR*** ", isDebugEnabled)
 	}
 
-	public String buildSDNCRequest(Execution execution, String action, String sdncRequestId) {
+	public String buildSDNCRequest(DelegateExecution execution, String action, String sdncRequestId) {
 
 		def isDebugEnabled = execution.getVariable(DebugFlag)
 		String msg = ""
@@ -373,7 +373,7 @@
 					<service-information>
 						<service-id></service-id>
 						<subscription-service-type>${subscriptionServiceType}</subscription-service-type>
-						<onap-model-information></onap-model-information>
+						<ecomp-model-information></ecomp-model-information>
 						<service-instance-id>${serviceInstanceId}</service-instance-id>
 						<subscriber-name/>
 						<global-customer-id>${globalCustomerId}</global-customer-id>
@@ -382,13 +382,13 @@
 						<allotted-resource-id>${allottedResourceId}</allotted-resource-id>    
 						<allotted-resource-type>tunnelxconn</allotted-resource-type>
 						<parent-service-instance-id>${parentServiceInstanceId}</parent-service-instance-id>   
-						<onap-model-information>
+						<ecomp-model-information>
 							<model-invariant-uuid>${modelInvariantId}</model-invariant-uuid>
 							<model-uuid>${modelUUId}</model-uuid>
 							<model-customization-uuid>${modelCustomizationId}</model-customization-uuid>
 							<model-version>${modelVersion}</model-version>
 							<model-name>${modelName}</model-name>
-						</onap-model-information>
+						</ecomp-model-information>
 					</allotted-resource-information>
 					<tunnelxconn-request-input>
 							<brg-wan-mac-address>${brgWanMacAddress}</brg-wan-mac-address>
@@ -408,7 +408,7 @@
 		return sdncReq
 	}
 
-	public void preProcessSDNCAssign(Execution execution) {
+	public void preProcessSDNCAssign(DelegateExecution execution) {
 
 		def isDebugEnabled = execution.getVariable(DebugFlag)
 		String msg = ""
@@ -438,7 +438,7 @@
 		utils.log("DEBUG"," *****Exit preProcessSDNCAssign *****", isDebugEnabled)
 	}
 
-	public void preProcessSDNCCreate(Execution execution) {
+	public void preProcessSDNCCreate(DelegateExecution execution) {
 
 		def isDebugEnabled = execution.getVariable(DebugFlag)
 		String msg = ""
@@ -468,7 +468,7 @@
 		utils.log("DEBUG"," *****Exit preProcessSDNCCreate *****", isDebugEnabled)
 	}
 
-	public void preProcessSDNCActivate(Execution execution) {
+	public void preProcessSDNCActivate(DelegateExecution execution) {
 
 		def isDebugEnabled = execution.getVariable(DebugFlag)
 		String msg = ""
@@ -498,7 +498,7 @@
 		utils.log("DEBUG"," *****Exit preProcessSDNCActivate *****", isDebugEnabled)
 	}
 
-	public void validateSDNCResp(Execution execution, String response, String method){
+	public void validateSDNCResp(DelegateExecution execution, String response, String method){
 
 		def isDebugLogEnabled=execution.getVariable(DebugFlag)
 		utils.log("DEBUG", " *** ValidateSDNCResponse Process*** ", isDebugLogEnabled)
@@ -538,7 +538,7 @@
 		logDebug(" *** Exit ValidateSDNCResp Process*** ", isDebugLogEnabled)
 	}
 
-	public void preProcessSDNCGet(Execution execution){
+	public void preProcessSDNCGet(DelegateExecution execution){
 		def isDebugLogEnabled = execution.getVariable(DebugFlag)
 		utils.log("DEBUG", "*** preProcessSDNCGet *** ", isDebugLogEnabled)
 		try{
@@ -567,7 +567,7 @@
 
 			String serviceInstanceId = execution.getVariable("serviceInstanceId")
 			String sdncRequestId = UUID.randomUUID().toString()
-
+			
 			//neeed the same url as used by vfmodules
 			String SDNCGetRequest =
 			"""<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.openecomp/mso/request/types/v1"
@@ -593,7 +593,7 @@
 		utils.log("DEBUG", "*** Exit preProcessSDNCGet *** ", isDebugLogEnabled)
 	}
 	
-	public void updateAaiAROrchStatus(Execution execution, String status){
+	public void updateAaiAROrchStatus(DelegateExecution execution, String status){
 		def isDebugEnabled = execution.getVariable(DebugFlag)
 		utils.log("DEBUG", " *** updateAaiAROrchStatus *** ", isDebugEnabled)
 		String aaiARPath = execution.getVariable("aaiARPath") //set during query (existing AR) or create
@@ -602,7 +602,7 @@
 		utils.log("DEBUG", " *** Exit updateAaiAROrchStatus *** ", isDebugEnabled)
 	}
 	
-	public void generateOutputs(Execution execution)
+	public void generateOutputs(DelegateExecution execution)
 	{
 		def isDebugEnabled=execution.getVariable(DebugFlag)
 		utils.log("DEBUG"," ***** generateOutputs ***** ", isDebugEnabled)
@@ -629,7 +629,7 @@
 		
 	}
 
-	public void preProcessRollback (Execution execution) {
+	public void preProcessRollback (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable(DebugFlag)
 		utils.log("DEBUG"," ***** preProcessRollback ***** ", isDebugEnabled)
 		try {
@@ -650,7 +650,7 @@
 		utils.log("DEBUG"," *** Exit preProcessRollback *** ", isDebugEnabled)
 	}
 
-	public void postProcessRollback (Execution execution) {
+	public void postProcessRollback (DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable(DebugFlag)
 		utils.log("DEBUG"," ***** postProcessRollback ***** ", isDebugEnabled)
 		String msg = ""
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DoCreateAllottedResourceTXCRollback.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DoCreateAllottedResourceTXCRollback.groovy
index 08f2df2..b6efced 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DoCreateAllottedResourceTXCRollback.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DoCreateAllottedResourceTXCRollback.groovy
@@ -30,7 +30,7 @@
 
 import java.util.UUID;
 import org.camunda.bpm.engine.delegate.BpmnError
-import org.camunda.bpm.engine.runtime.Execution
+import org.camunda.bpm.engine.delegate.DelegateExecution
 import org.apache.commons.lang3.*
 import org.springframework.web.util.UriUtils;
 import static org.apache.commons.lang3.StringUtils.*
@@ -58,7 +58,7 @@
 	String Prefix="DCARTXCRB_"
 	ExceptionUtil exceptionUtil = new ExceptionUtil()
 
-	public void preProcessRequest (Execution execution) {
+	public void preProcessRequest (DelegateExecution execution) {
 		
 		def isDebugEnabled = execution.getVariable(DebugFlag)
 		String msg = ""
@@ -131,7 +131,7 @@
 	}
 
 	// aaiARPath set during query (existing AR)
-	public void updateAaiAROrchStatus(Execution execution, String status){
+	public void updateAaiAROrchStatus(DelegateExecution execution, String status){
 		def isDebugEnabled = execution.getVariable(DebugFlag)
 		String msg = null;
 		utils.log("DEBUG", " *** updateAaiAROrchStatus ***", isDebugEnabled)
@@ -153,7 +153,7 @@
 		utils.log("DEBUG", " *** Exit updateAaiAROrchStatus *** ", isDebugEnabled)
 	}
 
-	public void validateSDNCResp(Execution execution, String response, String method){
+	public void validateSDNCResp(DelegateExecution execution, String response, String method){
 
 		def isDebugLogEnabled=execution.getVariable(DebugFlag)
 		utils.log("DEBUG", " *** ValidateSDNCResponse Process*** ", isDebugLogEnabled)
@@ -194,7 +194,7 @@
 		logDebug(" *** Exit ValidateSDNCResp Process*** ", isDebugLogEnabled)
 	}
 
-	public void deleteAaiAR(Execution execution){
+	public void deleteAaiAR(DelegateExecution execution){
 		def isDebugLogEnabled = execution.getVariable(DebugFlag)
 		try{
 			utils.log("DEBUG", " *** deleteAaiAR *** ", isDebugLogEnabled)
@@ -215,7 +215,7 @@
 		utils.log("DEBUG", " *** Exit deleteAaiAR *** ", isDebugLogEnabled)
 	}
 	
-	public void postProcessRequest(Execution execution) {
+	public void postProcessRequest(DelegateExecution execution) {
 		def isDebugEnabled=execution.getVariable(DebugFlag)
 		utils.log("DEBUG"," ***** postProcessRequest ***** ", isDebugEnabled)
 		String msg = ""
@@ -239,7 +239,7 @@
 
 	}
 	
-	public void processRollbackException(Execution execution){
+	public void processRollbackException(DelegateExecution execution){
 		def isDebugEnabled=execution.getVariable(DebugFlag)
 		utils.log("DEBUG"," ***** processRollbackException ***** ", isDebugEnabled)
 		try{
@@ -258,7 +258,7 @@
 		utils.log("DEBUG", " Exit processRollbackException", isDebugEnabled)
 	}
 
-	public void processRollbackJavaException(Execution execution){
+	public void processRollbackJavaException(DelegateExecution execution){
 		def isDebugEnabled=execution.getVariable(DebugFlag)
 		utils.log("DEBUG"," ***** processRollbackJavaException ***** ", isDebugEnabled)
 		try{
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DoDeleteAllottedResourceBRG.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DoDeleteAllottedResourceBRG.groovy
index 38ac23e..839766e 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DoDeleteAllottedResourceBRG.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DoDeleteAllottedResourceBRG.groovy
@@ -30,7 +30,7 @@
 
 import java.util.UUID;
 import org.camunda.bpm.engine.delegate.BpmnError
-import org.camunda.bpm.engine.runtime.Execution
+import org.camunda.bpm.engine.delegate.DelegateExecution
 import org.apache.commons.lang3.*
 import org.springframework.web.util.UriUtils;
 import static org.apache.commons.lang3.StringUtils.*
@@ -65,7 +65,7 @@
 	String Prefix="DDARBRG_"
 	ExceptionUtil exceptionUtil = new ExceptionUtil()
 
-	public void preProcessRequest (Execution execution) {
+	public void preProcessRequest (DelegateExecution execution) {
 
 		def isDebugEnabled = execution.getVariable(DebugFlag)
 		String msg = ""
@@ -107,7 +107,7 @@
 		utils.log("DEBUG"," ***** Exit preProcessRequest *****",  isDebugEnabled)
 	}
 
-	public void getAaiAR (Execution execution) {
+	public void getAaiAR (DelegateExecution execution) {
 
 		def isDebugEnabled = execution.getVariable(DebugFlag)
 		utils.log("DEBUG"," ***** getAaiAR ***** ", isDebugEnabled)
@@ -137,7 +137,7 @@
 	}
 
 	// aaiARPath set during query (existing AR)
-	public void updateAaiAROrchStatus(Execution execution, String status){
+	public void updateAaiAROrchStatus(DelegateExecution execution, String status){
 		def isDebugEnabled = execution.getVariable(DebugFlag)
 		utils.log("DEBUG", " *** updateAaiAROrchStatus *** ", isDebugEnabled)
 		AllottedResourceUtils arUtils = new AllottedResourceUtils(this)
@@ -146,7 +146,7 @@
 		utils.log("DEBUG", " *** Exit updateAaiAROrchStatus *** ", isDebugEnabled)
 	}
 
-	public String buildSDNCRequest(Execution execution, String action, String sdncRequestId) {
+	public String buildSDNCRequest(DelegateExecution execution, String action, String sdncRequestId) {
 
 		def isDebugEnabled = execution.getVariable(DebugFlag)
 		String msg = ""
@@ -200,7 +200,7 @@
 					<service-information>
 						<service-id></service-id>
 						<subscription-service-type>${subscriptionServiceType}</subscription-service-type>
-						<onap-model-information></onap-model-information>
+						<ecomp-model-information></ecomp-model-information>
 						<service-instance-id>${serviceInstanceId}</service-instance-id>
 						<subscriber-name/>
 						<global-customer-id>${globalCustomerId}</global-customer-id>
@@ -209,13 +209,13 @@
 						<allotted-resource-id>${allottedResourceId}</allotted-resource-id>    
 						<allotted-resource-type>brg</allotted-resource-type>
 						<parent-service-instance-id>${parentServiceInstanceId}</parent-service-instance-id>   
-						<onap-model-information>
+						<ecomp-model-information>
 							<model-invariant-uuid>${modelInvariantId}</model-invariant-uuid>
 							<model-uuid>${modelUUId}</model-uuid>
 							<model-customization-uuid>${modelCustomizationId}</model-customization-uuid>
 							<model-version>${modelVersion}</model-version>
 							<model-name>${modelName}</model-name>
-						</onap-model-information>
+						</ecomp-model-information>
 					</allotted-resource-information>
 					<brg-request-input>
 					</brg-request-input>
@@ -234,7 +234,7 @@
 		return sdncReq
 	}
 
-	public void preProcessSDNCUnassign(Execution execution) {
+	public void preProcessSDNCUnassign(DelegateExecution execution) {
 
 		def isDebugEnabled = execution.getVariable(DebugFlag)
 		String msg = ""
@@ -255,7 +255,7 @@
 		utils.log("DEBUG"," *****Exit preProcessSDNCUnassign *****", isDebugEnabled)
 	}
 
-	public void preProcessSDNCDelete(Execution execution) {
+	public void preProcessSDNCDelete(DelegateExecution execution) {
 
 		def isDebugEnabled = execution.getVariable(DebugFlag)
 		String msg = ""
@@ -276,7 +276,7 @@
 		utils.log("DEBUG"," *****Exit preProcessSDNCDelete *****", isDebugEnabled)
 	}
 
-	public void preProcessSDNCDeactivate(Execution execution) {
+	public void preProcessSDNCDeactivate(DelegateExecution execution) {
 
 		def isDebugEnabled = execution.getVariable(DebugFlag)
 		String msg = ""
@@ -297,7 +297,7 @@
 		utils.log("DEBUG"," *****Exit preProcessSDNCDeactivate *****", isDebugEnabled)
 	}
 
-	public void validateSDNCResp(Execution execution, String response, String method){
+	public void validateSDNCResp(DelegateExecution execution, String response, String method){
 
 		def isDebugLogEnabled=execution.getVariable(DebugFlag)
 		utils.log("DEBUG", " *** ValidateSDNCResponse Process*** ", isDebugLogEnabled)
@@ -348,7 +348,7 @@
 		logDebug(" *** Exit ValidateSDNCResp Process*** ", isDebugLogEnabled)
 	}
 
-	public void deleteAaiAR(Execution execution){
+	public void deleteAaiAR(DelegateExecution execution){
 		def isDebugLogEnabled = execution.getVariable(DebugFlag)
 		try{
 			utils.log("DEBUG", " *** deleteAaiAR *** ", isDebugLogEnabled)
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DoDeleteAllottedResourceTXC.groovy b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DoDeleteAllottedResourceTXC.groovy
index a5b7c13..c1b0eb5 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DoDeleteAllottedResourceTXC.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/main/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DoDeleteAllottedResourceTXC.groovy
@@ -30,7 +30,7 @@
 
 import java.util.UUID;
 import org.camunda.bpm.engine.delegate.BpmnError
-import org.camunda.bpm.engine.runtime.Execution
+import org.camunda.bpm.engine.delegate.DelegateExecution
 import org.apache.commons.lang3.*
 import org.springframework.web.util.UriUtils;
 import static org.apache.commons.lang3.StringUtils.*
@@ -65,7 +65,7 @@
 	String Prefix="DDARTXC_"
 	ExceptionUtil exceptionUtil = new ExceptionUtil()
 
-	public void preProcessRequest (Execution execution) {
+	public void preProcessRequest (DelegateExecution execution) {
 
 		def isDebugEnabled = execution.getVariable(DebugFlag)
 		String msg = ""
@@ -107,7 +107,7 @@
 		utils.log("DEBUG"," ***** Exit preProcessRequest *****",  isDebugEnabled)
 	}
 
-	public void getAaiAR (Execution execution) {
+	public void getAaiAR (DelegateExecution execution) {
 
 		def isDebugEnabled = execution.getVariable(DebugFlag)
 		utils.log("DEBUG"," ***** getAaiAR ***** ", isDebugEnabled)
@@ -137,7 +137,7 @@
 	}
 
 	// aaiARPath set during query (existing AR)
-	public void updateAaiAROrchStatus(Execution execution, String status){
+	public void updateAaiAROrchStatus(DelegateExecution execution, String status){
 		def isDebugEnabled = execution.getVariable(DebugFlag)
 		utils.log("DEBUG", " *** updateAaiAROrchStatus *** ", isDebugEnabled)
 		AllottedResourceUtils arUtils = new AllottedResourceUtils(this)
@@ -146,7 +146,7 @@
 		utils.log("DEBUG", " *** Exit updateAaiAROrchStatus *** ", isDebugEnabled)
 	}
 
-	public String buildSDNCRequest(Execution execution, String action, String sdncRequestId) {
+	public String buildSDNCRequest(DelegateExecution execution, String action, String sdncRequestId) {
 
 		def isDebugEnabled = execution.getVariable(DebugFlag)
 		String msg = ""
@@ -200,7 +200,7 @@
 					<service-information>
 						<service-id></service-id>
 						<subscription-service-type>${subscriptionServiceType}</subscription-service-type>
-						<onap-model-information></onap-model-information>
+						<ecomp-model-information></ecomp-model-information>
 						<service-instance-id>${serviceInstanceId}</service-instance-id>
 						<subscriber-name/>
 						<global-customer-id>${globalCustomerId}</global-customer-id>
@@ -209,13 +209,13 @@
 						<allotted-resource-id>${allottedResourceId}</allotted-resource-id>    
 						<allotted-resource-type>tunnelxconn</allotted-resource-type>
 						<parent-service-instance-id>${parentServiceInstanceId}</parent-service-instance-id>   
-						<onap-model-information>
+						<ecomp-model-information>
 							<model-invariant-uuid>${modelInvariantId}</model-invariant-uuid>
 							<model-uuid>${modelUUId}</model-uuid>
 							<model-customization-uuid>${modelCustomizationId}</model-customization-uuid>
 							<model-version>${modelVersion}</model-version>
 							<model-name>${modelName}</model-name>
-						</onap-model-information>
+						</ecomp-model-information>
 					</allotted-resource-information>
 					<tunnelxconn-request-input>
 					</tunnelxconn-request-input>
@@ -234,7 +234,7 @@
 		return sdncReq
 	}
 
-	public void preProcessSDNCUnassign(Execution execution) {
+	public void preProcessSDNCUnassign(DelegateExecution execution) {
 
 		def isDebugEnabled = execution.getVariable(DebugFlag)
 		String msg = ""
@@ -255,7 +255,7 @@
 		utils.log("DEBUG"," *****Exit preProcessSDNCUnassign *****", isDebugEnabled)
 	}
 
-	public void preProcessSDNCDelete(Execution execution) {
+	public void preProcessSDNCDelete(DelegateExecution execution) {
 
 		def isDebugEnabled = execution.getVariable(DebugFlag)
 		String msg = ""
@@ -276,7 +276,7 @@
 		utils.log("DEBUG"," *****Exit preProcessSDNCDelete *****", isDebugEnabled)
 	}
 
-	public void preProcessSDNCDeactivate(Execution execution) {
+	public void preProcessSDNCDeactivate(DelegateExecution execution) {
 
 		def isDebugEnabled = execution.getVariable(DebugFlag)
 		String msg = ""
@@ -297,7 +297,7 @@
 		utils.log("DEBUG"," *****Exit preProcessSDNCDeactivate *****", isDebugEnabled)
 	}
 
-	public void validateSDNCResp(Execution execution, String response, String method){
+	public void validateSDNCResp(DelegateExecution execution, String response, String method){
 
 		def isDebugLogEnabled=execution.getVariable(DebugFlag)
 		utils.log("DEBUG", " *** ValidateSDNCResponse Process*** ", isDebugLogEnabled)
@@ -348,7 +348,7 @@
 		logDebug(" *** Exit ValidateSDNCResp Process*** ", isDebugLogEnabled)
 	}
 
-	public void deleteAaiAR(Execution execution){
+	public void deleteAaiAR(DelegateExecution execution){
 		def isDebugLogEnabled = execution.getVariable(DebugFlag)
 		try{
 			utils.log("DEBUG", " *** deleteAaiAR *** ", isDebugLogEnabled)
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/AAITasks/AAICreateOwningEntity.java b/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/AAITasks/AAICreateOwningEntity.java
new file mode 100644
index 0000000..8ba4589
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/AAITasks/AAICreateOwningEntity.java
@@ -0,0 +1,50 @@
+/*-
+ * ============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.bpmn.infrastructure.AAITasks;
+
+import java.util.logging.Logger;
+
+import org.camunda.bpm.engine.delegate.DelegateExecution;
+import org.camunda.bpm.engine.delegate.JavaDelegate;
+import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil;
+import org.openecomp.mso.bpmn.core.domain.ServiceDecomposition;
+import org.openecomp.mso.client.orchestration.AAIOrchestrator;
+
+public class AAICreateOwningEntity implements JavaDelegate {
+	private static Logger LOGGER = Logger.getLogger("AAICreateOwningEntity");
+	AAIOrchestrator aaiO = new AAIOrchestrator();
+	ExceptionUtil exceptionUtil = new ExceptionUtil();
+
+	public void execute(DelegateExecution execution) throws Exception {
+		LOGGER.info("**** Started AAICreateOwningEntity ****");
+		ServiceDecomposition serviceDecomp = (ServiceDecomposition) execution.getVariable("serviceDecomposition");
+		if (serviceDecomp.getServiceInstance() != null && serviceDecomp.getOwningEntity() != null) {
+			try {
+				aaiO.createOwningEntityandConnectServiceInstance(serviceDecomp);
+			} catch (Exception ex) {
+				String msg = "Exception in AAICreateOwningEntity. " + ex.getMessage();
+				LOGGER.info(msg);
+				exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg);
+			}
+		}
+		LOGGER.info("**** Finished AAICreateOwningEntity ****");
+	}
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/AAITasks/AAICreateProject.java b/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/AAITasks/AAICreateProject.java
new file mode 100644
index 0000000..fe7006f
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/AAITasks/AAICreateProject.java
@@ -0,0 +1,50 @@
+/*-
+ * ============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.bpmn.infrastructure.AAITasks;
+
+import java.util.logging.Logger;
+
+import org.camunda.bpm.engine.delegate.DelegateExecution;
+import org.camunda.bpm.engine.delegate.JavaDelegate;
+import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil;
+import org.openecomp.mso.bpmn.core.domain.ServiceDecomposition;
+import org.openecomp.mso.client.orchestration.AAIOrchestrator;
+
+public class AAICreateProject implements JavaDelegate {
+	private static Logger LOGGER = Logger.getLogger("AAICreateProject");
+	AAIOrchestrator aaiO = new AAIOrchestrator();
+	ExceptionUtil exceptionUtil = new ExceptionUtil();
+
+	public void execute(DelegateExecution execution) throws Exception {
+		LOGGER.info("**** Started AAICreateProject ****");
+		ServiceDecomposition serviceDecomp = (ServiceDecomposition) execution.getVariable("serviceDecomposition");
+		if (serviceDecomp.getServiceInstance() != null && serviceDecomp.getProject() != null) {
+			try {
+				aaiO.createProjectandConnectServiceInstance(serviceDecomp);
+			} catch (Exception ex) {
+				String msg = "Exception in AAICreateProject. " + ex.getMessage();
+				LOGGER.info(msg);
+				exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg);
+			}
+		}
+		LOGGER.info("**** Finished AAICreateProject ****");
+	}
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/AAITasks/AAICreateServiceInstance.java b/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/AAITasks/AAICreateServiceInstance.java
new file mode 100644
index 0000000..b76675d
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/AAITasks/AAICreateServiceInstance.java
@@ -0,0 +1,50 @@
+/*-
+ * ============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.bpmn.infrastructure.AAITasks;
+
+import java.util.logging.Logger;
+
+import org.camunda.bpm.engine.delegate.DelegateExecution;
+import org.camunda.bpm.engine.delegate.JavaDelegate;
+import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil;
+import org.openecomp.mso.bpmn.core.domain.ServiceDecomposition;
+import org.openecomp.mso.client.orchestration.AAIOrchestrator;
+
+public class AAICreateServiceInstance implements JavaDelegate {
+	private static Logger LOGGER = Logger.getLogger("AAICreateServiceInstance");
+	AAIOrchestrator aaiO = new AAIOrchestrator();
+	ExceptionUtil exceptionUtil = new ExceptionUtil();
+
+	public void execute(DelegateExecution execution) throws Exception {
+		LOGGER.info("**** Started AAICreateServiceInstance ****");
+		ServiceDecomposition serviceDecomp = (ServiceDecomposition) execution.getVariable("serviceDecomposition");
+		execution.setVariable("aaiServiceInstanceRollback", false);
+		try {
+			aaiO.createServiceInstance(serviceDecomp);
+		} catch (Exception ex) {
+			String msg = "Exception in AAICreateServiceInstance. " + ex.getMessage();
+			LOGGER.info(msg);
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg);
+		}
+		execution.setVariable("aaiServiceInstanceRollback", true);
+		LOGGER.info("**** Finished AAICreateServiceInstance ****");
+	}
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/DoCreateServiceInstance/RollbackAAIServiceInstance.java b/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/DoCreateServiceInstance/RollbackAAIServiceInstance.java
new file mode 100644
index 0000000..496ad6a
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/DoCreateServiceInstance/RollbackAAIServiceInstance.java
@@ -0,0 +1,56 @@
+/*-
+ * ============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.bpmn.infrastructure.DoCreateServiceInstance;
+
+import java.util.logging.Logger;
+
+import org.camunda.bpm.engine.delegate.BpmnError;
+import org.camunda.bpm.engine.delegate.DelegateExecution;
+import org.camunda.bpm.engine.delegate.JavaDelegate;
+import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil;
+import org.openecomp.mso.bpmn.core.domain.ServiceDecomposition;
+import org.openecomp.mso.client.orchestration.AAIOrchestrator;
+
+public class RollbackAAIServiceInstance implements JavaDelegate {
+	private static Logger LOGGER = Logger.getLogger("RollbackAAIServiceInstance");
+	ExceptionUtil exceptionUtil = new ExceptionUtil();
+	
+	public void execute(DelegateExecution execution) throws Exception {
+		boolean aaiServiceInstanceRollback = (boolean) execution.getVariable("aaiServiceInstanceRollback");
+		if (aaiServiceInstanceRollback) {
+			LOGGER.info("**** Starting RollbackAAIServiceInstance ****");
+			try {
+				ServiceDecomposition serviceDecomp = (ServiceDecomposition) execution.getVariable("ServiceDecomposition");
+				AAIOrchestrator aaiO = new AAIOrchestrator();
+				aaiO.deleteServiceInstance(serviceDecomp);
+			} catch (Exception ex) {
+				String msg = "Error Response from AAI for aaiServiceInstanceRollback";
+				execution.setVariable("rollbackError", msg);
+				LOGGER.info(msg);
+				exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg);
+			}
+			LOGGER.info("**** Finished RollbackAAIServiceInstance ****");
+		} else {
+			LOGGER.info("**** Skipping RollbackAAIServiceInstance ****");
+		}
+	}
+
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/DoCreateServiceInstance/RollbackError.java b/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/DoCreateServiceInstance/RollbackError.java
new file mode 100644
index 0000000..68ea713
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/DoCreateServiceInstance/RollbackError.java
@@ -0,0 +1,38 @@
+/*-
+ * ============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.bpmn.infrastructure.DoCreateServiceInstance;
+
+import java.util.logging.Logger;
+
+import org.camunda.bpm.engine.delegate.DelegateExecution;
+import org.camunda.bpm.engine.delegate.JavaDelegate;
+
+public class RollbackError implements JavaDelegate {
+
+	private static Logger LOGGER = Logger.getLogger("RollbackError");
+
+	@Override
+	public void execute(DelegateExecution execution) throws Exception {
+		LOGGER.info("Caught an Exception in DoCreateServiceInstanceRollbackV3");
+		LOGGER.info("Unable to rollback DoCreateServiceInstanceV3");
+	}
+
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/DoCreateServiceInstance/SetupServiceDecomp.java b/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/DoCreateServiceInstance/SetupServiceDecomp.java
new file mode 100644
index 0000000..4edb405
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/DoCreateServiceInstance/SetupServiceDecomp.java
@@ -0,0 +1,112 @@
+/*-
+ * ============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.bpmn.infrastructure.DoCreateServiceInstance;
+
+import java.util.logging.Logger;
+
+import org.camunda.bpm.engine.delegate.DelegateExecution;
+import org.camunda.bpm.engine.delegate.JavaDelegate;
+import org.json.JSONObject;
+import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil;
+import org.openecomp.mso.bpmn.core.domain.Customer;
+import org.openecomp.mso.bpmn.core.domain.ModelInfo;
+import org.openecomp.mso.bpmn.core.domain.OwningEntity;
+import org.openecomp.mso.bpmn.core.domain.Project;
+import org.openecomp.mso.bpmn.core.domain.Request;
+import org.openecomp.mso.bpmn.core.domain.ServiceDecomposition;
+import org.openecomp.mso.bpmn.core.domain.ServiceInstance;
+
+public class SetupServiceDecomp implements JavaDelegate {
+
+	ExceptionUtil exceptionUtil = new ExceptionUtil();
+	private static Logger LOGGER = Logger.getLogger("SetupServiceDecomp");
+
+	public void execute(DelegateExecution execution) throws Exception {
+		LOGGER.info("Starting SetupServiceDecomp");
+		try {
+			String json = (String) execution.getVariable("bpmnRequest");
+			JSONObject jsonObj = new JSONObject(json);
+			JSONObject jsonReq = jsonObj.getJSONObject("requestDetails");
+			JSONObject jsonServ = jsonReq.getJSONObject("serviceInstance");
+			String serviceInstanceId = jsonServ.getString("serviceInstanceId");
+			System.out.println("servInstId: "+serviceInstanceId);
+			String serviceInstanceName = jsonServ.getString("serviceInstanceName");
+			String serviceType = jsonServ.getString("serviceType");
+			String serviceRole = jsonServ.getString("serviceRole");
+			String modelInvariantUuid = jsonServ.getString("modelInvariantUuid");
+			String modelUuid = jsonServ.getString("modelUuid");
+			String modelVersion = jsonServ.getString("modelVersion");
+			String modelName = jsonServ.getString("modelName");
+			String environmentContext = jsonServ.getString("environmentContext");
+			String workloadContext = jsonServ.getString("workloadContext");
+			JSONObject jsonProject = jsonReq.getJSONObject("project");
+			String projectName = jsonProject.getString("projectName");
+			JSONObject jsonOwningEntity = jsonReq.getJSONObject("owningEntity");
+			String owningEntityId = jsonOwningEntity.getString("owningEntityId");
+			String owningEntityName = jsonOwningEntity.getString("owningEntityName");
+			JSONObject jsonCustomer = jsonReq.getJSONObject("customer");
+			String subscriptionServiceType = jsonCustomer.getString("subscriptionServiceType");
+			String globalSubscriberId = jsonCustomer.getString("globalSubscriberId");
+			JSONObject jsonRequest = jsonReq.getJSONObject("request");
+			String sdncRequestId = jsonRequest.getString("sdncRequestId");
+			String callbackURL = jsonRequest.getString("callbackURL");
+			String requestId = jsonRequest.getString("requestId");
+			String productFamilyId = jsonRequest.getString("productFamilyId");
+			ServiceDecomposition serviceDecomp = new ServiceDecomposition("{}");
+			serviceDecomp.setCallbackURN(callbackURL);
+			serviceDecomp.setServiceRole(serviceRole);
+			ModelInfo modelInfo = new ModelInfo();
+			modelInfo.setModelInvariantUuid(modelInvariantUuid);
+			modelInfo.setModelName(modelName);
+			modelInfo.setModelVersion(modelVersion);
+			modelInfo.setModelUuid(modelUuid);
+			ServiceInstance serviceInstance = new ServiceInstance();
+			serviceInstance.setInstanceId(serviceInstanceId);
+			serviceInstance.setInstanceName(serviceInstanceName);
+			serviceInstance.setServiceType(serviceType);
+			serviceInstance.setModelInfo(modelInfo);
+			serviceInstance.setEnvironmentContext(environmentContext);
+			serviceInstance.setWorkloadContext(workloadContext);
+			Project project = new Project();
+			project.setProjectName(projectName);
+			OwningEntity owningEntity = new OwningEntity();
+			owningEntity.setOwningEntityId(owningEntityId);
+			owningEntity.setOwningEntityName(owningEntityName);
+			Customer customer = new Customer();
+			customer.setGlobalSubscriberId(globalSubscriberId);
+			customer.setSubscriptionServiceType(subscriptionServiceType);
+			Request request = new Request();
+			request.setRequestId(requestId);
+			request.setSdncRequestId(sdncRequestId);
+			request.setProductFamilyId(productFamilyId);
+			serviceDecomp.setCustomer(customer);
+			serviceDecomp.setServiceInstance(serviceInstance);
+			serviceDecomp.setRequest(request);
+			serviceDecomp.setProject(project);
+			serviceDecomp.setOwningEntity(owningEntity);
+			execution.setVariable("ServiceDecomposition", serviceDecomp);
+		} catch (Exception ex) {
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, "ERROR IN SET UP SERVICE DECOMP");
+		}
+		LOGGER.info("Finished SetupServiceDecomp");
+	}
+
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/MSOInfrastructureApplication.java b/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/MSOInfrastructureApplication.java
index c7420c3..a4a7ede 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/MSOInfrastructureApplication.java
+++ b/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/MSOInfrastructureApplication.java
@@ -35,7 +35,7 @@
  * @since Version 1.0
  *
  */
-@ProcessApplication("MSO Infrastructure Application")
+@ProcessApplication(name="MSO Infrastructure Application", deploymentDescriptors={"../processes.xml"})
 public class MSOInfrastructureApplication extends ServletProcessApplication {
 	
 	private MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL);
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/SDNCTasks/SDNCCreateServiceInstance.java b/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/SDNCTasks/SDNCCreateServiceInstance.java
new file mode 100644
index 0000000..549ae36
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/SDNCTasks/SDNCCreateServiceInstance.java
@@ -0,0 +1,49 @@
+/*-
+ * ============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.bpmn.infrastructure.SDNCTasks;
+
+import java.util.logging.Logger;
+
+import org.camunda.bpm.engine.delegate.DelegateExecution;
+import org.camunda.bpm.engine.delegate.JavaDelegate;
+import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil;
+import org.openecomp.mso.bpmn.core.domain.ServiceDecomposition;
+import org.openecomp.mso.client.orchestration.SDNCOrchestrator;
+
+public class SDNCCreateServiceInstance implements JavaDelegate {
+	private static Logger LOGGER = Logger.getLogger("SDNCCreateServiceInstance");
+	SDNCOrchestrator sdncO = new SDNCOrchestrator();
+	ExceptionUtil exceptionUtil = new ExceptionUtil();
+
+	public void execute(DelegateExecution execution) throws Exception {
+		LOGGER.info("**** Started SDNCCreateServiceInstance ****");
+		ServiceDecomposition serviceDecomp = (ServiceDecomposition) execution.getVariable("serviceDecomposition");
+		if (serviceDecomp != null) {
+			try {
+				sdncO.createServiceInstance(serviceDecomp);
+			} catch (Exception ex) {
+				String msg = "Exception in sdncCreateServiceInstance. " + ex.getMessage();
+				exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg);
+			}
+		}
+		LOGGER.info("**** Finished SDNCCreateServiceInstance ****");
+	}
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/aai/AAICreateResources.java b/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/aai/AAICreateResources.java
new file mode 100644
index 0000000..93ba0ae
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/aai/AAICreateResources.java
@@ -0,0 +1,84 @@
+/*-
+ * ============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.bpmn.infrastructure.aai;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Optional;
+
+import org.openecomp.mso.client.aai.AAIObjectType;
+import org.openecomp.mso.client.aai.AAIResourcesClient;
+import org.openecomp.mso.client.aai.entities.uri.AAIResourceUri;
+import org.openecomp.mso.client.aai.entities.uri.AAIUriFactory;
+
+public class AAICreateResources {
+
+
+	public void createAAIProject (String projectName, String serviceInstance){
+		AAIResourceUri projectURI = AAIUriFactory.createResourceUri(AAIObjectType.PROJECT, projectName);
+		AAIResourceUri serviceInstanceURI = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, serviceInstance);
+		AAIResourcesClient aaiRC = new AAIResourcesClient();	  
+		aaiRC.createIfNotExists(projectURI, Optional.empty()).connect(projectURI, serviceInstanceURI);
+		
+	}
+	
+	public void createAAIOwningEntity(String owningEntityId, String owningEntityName,String serviceInstance){
+		AAIResourceUri owningEntityURI = AAIUriFactory.createResourceUri(AAIObjectType.OWNING_ENTITY, owningEntityId);
+		AAIResourceUri serviceInstanceURI = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, serviceInstance);
+		Map<String, String> hashMap= new HashMap<>();
+		hashMap.put("owning-entity-name", owningEntityName);	
+		AAIResourcesClient aaiRC = new AAIResourcesClient();
+		aaiRC.createIfNotExists(owningEntityURI, Optional.of(hashMap)).connect(owningEntityURI, serviceInstanceURI);
+	}
+
+	public boolean existsOwningEntity(String owningEntityId){
+		AAIResourceUri owningEntityURI = AAIUriFactory.createResourceUri(AAIObjectType.OWNING_ENTITY, owningEntityId);
+		AAIResourcesClient aaiRC = new AAIResourcesClient();	  
+		return aaiRC.exists(owningEntityURI);
+	}
+	
+	public void connectOwningEntityandServiceInstance (String owningEntityId, String serviceInstance){
+		AAIResourceUri owningEntityURI = AAIUriFactory.createResourceUri(AAIObjectType.OWNING_ENTITY, owningEntityId);
+		AAIResourceUri serviceInstanceURI = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, serviceInstance);
+		AAIResourcesClient aaiRC = new AAIResourcesClient();
+		aaiRC.connect(owningEntityURI, serviceInstanceURI);
+	}
+	
+	public void createAAIPlatform(String platformName,String vnfId){
+		AAIResourceUri platformURI = AAIUriFactory.createResourceUri(AAIObjectType.PLATFORM, platformName);
+		AAIResourceUri genericVnfURI = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF,vnfId);
+		AAIResourcesClient aaiRC = new AAIResourcesClient();				  
+		aaiRC.createIfNotExists(platformURI, Optional.empty()).connect(platformURI, genericVnfURI);
+	}
+	
+	public void createAAILineOfBusiness(String lineOfBusiness,String vnfId){
+		AAIResourceUri lineOfBusinessURI = AAIUriFactory.createResourceUri(AAIObjectType.LINE_OF_BUSINESS, lineOfBusiness);
+		AAIResourceUri genericVnfURI = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF,vnfId);
+		AAIResourcesClient aaiRC = new AAIResourcesClient();				  
+		aaiRC.createIfNotExists(lineOfBusinessURI, Optional.empty()).connect(lineOfBusinessURI, genericVnfURI);
+	}
+	public void createAAIServiceInstance(String globalCustomerId, String serviceType, String serviceInstanceId){
+		AAIResourceUri serviceInstanceURI = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, globalCustomerId,serviceType,serviceInstanceId);
+		AAIResourcesClient aaiRC = new AAIResourcesClient();	  
+		aaiRC.createIfNotExists(serviceInstanceURI, Optional.empty());
+	}
+	
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/aai/AAIDeleteServiceInstance.java b/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/aai/AAIDeleteServiceInstance.java
new file mode 100644
index 0000000..483c057
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/aai/AAIDeleteServiceInstance.java
@@ -0,0 +1,49 @@
+/*-
+ * ============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.bpmn.infrastructure.aai;
+
+import org.camunda.bpm.engine.delegate.DelegateExecution;
+import org.camunda.bpm.engine.delegate.JavaDelegate;
+import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil;
+import org.openecomp.mso.client.aai.AAIObjectType;
+import org.openecomp.mso.client.aai.AAIResourcesClient;
+import org.openecomp.mso.client.aai.entities.uri.AAIResourceUri;
+import org.openecomp.mso.client.aai.entities.uri.AAIUriFactory;
+
+public class AAIDeleteServiceInstance implements JavaDelegate{
+
+	ExceptionUtil exceptionUtil = new ExceptionUtil();
+	public void execute(DelegateExecution execution) throws Exception {
+		try{
+			String serviceInstanceId = (String) execution.getVariable("serviceInstanceId");
+			AAIResourceUri serviceInstanceURI = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE,
+					serviceInstanceId);
+			AAIResourcesClient aaiRC = new AAIResourcesClient();
+			aaiRC.delete(serviceInstanceURI);
+			execution.setVariable("GENDS_SuccessIndicator",true);
+		} catch(Exception ex){
+			String msg = "Exception in Delete Serivce Instance. Service Instance could not be deleted in AAI." + ex.getMessage();
+			exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg);
+		}
+		
+	}
+	
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/aai/AAIServiceInstance.java b/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/aai/AAIServiceInstance.java
new file mode 100644
index 0000000..7370208
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/aai/AAIServiceInstance.java
@@ -0,0 +1,94 @@
+/*-
+ * ============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.bpmn.infrastructure.aai;
+
+public class AAIServiceInstance {
+	String serviceInstanceName;		
+	String serviceType;
+	String serviceRole;
+	String orchestrationStatus;	
+	String modelInvariantUuid;	
+	String modelVersionId;		
+	String environmentContext;
+	String workloadContext;
+	public AAIServiceInstance(String serviceInstanceName, String serviceType, String serviceRole,
+			String orchestrationStatus, String modelInvariantUuid, String modelVersionId, String environmentContext,
+			String workloadContext) {
+		this.serviceInstanceName = serviceInstanceName;
+		this.serviceType = serviceType;
+		this.serviceRole = serviceRole;
+		this.orchestrationStatus = orchestrationStatus;
+		this.modelInvariantUuid = modelInvariantUuid;
+		this.modelVersionId = modelVersionId;
+		this.environmentContext = environmentContext;
+		this.workloadContext = workloadContext;
+	}
+	public String getServiceInstanceName() {
+		return serviceInstanceName;
+	}
+	public void setServiceInstanceName(String serviceInstanceName) {
+		this.serviceInstanceName = serviceInstanceName;
+	}
+	public String getServiceType() {
+		return serviceType;
+	}
+	public void setServiceType(String serviceType) {
+		this.serviceType = serviceType;
+	}
+	public String getServiceRole() {
+		return serviceRole;
+	}
+	public void setServiceRole(String serviceRole) {
+		this.serviceRole = serviceRole;
+	}
+	public String getOrchestrationStatus() {
+		return orchestrationStatus;
+	}
+	public void setOrchestrationStatus(String orchestrationStatus) {
+		this.orchestrationStatus = orchestrationStatus;
+	}
+	public String getModelInvariantUuid() {
+		return modelInvariantUuid;
+	}
+	public void setModelInvariantUuid(String modelInvariantUuid) {
+		this.modelInvariantUuid = modelInvariantUuid;
+	}
+	public String getModelVersionId() {
+		return modelVersionId;
+	}
+	public void setModelVersionId(String modelVersionId) {
+		this.modelVersionId = modelVersionId;
+	}
+	public String getEnvironmentContext() {
+		return environmentContext;
+	}
+	public void setEnvironmentContext(String environmentContext) {
+		this.environmentContext = environmentContext;
+	}
+	public String getWorkloadContext() {
+		return workloadContext;
+	}
+	public void setWorkloadContext(String workloadContext) {
+		this.workloadContext = workloadContext;
+	}
+	
+
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/workflow/serviceTask/SdncNetworkTopologyOperationTask.java b/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/workflow/serviceTask/SdncNetworkTopologyOperationTask.java
index 25c85f7..646ed92 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/workflow/serviceTask/SdncNetworkTopologyOperationTask.java
+++ b/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/workflow/serviceTask/SdncNetworkTopologyOperationTask.java
@@ -60,8 +60,8 @@
         if (!isSend2SdncDirectly()) {
             outputEntity = genericResourceApiClient.postNetworkTopologyOperation
                     (HeaderUtil.DefaulAuth, inputEntity).execute().body();
-            updateProgress(execution, null, null, "90", "sendRestrequestAndHandleResponse finished!");
-            saveOutput(execution, outputEntity);
+        updateProgress(execution, null, null, "90", "sendRestrequestAndHandleResponse finished!");
+        saveOutput(execution, outputEntity);
         } else {
             send2SdncDirectly(HeaderUtil.DefaulAuth, inputEntity);
         }
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/workflow/serviceTask/SdncServiceTopologyOperationTask.java b/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/workflow/serviceTask/SdncServiceTopologyOperationTask.java
index 130c97e..dab96b0 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/workflow/serviceTask/SdncServiceTopologyOperationTask.java
+++ b/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/workflow/serviceTask/SdncServiceTopologyOperationTask.java
@@ -33,6 +33,7 @@
 import org.openecomp.mso.bpmn.infrastructure.workflow.serviceTask.client.entity.RpcServiceTopologyOperationInputEntity;
 import org.openecomp.mso.bpmn.infrastructure.workflow.serviceTask.client.entity.RpcServiceTopologyOperationOutputEntity;
 import org.openecomp.mso.logger.MessageEnum;
+import org.openecomp.mso.requestsdb.RequestsDbConstant;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -52,16 +53,16 @@
                                                  Map<String, String> inputs,
                                                  GenericResourceApi genericResourceApiClient) throws Exception {
         sdncLogger.info("SdncServiceTopologyOperationTask.sendRestrequestAndHandleResponse begin!");
-//        updateProgress(execution, null, null, "40", "sendRestrequestAndHandleResponse begin!");
+        updateProgress(execution, null, null, "40", "sendRestrequestAndHandleResponse begin!");
         ServiceRpcInputEntityBuilder builder = new ServiceRpcInputEntityBuilder();
         RpcServiceTopologyOperationInputEntity inputEntity = builder.build(execution, inputs);
-//        updateProgress(execution, null, null, "50", "RequestBody build finished!");
+        updateProgress(execution, null, null, "50", "RequestBody build finished!");
         RpcServiceTopologyOperationOutputEntity outputEntity;
         if (!isSend2SdncDirectly()) {
             outputEntity = genericResourceApiClient.postServiceTopologyOperation
                     (HeaderUtil.DefaulAuth, inputEntity).execute().body();
-//        updateProgress(execution, null, null, "90", "sendRestrequestAndHandleResponse finished!");
-            saveOutput(execution, outputEntity);
+        updateProgress(execution, null, null, "90", "sendRestrequestAndHandleResponse finished!");
+        saveOutput(execution, outputEntity);
         } else {
             send2SdncDirectly(HeaderUtil.DefaulAuth, inputEntity);
         }
@@ -92,7 +93,7 @@
             String errorMessage = output.getOutput().getResponseMessage();
             WorkflowException workflowException = new WorkflowException(processKey, errorCode, errorMessage);
             execution.setVariable("SDNCA_SuccessIndicator", workflowException);
-//            updateProgress(execution, RequestsDbConstant.Status.ERROR, String.valueOf(errorCode), null, errorMessage);
+            updateProgress(execution, RequestsDbConstant.Status.ERROR, String.valueOf(errorCode), null, errorMessage);
             sdncLogger.info("exception: SdncServiceTopologyOperationTask.saveOutput fail!");
             throw new RouteException();
         }
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/workflow/serviceTask/SdncUnderlayVpnPreprocessTask.java b/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/workflow/serviceTask/SdncUnderlayVpnPreprocessTask.java
index 869c778..90effd3 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/workflow/serviceTask/SdncUnderlayVpnPreprocessTask.java
+++ b/bpmn/MSOInfrastructureBPMN/src/main/java/org/openecomp/mso/bpmn/infrastructure/workflow/serviceTask/SdncUnderlayVpnPreprocessTask.java
@@ -43,7 +43,7 @@
         String serviceId = (String) execution.getVariable("serviceId");
         serviceId = StringUtils.isBlank(serviceId) ? (String) execution.getVariable("serviceInstanceId") : serviceId;
         String operationId = (String) execution.getVariable("operationId");
-        String resourceTemplateUUID = (String) execution.getVariable("resourceUUID");
+        String resourceTemplateUUID = (String) execution.getVariable("resourceTemplateUUID");
         resourceTemplateUUID = StringUtils.isBlank(resourceTemplateUUID) ? (String) execution.getVariable("resourceTemplateId") : resourceTemplateUUID;
         ResourceOperationStatus resourceOperationStatus = requestsDB.getResourceOperationStatus(serviceId, operationId, resourceTemplateUUID);
         return resourceOperationStatus.getOperType();
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/META-INF/persistence.xml b/bpmn/MSOInfrastructureBPMN/src/main/resources/META-INF/persistence.xml
index 8e87f47..3bfafac 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/resources/META-INF/persistence.xml
+++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/META-INF/persistence.xml
@@ -25,7 +25,7 @@
         http://java.sun.com/xml/ns/persistence
         http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
 
-  <persistence-unit name="infrastructure">
+  <persistence-unit name="default">
     <jta-data-source>java:jboss/datasources/ProcessEngine</jta-data-source>
     <properties>
       <!-- Properties for Hibernate -->
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateCustomE2EServiceInstance.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateCustomE2EServiceInstance.bpmn
index 8fc761c..ce17615 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateCustomE2EServiceInstance.bpmn
+++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateCustomE2EServiceInstance.bpmn
@@ -29,18 +29,17 @@
         <camunda:out source="rollbackData" target="rollbackData" />
         <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
         <camunda:in source="serviceInstanceName" target="serviceInstanceName" />
+        <camunda:in source="serviceModelInfo" target="serviceModelInfo" />
         <camunda:in source="productFamilyId" target="productFamilyId" />
         <camunda:in source="disableRollback" target="disableRollback" />
-        <camunda:in source="uuiRequest" target="uuiRequest" />
+        <camunda:in source="serviceInputParams" target="serviceInputParams" />
         <camunda:out source="rolledBack" target="rolledBack" />
         <camunda:out source="serviceInstanceName" target="serviceInstanceName" />
         <camunda:in source="failIfExists" target="failIfExists" />
         <camunda:in source="globalSubscriberId" target="globalSubscriberId" />
-        <camunda:in source="serviceType" target="serviceType" />
+        <camunda:in source="subscriptionServiceType" target="subscriptionServiceType" />
+        <camunda:in sourceExpression="1610" target="sdncVersion" />
         <camunda:in source="initialStatus" target="initialStatus" />
-        <camunda:in source="operationId" target="operationId" />
-        <camunda:in source="operationType" target="operationType" />
-        <camunda:in source="URN_mso_adapters_openecomp_db_endpoint" target="URN_mso_adapters_openecomp_db_endpoint" />
       </bpmn:extensionElements>
       <bpmn:incoming>SequenceFlow_19eilro</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_0klbpxx</bpmn:outgoing>
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateGenericALaCarteServiceInstance.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateGenericALaCarteServiceInstance.bpmn
index acf380f..6088fda 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateGenericALaCarteServiceInstance.bpmn
+++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateGenericALaCarteServiceInstance.bpmn
@@ -27,9 +27,6 @@
         <camunda:out source="WorkflowException" target="WorkflowException" />
         <camunda:in source="msoRequestId" target="msoRequestId" />
         <camunda:out source="rollbackData" target="rollbackData" />
-        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
-        <camunda:in source="serviceInstanceName" target="serviceInstanceName" />
-        <camunda:in source="serviceModelInfo" target="serviceModelInfo" />
         <camunda:in source="productFamilyId" target="productFamilyId" />
         <camunda:in source="disableRollback" target="disableRollback" />
         <camunda:in source="serviceInputParams" target="serviceInputParams" />
@@ -39,9 +36,10 @@
         <camunda:in source="globalSubscriberId" target="globalSubscriberId" />
         <camunda:in source="subscriptionServiceType" target="subscriptionServiceType" />
         <camunda:in sourceExpression="1610" target="sdncVersion" />
-        <camunda:in source="initialStatus" target="initialStatus" />
+        <camunda:in source="serviceDecomposition" target="serviceDecomposition" />
+        <camunda:in source="bpmnRequest" target="requestJson" />
       </bpmn2:extensionElements>
-      <bpmn2:incoming>SequenceFlow_0eto8sn</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_1hjh5zy</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_1lj31zp</bpmn2:outgoing>
     </bpmn2:callActivity>
     <bpmn2:endEvent id="EndEvent_0o440av" name="End">
@@ -52,7 +50,7 @@
       <bpmn2:incoming>SequenceFlow_0lp2z7l</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_0ktadna</bpmn2:outgoing>
       <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
-def csi= new CreateGenericALaCarteServiceInstance()
+def csi = new CreateGenericALaCarteServiceInstance()
 csi.preProcessRequest(execution)]]></bpmn2:script>
     </bpmn2:scriptTask>
     <bpmn2:sequenceFlow id="SequenceFlow_0lp2z7l" sourceRef="createSI_startEvent" targetRef="ScriptTask_0pvcr6j" />
@@ -116,10 +114,9 @@
       <bpmn2:sequenceFlow id="SequenceFlow_14eadeb" sourceRef="ScriptTask_0o4smqp" targetRef="ScriptTask_1hql91g" />
     </bpmn2:subProcess>
     <bpmn2:sequenceFlow id="SequenceFlow_095crcd" sourceRef="CallActivity_0sevgre" targetRef="EndEvent_0o440av" />
-    <bpmn2:sequenceFlow id="SequenceFlow_0eto8sn" sourceRef="Task_1nko5zz" targetRef="doCreateServiceInstance_CallActivity" />
     <bpmn2:scriptTask id="Task_1nko5zz" name="Send Sync Ack Response" scriptFormat="groovy">
       <bpmn2:incoming>SequenceFlow_0ktadna</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_0eto8sn</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_16vhtu8</bpmn2:outgoing>
       <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
 def csi = new  CreateGenericALaCarteServiceInstance()
 csi.sendSyncResponse(execution)]]></bpmn2:script>
@@ -140,6 +137,54 @@
     <bpmn2:sequenceFlow id="SequenceFlow_1mdnv3l" name="no" sourceRef="ExclusiveGateway_1x5i9c1" targetRef="EndEvent_143akoz">
       <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("WorkflowException") != null}]]></bpmn2:conditionExpression>
     </bpmn2:sequenceFlow>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0y5991s" name="GoDecompose">
+      <bpmn2:incoming>SequenceFlow_16vhtu8</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="Decompose" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_16vhtu8" sourceRef="Task_1nko5zz" targetRef="IntermediateThrowEvent_0y5991s" />
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_00tv706" name="Decompose">
+      <bpmn2:outgoing>SequenceFlow_1tfe975</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="Decompose" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_1aouco1" name="CreateSI">
+      <bpmn2:outgoing>SequenceFlow_1hjh5zy</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="CreateSI" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1tbopzu" name="GoToCreateSI">
+      <bpmn2:incoming>SequenceFlow_14ajbme</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="CreateSI" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:scriptTask id="ScriptTask_1vr3ks5" name="Prepare&#10;Decompose&#10;Service&#10;" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1tfe975</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0xhu1k3</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def csi= new CreateGenericALaCarteServiceInstance()
+csi.prepareDecomposeService(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="CallActivity_1oc1h9q" name="DecomposeService" calledElement="DecomposeService">
+      <bpmn2:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+        <camunda:in source="serviceModelInfo" target="serviceModelInfo" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:out source="serviceDecomposition" target="serviceDecomposition" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_0xhu1k3</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1o3ihrh</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="ScriptTask_04zaa1o" name="Prepare&#10;Create&#10;Service&#10;" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1o3ihrh</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_14ajbme</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def csi= new CreateGenericALaCarteServiceInstance()
+csi.prepareCreateServiceInstance(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_0xhu1k3" sourceRef="ScriptTask_1vr3ks5" targetRef="CallActivity_1oc1h9q" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1o3ihrh" sourceRef="CallActivity_1oc1h9q" targetRef="ScriptTask_04zaa1o" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1tfe975" sourceRef="IntermediateCatchEvent_00tv706" targetRef="ScriptTask_1vr3ks5" />
+    <bpmn2:sequenceFlow id="SequenceFlow_14ajbme" sourceRef="ScriptTask_04zaa1o" targetRef="IntermediateThrowEvent_1tbopzu" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1hjh5zy" sourceRef="IntermediateCatchEvent_1aouco1" targetRef="doCreateServiceInstance_CallActivity" />
   </bpmn2:process>
   <bpmn2:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
   <bpmn2:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" />
@@ -152,51 +197,51 @@
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="_BPMNShape_SubProcess_28" bpmnElement="unexpectedErrors_SubProcess" isExpanded="true">
-        <dc:Bounds x="222" y="531" width="394" height="188" />
+        <dc:Bounds x="300" y="880" width="394" height="188" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="_BPMNShape_StartEvent_71" bpmnElement="StartEvent_1">
-        <dc:Bounds x="255" y="608" width="36" height="36" />
+        <dc:Bounds x="333" y="957" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="273" y="649" width="0" height="0" />
+          <dc:Bounds x="351" y="998" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_270" bpmnElement="ScriptTask_1">
-        <dc:Bounds x="370" y="586" width="100" height="80" />
+        <dc:Bounds x="448" y="935" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="_BPMNShape_EndEvent_220" bpmnElement="EndEvent_1">
-        <dc:Bounds x="531" y="608" width="36" height="36" />
+        <dc:Bounds x="609" y="957" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="549" y="649" width="0" height="0" />
+          <dc:Bounds x="627" y="998" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="SequenceFlow_10" sourceElement="_BPMNShape_StartEvent_71" targetElement="_BPMNShape_ScriptTask_270">
-        <di:waypoint xsi:type="dc:Point" x="291" y="626" />
-        <di:waypoint xsi:type="dc:Point" x="370" y="626" />
+        <di:waypoint xsi:type="dc:Point" x="369" y="975" />
+        <di:waypoint xsi:type="dc:Point" x="448" y="975" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="333" y="626" width="0" height="0" />
+          <dc:Bounds x="411" y="975" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_13" bpmnElement="SequenceFlow_14" sourceElement="_BPMNShape_ScriptTask_270" targetElement="_BPMNShape_EndEvent_220">
-        <di:waypoint xsi:type="dc:Point" x="470" y="626" />
-        <di:waypoint xsi:type="dc:Point" x="531" y="626" />
+        <di:waypoint xsi:type="dc:Point" x="548" y="975" />
+        <di:waypoint xsi:type="dc:Point" x="609" y="975" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="505" y="626" width="0" height="0" />
+          <dc:Bounds x="583" y="975" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="_BPMNShape_CallActivity_72" bpmnElement="doCreateServiceInstance_CallActivity">
-        <dc:Bounds x="460" y="57" width="100" height="80" />
+        <dc:Bounds x="112" y="452" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="EndEvent_0o440av_di" bpmnElement="EndEvent_0o440av">
-        <dc:Bounds x="1017" y="185" width="36" height="36" />
+        <dc:Bounds x="852" y="474" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1028" y="221" width="20" height="14" />
+          <dc:Bounds x="863" y="510" width="20" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_1lj31zp_di" bpmnElement="SequenceFlow_1lj31zp">
-        <di:waypoint xsi:type="dc:Point" x="560" y="97" />
-        <di:waypoint xsi:type="dc:Point" x="662" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="212" y="492" />
+        <di:waypoint xsi:type="dc:Point" x="314" y="492" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="611" y="82" width="0" height="0" />
+          <dc:Bounds x="263" y="477" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ScriptTask_0pvcr6j_di" bpmnElement="ScriptTask_0pvcr6j">
@@ -210,128 +255,198 @@
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ScriptTask_0cihgpv_di" bpmnElement="ScriptTask_0cihgpv">
-        <dc:Bounds x="797" y="57" width="100" height="80" />
+        <dc:Bounds x="449" y="452" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="CallActivity_0sevgre_di" bpmnElement="CallActivity_0sevgre">
-        <dc:Bounds x="985" y="57" width="100" height="80" />
+        <dc:Bounds x="637" y="452" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0xxvjxq_di" bpmnElement="SequenceFlow_0xxvjxq">
-        <di:waypoint xsi:type="dc:Point" x="897" y="97" />
-        <di:waypoint xsi:type="dc:Point" x="985" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="549" y="492" />
+        <di:waypoint xsi:type="dc:Point" x="637" y="492" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="941" y="82" width="0" height="0" />
+          <dc:Bounds x="593" y="477" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ScriptTask_1hql91g_di" bpmnElement="ScriptTask_1hql91g">
-        <dc:Bounds x="380" y="333" width="100" height="80" />
+        <dc:Bounds x="443" y="731" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="CallActivity_1ksm1dz_di" bpmnElement="CallActivity_1ksm1dz">
-        <dc:Bounds x="557" y="333" width="100" height="80" />
+        <dc:Bounds x="620" y="731" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="SubProcess_1k2112i_di" bpmnElement="SubProcess_1k2112i" isExpanded="true">
-        <dc:Bounds x="107" y="269" width="679" height="194" />
+        <dc:Bounds x="170" y="667" width="679" height="194" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="StartEvent_110xxgx_di" bpmnElement="StartEvent_110xxgx">
-        <dc:Bounds x="122" y="355" width="36" height="36" />
+        <dc:Bounds x="185" y="753" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="140" y="396" width="0" height="0" />
+          <dc:Bounds x="203" y="794" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="EndEvent_1rqikib_di" bpmnElement="EndEvent_1rqikib">
-        <dc:Bounds x="701" y="355" width="36" height="36" />
+        <dc:Bounds x="764" y="753" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="719" y="396" width="0" height="0" />
+          <dc:Bounds x="782" y="794" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_1reso2f_di" bpmnElement="SequenceFlow_1reso2f">
-        <di:waypoint xsi:type="dc:Point" x="480" y="373" />
-        <di:waypoint xsi:type="dc:Point" x="557" y="373" />
+        <di:waypoint xsi:type="dc:Point" x="543" y="771" />
+        <di:waypoint xsi:type="dc:Point" x="620" y="771" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="519" y="358" width="0" height="0" />
+          <dc:Bounds x="582" y="756" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_1ghqolv_di" bpmnElement="SequenceFlow_1ghqolv">
-        <di:waypoint xsi:type="dc:Point" x="657" y="373" />
-        <di:waypoint xsi:type="dc:Point" x="701" y="373" />
+        <di:waypoint xsi:type="dc:Point" x="720" y="771" />
+        <di:waypoint xsi:type="dc:Point" x="764" y="771" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="679" y="358" width="0" height="0" />
+          <dc:Bounds x="742" y="756" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_095crcd_di" bpmnElement="SequenceFlow_095crcd">
-        <di:waypoint xsi:type="dc:Point" x="1035" y="137" />
-        <di:waypoint xsi:type="dc:Point" x="1035" y="185" />
+        <di:waypoint xsi:type="dc:Point" x="737" y="492" />
+        <di:waypoint xsi:type="dc:Point" x="852" y="492" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1050" y="161" width="0" height="0" />
+          <dc:Bounds x="795" y="477" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0n4umjf_di" bpmnElement="SequenceFlow_0n4umjf">
-        <di:waypoint xsi:type="dc:Point" x="158" y="373" />
-        <di:waypoint xsi:type="dc:Point" x="180" y="373" />
-        <di:waypoint xsi:type="dc:Point" x="180" y="373" />
-        <di:waypoint xsi:type="dc:Point" x="201" y="373" />
+        <di:waypoint xsi:type="dc:Point" x="221" y="771" />
+        <di:waypoint xsi:type="dc:Point" x="243" y="771" />
+        <di:waypoint xsi:type="dc:Point" x="243" y="771" />
+        <di:waypoint xsi:type="dc:Point" x="264" y="771" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="195" y="373" width="0" height="0" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0eto8sn_di" bpmnElement="SequenceFlow_0eto8sn">
-        <di:waypoint xsi:type="dc:Point" x="380" y="97" />
-        <di:waypoint xsi:type="dc:Point" x="460" y="97" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="420" y="82" width="0" height="0" />
+          <dc:Bounds x="258" y="771" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ScriptTask_1rb2dsd_di" bpmnElement="Task_1nko5zz">
-        <dc:Bounds x="280" y="57" width="100" height="80" />
+        <dc:Bounds x="342" y="57" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0ktadna_di" bpmnElement="SequenceFlow_0ktadna">
         <di:waypoint xsi:type="dc:Point" x="212" y="97" />
-        <di:waypoint xsi:type="dc:Point" x="280" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="342" y="97" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="246" y="82" width="0" height="0" />
+          <dc:Bounds x="277" y="82" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ScriptTask_0o4smqp_di" bpmnElement="ScriptTask_0o4smqp">
-        <dc:Bounds x="202" y="333" width="100" height="80" />
+        <dc:Bounds x="265" y="731" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_14eadeb_di" bpmnElement="SequenceFlow_14eadeb">
-        <di:waypoint xsi:type="dc:Point" x="302" y="373" />
-        <di:waypoint xsi:type="dc:Point" x="329" y="373" />
-        <di:waypoint xsi:type="dc:Point" x="329" y="373" />
-        <di:waypoint xsi:type="dc:Point" x="380" y="373" />
+        <di:waypoint xsi:type="dc:Point" x="365" y="771" />
+        <di:waypoint xsi:type="dc:Point" x="392" y="771" />
+        <di:waypoint xsi:type="dc:Point" x="392" y="771" />
+        <di:waypoint xsi:type="dc:Point" x="443" y="771" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="344" y="373" width="0" height="0" />
+          <dc:Bounds x="407" y="771" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ExclusiveGateway_1x5i9c1_di" bpmnElement="ExclusiveGateway_1x5i9c1" isMarkerVisible="true">
-        <dc:Bounds x="662" y="72" width="50" height="50" />
+        <dc:Bounds x="314" y="467" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="662" y="44" width="50" height="14" />
+          <dc:Bounds x="314" y="439" width="50" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="EndEvent_143akoz_di" bpmnElement="EndEvent_143akoz">
-        <dc:Bounds x="669" y="185" width="36" height="36" />
+        <dc:Bounds x="321" y="580" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="687" y="221" width="0" height="0" />
+          <dc:Bounds x="417" y="965" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_1o4wwba_di" bpmnElement="SequenceFlow_1o4wwba">
-        <di:waypoint xsi:type="dc:Point" x="712" y="97" />
-        <di:waypoint xsi:type="dc:Point" x="749" y="97" />
-        <di:waypoint xsi:type="dc:Point" x="749" y="97" />
-        <di:waypoint xsi:type="dc:Point" x="797" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="364" y="492" />
+        <di:waypoint xsi:type="dc:Point" x="401" y="492" />
+        <di:waypoint xsi:type="dc:Point" x="401" y="492" />
+        <di:waypoint xsi:type="dc:Point" x="449" y="492" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="747" y="94" width="18" height="14" />
+          <dc:Bounds x="399" y="489" width="18" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_1mdnv3l_di" bpmnElement="SequenceFlow_1mdnv3l">
-        <di:waypoint xsi:type="dc:Point" x="687" y="122" />
-        <di:waypoint xsi:type="dc:Point" x="687" y="149" />
-        <di:waypoint xsi:type="dc:Point" x="687" y="149" />
-        <di:waypoint xsi:type="dc:Point" x="687" y="185" />
+        <di:waypoint xsi:type="dc:Point" x="339" y="517" />
+        <di:waypoint xsi:type="dc:Point" x="339" y="544" />
+        <di:waypoint xsi:type="dc:Point" x="339" y="544" />
+        <di:waypoint xsi:type="dc:Point" x="339" y="580" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="661" y="126.56139708236196" width="12" height="12" />
+          <dc:Bounds x="313" y="522" width="12" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0y5991s_di" bpmnElement="IntermediateThrowEvent_0y5991s">
+        <dc:Bounds x="587" y="79" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="568" y="120" width="74" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_16vhtu8_di" bpmnElement="SequenceFlow_16vhtu8">
+        <di:waypoint xsi:type="dc:Point" x="442" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="587" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="515" y="82" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_00tv706_di" bpmnElement="IntermediateCatchEvent_00tv706">
+        <dc:Bounds x="-6" y="272" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-19" y="308" width="59" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1aouco1_di" bpmnElement="IntermediateCatchEvent_1aouco1">
+        <dc:Bounds x="-6" y="474" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="-11" y="510" width="43" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1tbopzu_di" bpmnElement="IntermediateThrowEvent_1tbopzu">
+        <dc:Bounds x="852" y="272" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="835" y="313" width="70" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1vr3ks5_di" bpmnElement="ScriptTask_1vr3ks5">
+        <dc:Bounds x="112" y="250" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1oc1h9q_di" bpmnElement="CallActivity_1oc1h9q">
+        <dc:Bounds x="342" y="250" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_04zaa1o_di" bpmnElement="ScriptTask_04zaa1o">
+        <dc:Bounds x="555" y="250" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0xhu1k3_di" bpmnElement="SequenceFlow_0xhu1k3">
+        <di:waypoint xsi:type="dc:Point" x="212" y="290" />
+        <di:waypoint xsi:type="dc:Point" x="342" y="290" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="277" y="275" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1o3ihrh_di" bpmnElement="SequenceFlow_1o3ihrh">
+        <di:waypoint xsi:type="dc:Point" x="442" y="290" />
+        <di:waypoint xsi:type="dc:Point" x="555" y="290" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="499" y="275" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1tfe975_di" bpmnElement="SequenceFlow_1tfe975">
+        <di:waypoint xsi:type="dc:Point" x="30" y="290" />
+        <di:waypoint xsi:type="dc:Point" x="69" y="290" />
+        <di:waypoint xsi:type="dc:Point" x="69" y="290" />
+        <di:waypoint xsi:type="dc:Point" x="112" y="290" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="84" y="290" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_14ajbme_di" bpmnElement="SequenceFlow_14ajbme">
+        <di:waypoint xsi:type="dc:Point" x="655" y="290" />
+        <di:waypoint xsi:type="dc:Point" x="852" y="290" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="754" y="265" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1hjh5zy_di" bpmnElement="SequenceFlow_1hjh5zy">
+        <di:waypoint xsi:type="dc:Point" x="30" y="492" />
+        <di:waypoint xsi:type="dc:Point" x="112" y="492" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="71" y="467" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
     </bpmndi:BPMNPlane>
   </bpmndi:BPMNDiagram>
-</bpmn2:definitions>
+</bpmn2:definitions>
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateNetworkInstance.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateNetworkInstance.bpmn
index 0316e26..c9d4720 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateNetworkInstance.bpmn
+++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateNetworkInstance.bpmn
@@ -112,30 +112,8 @@
 def CreateNetworkInstance = new CreateNetworkInstance()
 CreateNetworkInstance.prepareDBRequestError(execution)]]></bpmn2:script>
       </bpmn2:scriptTask>
-      <bpmn2:serviceTask id="ServiceTask_0sztuly" name="Call DB Infra Error Update">
-        <bpmn2:extensionElements>
-          <camunda:connector>
-            <camunda:inputOutput>
-              <camunda:inputParameter name="url">${URN_mso_adapters_openecomp_db_endpoint}</camunda:inputParameter>
-              <camunda:inputParameter name="payload">${CRENI_createDBRequest}</camunda:inputParameter>
-              <camunda:inputParameter name="headers">
-                <camunda:map>
-                  <camunda:entry key="content-type">application/soap+xml</camunda:entry>
-                  <camunda:entry key="Authorization">#{BasicAuthHeaderValueDB}</camunda:entry>
-                </camunda:map>
-              </camunda:inputParameter>
-              <camunda:inputParameter name="method">POST</camunda:inputParameter>
-              <camunda:outputParameter name="CRENI_createDBResponse">${response}</camunda:outputParameter>
-              <camunda:outputParameter name="CRENI_dbReturnCode">${statusCode}</camunda:outputParameter>
-            </camunda:inputOutput>
-            <camunda:connectorId>http-connector</camunda:connectorId>
-          </camunda:connector>
-        </bpmn2:extensionElements>
-        <bpmn2:incoming>SequenceFlow_1s5niqb</bpmn2:incoming>
-        <bpmn2:outgoing>SequenceFlow_06s5eu4</bpmn2:outgoing>
-      </bpmn2:serviceTask>
       <bpmn2:scriptTask id="ScriptTask_1hql91g" name="Prepare FalloutHandler" scriptFormat="groovy">
-        <bpmn2:incoming>SequenceFlow_06s5eu4</bpmn2:incoming>
+        <bpmn2:incoming>SequenceFlow_1s5niqb</bpmn2:incoming>
         <bpmn2:outgoing>SequenceFlow_1reso2f</bpmn2:outgoing>
         <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
 def CreateNetworkInstance = new CreateNetworkInstance()
@@ -153,8 +131,7 @@
         <bpmn2:incoming>SequenceFlow_1reso2f</bpmn2:incoming>
         <bpmn2:outgoing>SequenceFlow_1ghqolv</bpmn2:outgoing>
       </bpmn2:callActivity>
-      <bpmn2:sequenceFlow id="SequenceFlow_1s5niqb" sourceRef="ScriptTask_1akfe0b" targetRef="ServiceTask_0sztuly" />
-      <bpmn2:sequenceFlow id="SequenceFlow_06s5eu4" sourceRef="ServiceTask_0sztuly" targetRef="ScriptTask_1hql91g" />
+      <bpmn2:sequenceFlow id="SequenceFlow_1s5niqb" sourceRef="ScriptTask_1akfe0b" targetRef="ScriptTask_1hql91g" />
       <bpmn2:sequenceFlow id="SequenceFlow_1reso2f" sourceRef="ScriptTask_1hql91g" targetRef="CallActivity_1ksm1dz" />
       <bpmn2:sequenceFlow id="SequenceFlow_1ghqolv" sourceRef="CallActivity_1ksm1dz" targetRef="EndEvent_1rqikib" />
       <bpmn2:sequenceFlow id="SequenceFlow_0n4umjf" sourceRef="StartEvent_110xxgx" targetRef="ScriptTask_1akfe0b" />
@@ -273,10 +250,7 @@
         <dc:Bounds x="1071" y="57" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ScriptTask_1akfe0b_di" bpmnElement="ScriptTask_1akfe0b">
-        <dc:Bounds x="258" y="520" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ServiceTask_0sztuly_di" bpmnElement="ServiceTask_0sztuly">
-        <dc:Bounds x="453" y="520" width="100" height="80" />
+        <dc:Bounds x="300" y="520" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0xxvjxq_di" bpmnElement="SequenceFlow_0xxvjxq">
         <di:waypoint xsi:type="dc:Point" x="1007" y="97" />
@@ -286,7 +260,7 @@
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ScriptTask_1hql91g_di" bpmnElement="ScriptTask_1hql91g">
-        <dc:Bounds x="632" y="520" width="100" height="80" />
+        <dc:Bounds x="543" y="520" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="CallActivity_1ksm1dz_di" bpmnElement="CallActivity_1ksm1dz">
         <dc:Bounds x="807" y="520" width="100" height="80" />
@@ -307,24 +281,17 @@
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_1s5niqb_di" bpmnElement="SequenceFlow_1s5niqb">
-        <di:waypoint xsi:type="dc:Point" x="358" y="560" />
-        <di:waypoint xsi:type="dc:Point" x="453" y="560" />
+        <di:waypoint xsi:type="dc:Point" x="400" y="560" />
+        <di:waypoint xsi:type="dc:Point" x="543" y="560" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="406" y="545" width="0" height="0" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_06s5eu4_di" bpmnElement="SequenceFlow_06s5eu4">
-        <di:waypoint xsi:type="dc:Point" x="553" y="560" />
-        <di:waypoint xsi:type="dc:Point" x="632" y="560" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="593" y="545" width="0" height="0" />
+          <dc:Bounds x="472" y="545" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_1reso2f_di" bpmnElement="SequenceFlow_1reso2f">
-        <di:waypoint xsi:type="dc:Point" x="732" y="560" />
+        <di:waypoint xsi:type="dc:Point" x="643" y="560" />
         <di:waypoint xsi:type="dc:Point" x="807" y="560" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="770" y="545" width="0" height="0" />
+          <dc:Bounds x="725" y="545" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_1ghqolv_di" bpmnElement="SequenceFlow_1ghqolv">
@@ -343,9 +310,9 @@
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0n4umjf_di" bpmnElement="SequenceFlow_0n4umjf">
         <di:waypoint xsi:type="dc:Point" x="188" y="560" />
-        <di:waypoint xsi:type="dc:Point" x="258" y="560" />
+        <di:waypoint xsi:type="dc:Point" x="300" y="560" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="223" y="545" width="0" height="0" />
+          <dc:Bounds x="244" y="545" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0rt8wax_di" bpmnElement="SequenceFlow_0rt8wax">
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateVFCNSResource.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateVFCNSResource.bpmn
index e6d4af3..e4254f2 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateVFCNSResource.bpmn
+++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateVFCNSResource.bpmn
@@ -34,10 +34,10 @@
       <bpmn:outgoing>createNSFailed_SequenceFlow</bpmn:outgoing>
     </bpmn:exclusiveGateway>
     <bpmn:sequenceFlow id="createNSSuccess_SequenceFlow" name="yes" sourceRef="ExclusiveGateway_0zfksms" targetRef="instantiate_NSTask">
-      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("nsInstanceId" )  != null && execution.getVariable("nsInstanceId" )  != "" )}]]></bpmn:conditionExpression>
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("nsInstanceName" )  != null && execution.getVariable("nsInstanceName" )  != "" )}]]></bpmn:conditionExpression>
     </bpmn:sequenceFlow>
     <bpmn:sequenceFlow id="createNSFailed_SequenceFlow" name="no" sourceRef="ExclusiveGateway_0zfksms" targetRef="createNSFailed_EndEvent">
-      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("nsInstanceId" )  == null || execution.getVariable("nsInstanceId" )  == "" )}]]></bpmn:conditionExpression>
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{(execution.getVariable("nsInstanceName" )  == null || execution.getVariable("nsInstanceName" )  == "" )}]]></bpmn:conditionExpression>
     </bpmn:sequenceFlow>
     <bpmn:exclusiveGateway id="ExclusiveGateway_1is7zys" name="Instantiate NS Success?">
       <bpmn:incoming>SequenceFlow_1ywe21t</bpmn:incoming>
@@ -80,7 +80,7 @@
 def dcsi = new CreateVFCNSResource()
 dcsi.queryNSProgress(execution)]]></bpmn:script>
     </bpmn:scriptTask>
-    <bpmn:scriptTask id="finishNSCreate_Task" name="Add NS RelationShip" scriptFormat="groovy">
+    <bpmn:scriptTask id="finishNSCreate_Task" name="Finish NS Create">
       <bpmn:incoming>operationFinished_SequenceFlow</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_0cq2q6g</bpmn:outgoing>
       <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
@@ -258,4 +258,4 @@
       </bpmndi:BPMNEdge>
     </bpmndi:BPMNPlane>
   </bpmndi:BPMNDiagram>
-</bpmn:definitions>
\ No newline at end of file
+</bpmn:definitions>
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateVcpeResCustService.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateVcpeResCustService.bpmn
index 9fe6815..2120e12 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateVcpeResCustService.bpmn
+++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateVcpeResCustService.bpmn
@@ -1,5 +1,5 @@
 <?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.9.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
+<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.8.2" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
   <bpmn2:process id="CreateVcpeResCustService" name="CreateVcpeResCustService" isExecutable="true">
     <bpmn2:scriptTask id="sendSyncAckResponse_ScriptTask" name="Send Sync Ack Response" scriptFormat="groovy">
       <bpmn2:incoming>SequenceFlow_7</bpmn2:incoming>
@@ -101,6 +101,7 @@
         <camunda:in source="subscriptionServiceType" target="subscriptionServiceType" />
         <camunda:in source="productFamilyId" target="productFamilyId" />
         <camunda:in source="sdncVersion" target="sdncVersion" />
+        <camunda:in source="bpmnRequest" target="requestJson" />
       </bpmn2:extensionElements>
       <bpmn2:incoming>SequenceFlow_0j6sjye</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_1ky2sv9</bpmn2:outgoing>
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateVfModuleInfra.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateVfModuleInfra.bpmn
index 84ab417..0abbdd1 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateVfModuleInfra.bpmn
+++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateVfModuleInfra.bpmn
@@ -37,6 +37,7 @@
         <camunda:in source="CVFMI_vfModuleModelInfo" target="vfModuleModelInfo" />
         <camunda:in source="CVFMI_usePreload" target="usePreload" />
         <camunda:in source="CVFMI_vfModuleInputParams" target="vfModuleInputParams" />
+        <camunda:in source="CVFMI_aLaCarte" target="aLaCarte" />
       </bpmn2:extensionElements>
       <bpmn2:incoming>SequenceFlow_7</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_4</bpmn2:outgoing>
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateVnfInfra.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateVnfInfra.bpmn
index e78bde6..441e684 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateVnfInfra.bpmn
+++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/CreateVnfInfra.bpmn
@@ -1,5 +1,5 @@
 <?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="_DkzPAHB4EeaJwpcpVN5gXw" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
+<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="_DkzPAHB4EeaJwpcpVN5gXw" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.8.2" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
   <bpmn2:process id="CreateVnfInfra" name="CreateVnfInfra" isExecutable="true">
     <bpmn2:startEvent id="StartEvent_1">
       <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing>
@@ -41,7 +41,7 @@
         <camunda:in source="CREVI_vnfResourceDecomposition" target="vnfResourceDecomposition" />
       </bpmn2:extensionElements>
       <bpmn2:incoming>SequenceFlow_0ed0uiq</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_0lso26t</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0w0m5fr</bpmn2:outgoing>
     </bpmn2:callActivity>
     <bpmn2:subProcess id="javaErrorHandlingSubProcess" name="Java Exception Handling Sub Process" triggeredByEvent="true">
       <bpmn2:scriptTask id="processJavaError" name="Process Error" scriptFormat="groovy">
@@ -100,7 +100,7 @@
       <bpmn2:sequenceFlow id="SequenceFlow_12" name="" sourceRef="StartEvent_3" targetRef="sendErrorResponse" />
     </bpmn2:subProcess>
     <bpmn2:scriptTask id="postProcess" name="Prepare Completion Handler" scriptFormat="groovy">
-      <bpmn2:incoming>SequenceFlow_0lso26t</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_01mjjk3</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_16</bpmn2:outgoing>
       <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
 CreateVnfInfra createVnf = new CreateVnfInfra()
@@ -122,7 +122,6 @@
       <bpmn2:outgoing>SequenceFlow_17</bpmn2:outgoing>
     </bpmn2:callActivity>
     <bpmn2:sequenceFlow id="SequenceFlow_17" name="" sourceRef="callCompletionHandler" targetRef="EndEvent_3" />
-    <bpmn2:sequenceFlow id="SequenceFlow_0lso26t" sourceRef="CreateVNF" targetRef="postProcess" />
     <bpmn2:sequenceFlow id="SequenceFlow_0ed0uiq" sourceRef="QueryCatalogDB" targetRef="CreateVNF" />
     <bpmn2:scriptTask id="QueryCatalogDB" name="Query Catalog DB" scriptFormat="groovy">
       <bpmn2:incoming>SequenceFlow_3</bpmn2:incoming>
@@ -131,6 +130,23 @@
 CreateVnfInfra createVnf = new CreateVnfInfra()
 createVnf.queryCatalogDB(execution)]]></bpmn2:script>
     </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_0w0m5fr" sourceRef="CreateVNF" targetRef="Task_1gmhhag" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0s4i7px" sourceRef="Task_1gmhhag" targetRef="Task_1307onz" />
+    <bpmn2:sequenceFlow id="SequenceFlow_01mjjk3" sourceRef="Task_1307onz" targetRef="postProcess" />
+    <bpmn2:scriptTask id="Task_1gmhhag" name="Create Platform" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0w0m5fr</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0s4i7px</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+CreateVnfInfra createVnf = new CreateVnfInfra()
+createVnf.createPlatform(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="Task_1307onz" name="Create Line-of-Business" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0s4i7px</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_01mjjk3</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+CreateVnfInfra createVnf = new CreateVnfInfra()
+createVnf.createLineOfBusiness(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
   </bpmn2:process>
   <bpmn2:error id="Error_1" name="Java Lang Exception" errorCode="java.lang.Exception" />
   <bpmn2:error id="Error_2" name="MSO Workflow Exception" errorCode="MSOWorkflowException" />
@@ -173,9 +189,9 @@
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="_BPMNShape_EndEvent_228" bpmnElement="EndEvent_3">
-        <dc:Bounds x="1090" y="222" width="36" height="36" />
+        <dc:Bounds x="1340" y="222" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1108" y="263" width="0" height="0" />
+          <dc:Bounds x="1313" y="263" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="_BPMNShape_SubProcess_32" bpmnElement="javaErrorHandlingSubProcess" isExpanded="true">
@@ -263,30 +279,23 @@
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_325" bpmnElement="postProcess">
-        <dc:Bounds x="766" y="200" width="100" height="80" />
+        <dc:Bounds x="1042" y="200" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_20" bpmnElement="SequenceFlow_16" sourceElement="_BPMNShape_ScriptTask_325" targetElement="_BPMNShape_CallActivity_69">
-        <di:waypoint xsi:type="dc:Point" x="866" y="240" />
-        <di:waypoint xsi:type="dc:Point" x="907" y="240" />
+        <di:waypoint xsi:type="dc:Point" x="1142" y="240" />
+        <di:waypoint xsi:type="dc:Point" x="1192" y="240" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="887" y="225" width="0" height="0" />
+          <dc:Bounds x="1122" y="225" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="_BPMNShape_CallActivity_69" bpmnElement="callCompletionHandler">
-        <dc:Bounds x="907" y="200" width="100" height="80" />
+        <dc:Bounds x="1192" y="200" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_21" bpmnElement="SequenceFlow_17" sourceElement="_BPMNShape_CallActivity_69" targetElement="_BPMNShape_EndEvent_228">
-        <di:waypoint xsi:type="dc:Point" x="1007" y="240" />
-        <di:waypoint xsi:type="dc:Point" x="1090" y="240" />
+        <di:waypoint xsi:type="dc:Point" x="1292" y="240" />
+        <di:waypoint xsi:type="dc:Point" x="1340" y="240" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1049" y="225" width="0" height="0" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0lso26t_di" bpmnElement="SequenceFlow_0lso26t">
-        <di:waypoint xsi:type="dc:Point" x="718" y="240" />
-        <di:waypoint xsi:type="dc:Point" x="766" y="240" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="742" y="225" width="0" height="0" />
+          <dc:Bounds x="1271" y="225" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0ed0uiq_di" bpmnElement="SequenceFlow_0ed0uiq">
@@ -299,6 +308,33 @@
       <bpmndi:BPMNShape id="ScriptTask_0z4xe39_di" bpmnElement="QueryCatalogDB">
         <dc:Bounds x="478" y="200" width="100" height="80" />
       </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0w0m5fr_di" bpmnElement="SequenceFlow_0w0m5fr">
+        <di:waypoint xsi:type="dc:Point" x="718" y="240" />
+        <di:waypoint xsi:type="dc:Point" x="757" y="240" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="737.5" y="219" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0s4i7px_di" bpmnElement="SequenceFlow_0s4i7px">
+        <di:waypoint xsi:type="dc:Point" x="857" y="240" />
+        <di:waypoint xsi:type="dc:Point" x="889" y="240" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="873" y="219" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_01mjjk3_di" bpmnElement="SequenceFlow_01mjjk3">
+        <di:waypoint xsi:type="dc:Point" x="989" y="240" />
+        <di:waypoint xsi:type="dc:Point" x="1042" y="240" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1015.5" y="219" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1wah48v_di" bpmnElement="Task_1gmhhag">
+        <dc:Bounds x="757" y="200" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0fy16oq_di" bpmnElement="Task_1307onz">
+        <dc:Bounds x="889" y="200" width="100" height="80" />
+      </bpmndi:BPMNShape>
     </bpmndi:BPMNPlane>
   </bpmndi:BPMNDiagram>
 </bpmn2:definitions>
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/DeleteCustomE2EServiceInstance.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/DeleteCustomE2EServiceInstance.bpmn
index 2983589..289128d 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/DeleteCustomE2EServiceInstance.bpmn
+++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/DeleteCustomE2EServiceInstance.bpmn
@@ -139,7 +139,7 @@
   </bpmn:process>
   <bpmn:error id="Error_1erlsmy" name="MSO Workflow Exception" errorCode="MSOWorkflowException" />
   <bpmndi:BPMNDiagram id="BPMNDiagram_1">
-    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DeleteCustomE2EServiceInstance">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Process_1">
       <bpmndi:BPMNShape id="StartEvent_00m8zen_di" bpmnElement="StartEvent_00m8zen">
         <dc:Bounds x="577" y="209" width="36" height="36" />
         <bpmndi:BPMNLabel>
@@ -150,95 +150,99 @@
         <dc:Bounds x="834" y="660" width="394" height="188" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="CallActivity_1vyx9hu_di" bpmnElement="CallActivity_1vyx9hu">
-        <dc:Bounds x="1159" y="187" width="100" height="80" />
+        <dc:Bounds x="1121" y="187" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="EndEvent_0db8bs6_di" bpmnElement="EndEvent_0db8bs6">
-        <dc:Bounds x="1686" y="304" width="36" height="36" />
+        <dc:Bounds x="1646" y="304" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1696" y="340" width="22" height="12" />
+          <dc:Bounds x="1657" y="340" width="19" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ScriptTask_0a63hms_di" bpmnElement="ScriptTask_0a63hms">
-        <dc:Bounds x="724" y="187" width="100" height="80" />
+        <dc:Bounds x="741" y="187" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ScriptTask_1fzpbop_di" bpmnElement="ScriptTask_1fzpbop">
-        <dc:Bounds x="1493" y="187" width="100" height="80" />
+        <dc:Bounds x="1453" y="187" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="CallActivity_1wx4ihe_di" bpmnElement="CallActivity_1wx4ihe">
-        <dc:Bounds x="1654" y="187" width="100" height="80" />
+        <dc:Bounds x="1614" y="187" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="SubProcess_1vbcima_di" bpmnElement="SubProcess_1vbcima" isExpanded="true">
         <dc:Bounds x="736" y="374" width="679" height="194" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ScriptTask_1mao77y_di" bpmnElement="ScriptTask_1mao77y">
-        <dc:Bounds x="936" y="187" width="100" height="80" />
+        <dc:Bounds x="920" y="187" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ExclusiveGateway_0vu8gx6_di" bpmnElement="ExclusiveGateway_0vu8gx6" isMarkerVisible="true">
-        <dc:Bounds x="1358" y="202" width="50" height="50" />
+        <dc:Bounds x="1318" y="202" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1358" y="174" width="50" height="12" />
+          <dc:Bounds x="1318" y="174" width="49" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="EndEvent_1i1g9s6_di" bpmnElement="EndEvent_1i1g9s6">
-        <dc:Bounds x="1365" y="304" width="36" height="36" />
+        <dc:Bounds x="1325" y="304" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1293" y="340" width="90" height="12" />
+          <dc:Bounds x="1298" y="340" width="0" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_1wxumid_di" bpmnElement="SequenceFlow_1wxumid">
         <di:waypoint xsi:type="dc:Point" x="613" y="227" />
-        <di:waypoint xsi:type="dc:Point" x="724" y="227" />
+        <di:waypoint xsi:type="dc:Point" x="741" y="227" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="623.5" y="206" width="90" height="12" />
+          <dc:Bounds x="587" y="212" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0zf2qyk_di" bpmnElement="SequenceFlow_0zf2qyk">
-        <di:waypoint xsi:type="dc:Point" x="1036" y="227" />
-        <di:waypoint xsi:type="dc:Point" x="1159" y="227" />
+        <di:waypoint xsi:type="dc:Point" x="1020" y="227" />
+        <di:waypoint xsi:type="dc:Point" x="1073" y="227" />
+        <di:waypoint xsi:type="dc:Point" x="1073" y="227" />
+        <di:waypoint xsi:type="dc:Point" x="1121" y="227" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1052.5" y="206" width="90" height="12" />
+          <dc:Bounds x="1043" y="227" width="0" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_07hrbs0_di" bpmnElement="SequenceFlow_07hrbs0">
-        <di:waypoint xsi:type="dc:Point" x="1259" y="227" />
-        <di:waypoint xsi:type="dc:Point" x="1358" y="227" />
+        <di:waypoint xsi:type="dc:Point" x="1221" y="227" />
+        <di:waypoint xsi:type="dc:Point" x="1318" y="227" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1263.5" y="206" width="90" height="12" />
+          <dc:Bounds x="1225.5" y="212" width="0" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_1ab5l2q_di" bpmnElement="SequenceFlow_1ab5l2q">
-        <di:waypoint xsi:type="dc:Point" x="1704" y="267" />
-        <di:waypoint xsi:type="dc:Point" x="1704" y="304" />
+        <di:waypoint xsi:type="dc:Point" x="1664" y="267" />
+        <di:waypoint xsi:type="dc:Point" x="1664" y="304" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1674" y="280" width="90" height="12" />
+          <dc:Bounds x="1634" y="279.5" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0yowshs_di" bpmnElement="SequenceFlow_0yowshs">
-        <di:waypoint xsi:type="dc:Point" x="824" y="227" />
-        <di:waypoint xsi:type="dc:Point" x="936" y="227" />
+        <di:waypoint xsi:type="dc:Point" x="841" y="227" />
+        <di:waypoint xsi:type="dc:Point" x="920" y="227" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="835" y="206" width="90" height="12" />
+          <dc:Bounds x="835.5" y="206" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_04urx2e_di" bpmnElement="SequenceFlow_04urx2e">
-        <di:waypoint xsi:type="dc:Point" x="1408" y="227" />
-        <di:waypoint xsi:type="dc:Point" x="1493" y="227" />
+        <di:waypoint xsi:type="dc:Point" x="1368" y="227" />
+        <di:waypoint xsi:type="dc:Point" x="1453" y="227" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1410" y="203" width="20" height="12" />
+          <dc:Bounds x="1370.25" y="203" width="18" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_1ii935p_di" bpmnElement="SequenceFlow_1ii935p">
-        <di:waypoint xsi:type="dc:Point" x="1593" y="227" />
-        <di:waypoint xsi:type="dc:Point" x="1654" y="227" />
+        <di:waypoint xsi:type="dc:Point" x="1553" y="227" />
+        <di:waypoint xsi:type="dc:Point" x="1614" y="227" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1535" y="212" width="90" height="12" />
+          <dc:Bounds x="1495" y="212" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_1t6ekab_di" bpmnElement="SequenceFlow_1t6ekab">
-        <di:waypoint xsi:type="dc:Point" x="1383" y="252" />
-        <di:waypoint xsi:type="dc:Point" x="1383" y="304" />
+        <di:waypoint xsi:type="dc:Point" x="1343" y="252" />
+        <di:waypoint xsi:type="dc:Point" x="1343" y="277" />
+        <di:waypoint xsi:type="dc:Point" x="1343" y="277" />
+        <di:waypoint xsi:type="dc:Point" x="1343" y="304" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1391" y="277" width="15" height="12" />
+          <dc:Bounds x="1352" y="277" width="12" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ScriptTask_1c6ogpt_di" bpmnElement="ScriptTask_1c6ogpt">
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/DeleteNetworkInstance.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/DeleteNetworkInstance.bpmn
index 3b5c629..1e868de 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/DeleteNetworkInstance.bpmn
+++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/DeleteNetworkInstance.bpmn
@@ -1,113 +1,113 @@
-<?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.4.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
-  <bpmn2:process id="DeleteNetworkInstance" name="DeleteNetworkInstance" isExecutable="true">
-    <bpmn2:startEvent id="createNetwork_startEvent" name="Start Flow">
-      <bpmn2:outgoing>SequenceFlow_0lp2z7l</bpmn2:outgoing>
-    </bpmn2:startEvent>
-    <bpmn2:subProcess id="unexpectedErrors_SubProcess" name="Sub-process for UnexpectedErrors" triggeredByEvent="true">
-      <bpmn2:scriptTask id="ScriptTask_1" name="Log / Print Unexpected Error" scriptFormat="groovy">
-        <bpmn2:incoming>SequenceFlow_10</bpmn2:incoming>
-        <bpmn2:outgoing>SequenceFlow_14</bpmn2:outgoing>
+<?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.4.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
+  <bpmn2:process id="DeleteNetworkInstance" name="DeleteNetworkInstance" isExecutable="true">
+    <bpmn2:startEvent id="createNetwork_startEvent" name="Start Flow">
+      <bpmn2:outgoing>SequenceFlow_0lp2z7l</bpmn2:outgoing>
+    </bpmn2:startEvent>
+    <bpmn2:subProcess id="unexpectedErrors_SubProcess" name="Sub-process for UnexpectedErrors" triggeredByEvent="true">
+      <bpmn2:scriptTask id="ScriptTask_1" name="Log / Print Unexpected Error" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_10</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_14</bpmn2:outgoing>
         <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
 def networkMod = new DeleteNetworkInstance()
-networkMod.processJavaException(execution)]]></bpmn2:script>
-      </bpmn2:scriptTask>
-      <bpmn2:sequenceFlow id="SequenceFlow_14" name="" sourceRef="ScriptTask_1" targetRef="EndEvent_1" />
-      <bpmn2:startEvent id="StartEvent_1">
-        <bpmn2:outgoing>SequenceFlow_10</bpmn2:outgoing>
-        <bpmn2:errorEventDefinition id="ErrorEventDefinition_2" errorRef="Error_1" />
-      </bpmn2:startEvent>
-      <bpmn2:sequenceFlow id="SequenceFlow_10" name="" sourceRef="StartEvent_1" targetRef="ScriptTask_1" />
-      <bpmn2:endEvent id="EndEvent_1">
-        <bpmn2:incoming>SequenceFlow_14</bpmn2:incoming>
-      </bpmn2:endEvent>
-    </bpmn2:subProcess>
-    <bpmn2:callActivity id="doDeleteNetworkInstance_CallActivity" name="DoDelete Network Instance&#10;" calledElement="DoDeleteNetworkInstance">
-      <bpmn2:extensionElements>
-        <camunda:out source="WorkflowException" target="WorkflowException" />
-        <camunda:in source="msoRequestId" target="msoRequestId" />
-        <camunda:out source="rollbackData" target="rollbackData" />
-        <camunda:in source="networkId" target="networkId" />
-        <camunda:in source="networkName" target="networkName" />
-        <camunda:in source="networkModelInfo" target="networkModelInfo" />
-        <camunda:in source="lcpCloudRegionId" target="lcpCloudRegionId" />
-        <camunda:in source="tenantId" target="tenantId" />
-        <camunda:in source="productFamilyId" target="productFamilyId" />
-        <camunda:in source="disableRollback" target="disableRollback" />
-        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
-        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
-        <camunda:in source="networkInputParams" target="networkInputParams" />
-        <camunda:out source="rolledBack" target="rolledBack" />
-        <camunda:out source="networkId" target="networkId" />
-        <camunda:out source="networkName" target="networkName" />
-        <camunda:out source="networkOutputParams" target="networkOutputParams" />
-        <camunda:in source="bpmnRequest" target="bpmnRequest" />
-        <camunda:in source="failIfExists" target="failIfExists" />
-        <camunda:in source="sdncVersion" target="sdncVersion" />
-        <camunda:in source="requestId" target="requestId" />
-        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
-        <camunda:in source="requestAction" target="requestAction" />
-        <camunda:in source="mso-request-id" target="mso-request-id" />
-        <camunda:in source="subscriptionServiceType" target="subscriptionServiceType" />
-        <camunda:in source="globalSubscriberId" target="globalSubscriberId" />
-        <camunda:in source="serviceModelInfo" target="serviceModelInfo" />
-      </bpmn2:extensionElements>
-      <bpmn2:incoming>SequenceFlow_0eto8sn</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_1lj31zp</bpmn2:outgoing>
-    </bpmn2:callActivity>
-    <bpmn2:endEvent id="EndEvent_0o440av" name="End">
-      <bpmn2:incoming>SequenceFlow_0x3znm5</bpmn2:incoming>
-    </bpmn2:endEvent>
-    <bpmn2:scriptTask id="ScriptTask_09qt0pi" name="DeleteNetwork PostProcess Success&#10;" scriptFormat="groovy">
-      <bpmn2:incoming>SequenceFlow_095crcd</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_0x3znm5</bpmn2:outgoing>
+networkMod.processJavaException(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_14" name="" sourceRef="ScriptTask_1" targetRef="EndEvent_1" />
+      <bpmn2:startEvent id="StartEvent_1">
+        <bpmn2:outgoing>SequenceFlow_10</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition id="ErrorEventDefinition_2" errorRef="Error_1" />
+      </bpmn2:startEvent>
+      <bpmn2:sequenceFlow id="SequenceFlow_10" name="" sourceRef="StartEvent_1" targetRef="ScriptTask_1" />
+      <bpmn2:endEvent id="EndEvent_1">
+        <bpmn2:incoming>SequenceFlow_14</bpmn2:incoming>
+      </bpmn2:endEvent>
+    </bpmn2:subProcess>
+    <bpmn2:callActivity id="doDeleteNetworkInstance_CallActivity" name="DoDelete Network Instance&#10;" calledElement="DoDeleteNetworkInstance">
+      <bpmn2:extensionElements>
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:out source="rollbackData" target="rollbackData" />
+        <camunda:in source="networkId" target="networkId" />
+        <camunda:in source="networkName" target="networkName" />
+        <camunda:in source="networkModelInfo" target="networkModelInfo" />
+        <camunda:in source="lcpCloudRegionId" target="lcpCloudRegionId" />
+        <camunda:in source="tenantId" target="tenantId" />
+        <camunda:in source="productFamilyId" target="productFamilyId" />
+        <camunda:in source="disableRollback" target="disableRollback" />
+        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:in source="networkInputParams" target="networkInputParams" />
+        <camunda:out source="rolledBack" target="rolledBack" />
+        <camunda:out source="networkId" target="networkId" />
+        <camunda:out source="networkName" target="networkName" />
+        <camunda:out source="networkOutputParams" target="networkOutputParams" />
+        <camunda:in source="bpmnRequest" target="bpmnRequest" />
+        <camunda:in source="failIfExists" target="failIfExists" />
+        <camunda:in source="sdncVersion" target="sdncVersion" />
+        <camunda:in source="requestId" target="requestId" />
+        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+        <camunda:in source="requestAction" target="requestAction" />
+        <camunda:in source="mso-request-id" target="mso-request-id" />
+        <camunda:in source="subscriptionServiceType" target="subscriptionServiceType" />
+        <camunda:in source="globalSubscriberId" target="globalSubscriberId" />
+        <camunda:in source="serviceModelInfo" target="serviceModelInfo" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_0eto8sn</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1lj31zp</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:endEvent id="EndEvent_0o440av" name="End">
+      <bpmn2:incoming>SequenceFlow_0x3znm5</bpmn2:incoming>
+    </bpmn2:endEvent>
+    <bpmn2:scriptTask id="ScriptTask_09qt0pi" name="DeleteNetwork PostProcess Success&#10;" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_095crcd</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0x3znm5</bpmn2:outgoing>
       <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
 def DeleteNetworkInstance = new  DeleteNetworkInstance()
 DeleteNetworkInstance.postProcessResponse(execution)
-]]></bpmn2:script>
-    </bpmn2:scriptTask>
-    <bpmn2:sequenceFlow id="SequenceFlow_1lj31zp" sourceRef="doDeleteNetworkInstance_CallActivity" targetRef="ScriptTask_0cihgpv" />
-    <bpmn2:sequenceFlow id="SequenceFlow_0x3znm5" sourceRef="ScriptTask_09qt0pi" targetRef="EndEvent_0o440av" />
-    <bpmn2:scriptTask id="ScriptTask_0pvcr6j" name="PreProcess Incoming Request" scriptFormat="groovy">
-      <bpmn2:incoming>SequenceFlow_0lp2z7l</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_1ablr60</bpmn2:outgoing>
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_1lj31zp" sourceRef="doDeleteNetworkInstance_CallActivity" targetRef="ScriptTask_0cihgpv" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0x3znm5" sourceRef="ScriptTask_09qt0pi" targetRef="EndEvent_0o440av" />
+    <bpmn2:scriptTask id="ScriptTask_0pvcr6j" name="PreProcess Incoming Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0lp2z7l</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1ablr60</bpmn2:outgoing>
       <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
 def preProcess = new DeleteNetworkInstance()
-preProcess.preProcessRequest(execution)]]></bpmn2:script>
-    </bpmn2:scriptTask>
-    <bpmn2:sequenceFlow id="SequenceFlow_0lp2z7l" sourceRef="createNetwork_startEvent" targetRef="ScriptTask_0pvcr6j" />
-    <bpmn2:sequenceFlow id="SequenceFlow_1ablr60" sourceRef="ScriptTask_0pvcr6j" targetRef="Task_19xbdbu" />
-    <bpmn2:scriptTask id="ScriptTask_0cihgpv" name="Prepare Completion Request" scriptFormat="groovy">
-      <bpmn2:incoming>SequenceFlow_1lj31zp</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_0xxvjxq</bpmn2:outgoing>
+preProcess.preProcessRequest(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_0lp2z7l" sourceRef="createNetwork_startEvent" targetRef="ScriptTask_0pvcr6j" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1ablr60" sourceRef="ScriptTask_0pvcr6j" targetRef="Task_19xbdbu" />
+    <bpmn2:scriptTask id="ScriptTask_0cihgpv" name="Prepare Completion Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1lj31zp</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0xxvjxq</bpmn2:outgoing>
       <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
 def DeleteNetworkInstance = new DeleteNetworkInstance()
-DeleteNetworkInstance.prepareCompletion(execution)]]></bpmn2:script>
-    </bpmn2:scriptTask>
-    <bpmn2:callActivity id="CallActivity_0sevgre" name="Call CompleteMsoProcess" calledElement="CompleteMsoProcess">
-      <bpmn2:extensionElements>
-        <camunda:in source="DELNI_CompleteMsoProcessRequest" target="CompleteMsoProcessRequest" />
-        <camunda:in source="mso-request-id" target="mso-request-id" />
-        <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
-        <camunda:out source="CMSO_ResponseCode" target="CMSO_ResponseCode" />
-        <camunda:out source="CompleteMsoProcessResponse" target="CompleteMsoProcessResponse" />
-        <camunda:out source="CMSO_ErrorResponse" target="CMSO_ErrorResponse" />
-      </bpmn2:extensionElements>
-      <bpmn2:incoming>SequenceFlow_0xxvjxq</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_095crcd</bpmn2:outgoing>
-    </bpmn2:callActivity>
-    <bpmn2:sequenceFlow id="SequenceFlow_0xxvjxq" sourceRef="ScriptTask_0cihgpv" targetRef="CallActivity_0sevgre" />
-    <bpmn2:subProcess id="SubProcess_1k2112i" name="Sub-process for FalloutHandler" triggeredByEvent="true">
-      <bpmn2:startEvent id="StartEvent_110xxgx">
-        <bpmn2:outgoing>SequenceFlow_0n4umjf</bpmn2:outgoing>
-        <bpmn2:errorEventDefinition errorRef="Error_2" />
-      </bpmn2:startEvent>
-      <bpmn2:endEvent id="EndEvent_1rqikib">
-        <bpmn2:incoming>SequenceFlow_1ghqolv</bpmn2:incoming>
-      </bpmn2:endEvent>
-      <bpmn2:scriptTask id="ScriptTask_1akfe0b" name="Prepare DB Infra Error" scriptFormat="groovy">
-        <bpmn2:incoming>SequenceFlow_0n4umjf</bpmn2:incoming>
-        <bpmn2:outgoing>SequenceFlow_1s5niqb</bpmn2:outgoing>
+DeleteNetworkInstance.prepareCompletion(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="CallActivity_0sevgre" name="Call CompleteMsoProcess" calledElement="CompleteMsoProcess">
+      <bpmn2:extensionElements>
+        <camunda:in source="DELNI_CompleteMsoProcessRequest" target="CompleteMsoProcessRequest" />
+        <camunda:in source="mso-request-id" target="mso-request-id" />
+        <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
+        <camunda:out source="CMSO_ResponseCode" target="CMSO_ResponseCode" />
+        <camunda:out source="CompleteMsoProcessResponse" target="CompleteMsoProcessResponse" />
+        <camunda:out source="CMSO_ErrorResponse" target="CMSO_ErrorResponse" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_0xxvjxq</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_095crcd</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_0xxvjxq" sourceRef="ScriptTask_0cihgpv" targetRef="CallActivity_0sevgre" />
+    <bpmn2:subProcess id="SubProcess_1k2112i" name="Sub-process for FalloutHandler" triggeredByEvent="true">
+      <bpmn2:startEvent id="StartEvent_110xxgx">
+        <bpmn2:outgoing>SequenceFlow_0n4umjf</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition errorRef="Error_2" />
+      </bpmn2:startEvent>
+      <bpmn2:endEvent id="EndEvent_1rqikib">
+        <bpmn2:incoming>SequenceFlow_1ghqolv</bpmn2:incoming>
+      </bpmn2:endEvent>
+      <bpmn2:scriptTask id="ScriptTask_1akfe0b" name="Prepare DB Infra Error" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_0n4umjf</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1s5niqb</bpmn2:outgoing>
         <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
 def DeleteNetworkInstance = new DeleteNetworkInstance()
 DeleteNetworkInstance.prepareDBRequestError(execution)]]></bpmn2:script>
@@ -139,39 +139,39 @@
         <bpmn2:outgoing>SequenceFlow_1reso2f</bpmn2:outgoing>
         <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
 def DeleteNetworkInstance = new DeleteNetworkInstance()
-DeleteNetworkInstance.buildErrorResponse(execution)]]></bpmn2:script>
-      </bpmn2:scriptTask>
-      <bpmn2:callActivity id="CallActivity_1ksm1dz" name="Call FalloutHandlerV1" calledElement="FalloutHandler">
-        <bpmn2:extensionElements>
-          <camunda:in source="DELNI_FalloutHandlerRequest" target="FalloutHandlerRequest" />
-          <camunda:in source="mso-request-id" target="mso-request-id" />
-          <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
-          <camunda:out source="FH_ResponseCode" target="FH_ResponseCode" />
-          <camunda:out source="FalloutHandlerResponse" target="FalloutHandlerResponse" />
-          <camunda:out source="FH_ErrorResponse" target="FH_ErrorResponse" />
-        </bpmn2:extensionElements>
-        <bpmn2:incoming>SequenceFlow_1reso2f</bpmn2:incoming>
-        <bpmn2:outgoing>SequenceFlow_1ghqolv</bpmn2:outgoing>
-      </bpmn2:callActivity>
-      <bpmn2:sequenceFlow id="SequenceFlow_1s5niqb" sourceRef="ScriptTask_1akfe0b" targetRef="ServiceTask_0sztuly" />
-      <bpmn2:sequenceFlow id="SequenceFlow_06s5eu4" sourceRef="ServiceTask_0sztuly" targetRef="ScriptTask_1hql91g" />
-      <bpmn2:sequenceFlow id="SequenceFlow_1reso2f" sourceRef="ScriptTask_1hql91g" targetRef="CallActivity_1ksm1dz" />
-      <bpmn2:sequenceFlow id="SequenceFlow_1ghqolv" sourceRef="CallActivity_1ksm1dz" targetRef="EndEvent_1rqikib" />
-      <bpmn2:sequenceFlow id="SequenceFlow_0n4umjf" sourceRef="StartEvent_110xxgx" targetRef="ScriptTask_1akfe0b" />
-    </bpmn2:subProcess>
-    <bpmn2:sequenceFlow id="SequenceFlow_095crcd" sourceRef="CallActivity_0sevgre" targetRef="ScriptTask_09qt0pi" />
-    <bpmn2:sequenceFlow id="SequenceFlow_0rt8wax" sourceRef="Task_19xbdbu" targetRef="Task_1nko5zz" />
-    <bpmn2:sequenceFlow id="SequenceFlow_0eto8sn" sourceRef="Task_1nko5zz" targetRef="doDeleteNetworkInstance_CallActivity" />
-    <bpmn2:scriptTask id="Task_19xbdbu" name="Get Network Model Info&#10;" scriptFormat="groovy">
-      <bpmn2:incoming>SequenceFlow_1ablr60</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_0rt8wax</bpmn2:outgoing>
+DeleteNetworkInstance.buildErrorResponse(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:callActivity id="CallActivity_1ksm1dz" name="Call FalloutHandlerV1" calledElement="FalloutHandler">
+        <bpmn2:extensionElements>
+          <camunda:in source="DELNI_FalloutHandlerRequest" target="FalloutHandlerRequest" />
+          <camunda:in source="mso-request-id" target="mso-request-id" />
+          <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
+          <camunda:out source="FH_ResponseCode" target="FH_ResponseCode" />
+          <camunda:out source="FalloutHandlerResponse" target="FalloutHandlerResponse" />
+          <camunda:out source="FH_ErrorResponse" target="FH_ErrorResponse" />
+        </bpmn2:extensionElements>
+        <bpmn2:incoming>SequenceFlow_1reso2f</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1ghqolv</bpmn2:outgoing>
+      </bpmn2:callActivity>
+      <bpmn2:sequenceFlow id="SequenceFlow_1s5niqb" sourceRef="ScriptTask_1akfe0b" targetRef="ServiceTask_0sztuly" />
+      <bpmn2:sequenceFlow id="SequenceFlow_06s5eu4" sourceRef="ServiceTask_0sztuly" targetRef="ScriptTask_1hql91g" />
+      <bpmn2:sequenceFlow id="SequenceFlow_1reso2f" sourceRef="ScriptTask_1hql91g" targetRef="CallActivity_1ksm1dz" />
+      <bpmn2:sequenceFlow id="SequenceFlow_1ghqolv" sourceRef="CallActivity_1ksm1dz" targetRef="EndEvent_1rqikib" />
+      <bpmn2:sequenceFlow id="SequenceFlow_0n4umjf" sourceRef="StartEvent_110xxgx" targetRef="ScriptTask_1akfe0b" />
+    </bpmn2:subProcess>
+    <bpmn2:sequenceFlow id="SequenceFlow_095crcd" sourceRef="CallActivity_0sevgre" targetRef="ScriptTask_09qt0pi" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0rt8wax" sourceRef="Task_19xbdbu" targetRef="Task_1nko5zz" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0eto8sn" sourceRef="Task_1nko5zz" targetRef="doDeleteNetworkInstance_CallActivity" />
+    <bpmn2:scriptTask id="Task_19xbdbu" name="Get Network Model Info&#10;" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1ablr60</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0rt8wax</bpmn2:outgoing>
       <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
 def DeleteNetworkInstance = new DeleteNetworkInstance()
-DeleteNetworkInstance.getNetworkModelInfo(execution)]]></bpmn2:script>
-    </bpmn2:scriptTask>
-    <bpmn2:scriptTask id="Task_1nko5zz" name="Send Sync Ack Response" scriptFormat="groovy">
-      <bpmn2:incoming>SequenceFlow_0rt8wax</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_0eto8sn</bpmn2:outgoing>
+DeleteNetworkInstance.getNetworkModelInfo(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="Task_1nko5zz" name="Send Sync Ack Response" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0rt8wax</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0eto8sn</bpmn2:outgoing>
       <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
 def DeleteNetworkInstance = new  DeleteNetworkInstance()
 DeleteNetworkInstance.sendSyncResponse(execution)]]></bpmn2:script>
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/DeleteVfModuleInfra.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/DeleteVfModuleInfra.bpmn
index e19ea1b..81e759b 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/DeleteVfModuleInfra.bpmn
+++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/DeleteVfModuleInfra.bpmn
@@ -38,6 +38,7 @@
         <camunda:in source="cloudConfiguration" target="cloudConfiguration" />
         <camunda:in source="&#34;1610&#34;" target="sdncVersion" />
         <camunda:in source="isVidRequest" target="isVidRequest" />
+        <camunda:in source="aLaCarte" target="aLaCarte" />
       </bpmn2:extensionElements>
       <bpmn2:incoming>SequenceFlow_9</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_8</bpmn2:outgoing>
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/ReplaceVnfInfra.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/ReplaceVnfInfra.bpmn
index 6c5e8f6..c15c391 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/ReplaceVnfInfra.bpmn
+++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/ReplaceVnfInfra.bpmn
@@ -20,7 +20,7 @@
     <bpmn2:sequenceFlow id="SequenceFlow_5" name="" sourceRef="PreProcessRequest" targetRef="ScriptTask_1" />
     <bpmn2:callActivity id="CallActivity_1" name="Completion Handler" calledElement="CompleteMsoProcess">
       <bpmn2:extensionElements>
-        <camunda:in source="RPLVnfI_CompletionHandlerRequest" target="CompleteMsoProcessRequest" />
+        <camunda:in source="CompletionHandlerRequest" target="CompleteMsoProcessRequest" />
         <camunda:in source="mso-request-id" target="mso-request-id" />
         <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
         <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
@@ -42,10 +42,11 @@
     <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="ScriptTask_4" targetRef="EndEvent_1" />
     <bpmn2:scriptTask id="ScriptTask_10" name="Completion Handler (prep)" scriptFormat="groovy">
       <bpmn2:incoming>SequenceFlow_3</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_19rrss6</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_17</bpmn2:outgoing>
       <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
 def uvfm = new ReplaceVnfInfra()
-uvfm.completionHandlerPrep(execution, 'RPLVnfI_CompletionHandlerRequest')
+uvfm.completionHandlerPrep(execution, 'CompletionHandlerRequest')
 ]]></bpmn2:script>
     </bpmn2:scriptTask>
     <bpmn2:sequenceFlow id="SequenceFlow_17" name="" sourceRef="ScriptTask_10" targetRef="CallActivity_1" />
@@ -54,19 +55,19 @@
         <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing>
         <bpmn2:errorEventDefinition id="ErrorEventDefinition_1" />
       </bpmn2:startEvent>
-      <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_3" targetRef="ScriptTask_3" />
+      <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_3" targetRef="Task_1cl8ayk" />
       <bpmn2:scriptTask id="ScriptTask_3" name="Fallout Handler (prep)" scriptFormat="groovy">
-        <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming>
+        <bpmn2:incoming>SequenceFlow_0ph6862</bpmn2:incoming>
         <bpmn2:outgoing>SequenceFlow_7</bpmn2:outgoing>
         <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
-def uvfm = new UpdateVfModuleInfra()
-uvfm.falloutHandlerPrep(execution, 'RPLVnfI_FalloutHandlerRequest')
+def uvfm = new ReplaceVnfInfra()
+uvfm.falloutHandlerPrep(execution, 'FalloutHandlerRequest')
 ]]></bpmn2:script>
       </bpmn2:scriptTask>
       <bpmn2:sequenceFlow id="SequenceFlow_7" sourceRef="ScriptTask_3" targetRef="CallActivity_2" />
       <bpmn2:callActivity id="CallActivity_2" name="Fallout Handler" calledElement="FalloutHandler">
         <bpmn2:extensionElements>
-          <camunda:in source="RPLVnfI_FalloutHandlerRequest" target="FalloutHandlerRequest" />
+          <camunda:in source="FalloutHandlerRequest" target="FalloutHandlerRequest" />
           <camunda:in source="mso-request-id" target="mso-request-id" />
           <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
           <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
@@ -79,6 +80,39 @@
         <bpmn2:terminateEventDefinition id="TerminateEventDefinition_1" />
       </bpmn2:endEvent>
       <bpmn2:sequenceFlow id="SequenceFlow_19" name="" sourceRef="CallActivity_2" targetRef="EndEvent_2" />
+      <bpmn2:sequenceFlow id="SequenceFlow_0msgw6c" sourceRef="Task_1cl8ayk" targetRef="Task_1xw8w6a" />
+      <bpmn2:sequenceFlow id="SequenceFlow_0uhssvq" sourceRef="Task_1xw8w6a" targetRef="Task_0dc1x7g" />
+      <bpmn2:sequenceFlow id="SequenceFlow_0ph6862" sourceRef="Task_0dc1x7g" targetRef="ScriptTask_3" />
+      <bpmn2:scriptTask id="Task_1cl8ayk" name="PreProcess Rollback" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_0msgw6c</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def uvfm = new VnfInPlaceUpdate()
+uvfm.preProcessRollback(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:scriptTask id="Task_0dc1x7g" name="PostProcess Rollback" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_0uhssvq</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_0ph6862</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def uvfm = new VnfInPlaceUpdate()
+uvfm.postProcessRollback(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:callActivity id="Task_1xw8w6a" name="Rollback Processing" calledElement="RollbackVnf">
+        <bpmn2:extensionElements>
+          <camunda:in source="msoRequestId" target="msoRequestId" />
+          <camunda:in source="vnfId" target="vnfId" />
+          <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+          <camunda:in source="rollbackSetClosedLoopDisabledFlag" target="rollbackSetClosedLoopDisabledFlag" />
+          <camunda:in source="rollbackSetVnfInMaintenanceFlag" target="rollbackSetVnfInMaintenanceFlag" />
+          <camunda:in source="rollbackVnfStop" target="rollbackVnfStop" />
+          <camunda:in source="rollbackVnfLock" target="rollbackVnfLock" />
+          <camunda:in source="errorCode" target="errorCode" />
+          <camunda:in source="rollbackQuiesceTraffic" target="rollbackQuiesceTraffic" />
+          <camunda:out source="rollbackSuccessful" target="rollbackSuccessful" />
+        </bpmn2:extensionElements>
+        <bpmn2:incoming>SequenceFlow_0msgw6c</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_0uhssvq</bpmn2:outgoing>
+      </bpmn2:callActivity>
     </bpmn2:subProcess>
     <bpmn2:endEvent id="EndEvent_3">
       <bpmn2:incoming>SequenceFlow_12</bpmn2:incoming>
@@ -95,13 +129,15 @@
     <bpmn2:sequenceFlow id="SequenceFlow_4" name="" sourceRef="StartEvent_1" targetRef="PreProcessRequest" />
     <bpmn2:callActivity id="ScriptTask_6" name="DoDeleteVnfAndModules" calledElement="DoDeleteVnfAndModules">
       <bpmn2:extensionElements>
-        <camunda:in source="RPLVnfI_requestId" target="msoRequestId" />
+        <camunda:in source="msoRequestId" target="msoRequestId" />
         <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
         <camunda:out source="WorkflowException" target="WorkflowException" />
-        <camunda:in source="RPLVnfI_vnfId" target="vnfId" />
-        <camunda:in source="RPLVnfI_serviceInstanceId" target="serviceInstanceId" />
-        <camunda:in source="RPLVnfI_sdncVersion" target="sdncVersion" />
-        <camunda:in source="RPLVnfI_cloudConfiguration" target="cloudConfiguration" />
+        <camunda:in source="vnfId" target="vnfId" />
+        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+        <camunda:in source="sdncVersion" target="sdncVersion" />
+        <camunda:in source="cloudConfiguration" target="cloudConfiguration" />
+        <camunda:in source="retainResources" target="retainResources" />
+        <camunda:in source="serviceDecomposition" target="serviceDecomposition" />
       </bpmn2:extensionElements>
       <bpmn2:incoming>SequenceFlow_19ba94v</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_0gzzeru</bpmn2:outgoing>
@@ -112,7 +148,7 @@
       <bpmn2:extensionElements>
         <camunda:in source="msoRequestId" target="msoRequestId" />
         <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
-        <camunda:in source="RPLVnfI_serviceModelInfo" target="serviceModelInfo" />
+        <camunda:in source="serviceModelInfo" target="serviceModelInfo" />
         <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
         <camunda:out source="WorkflowException" target="WorkflowException" />
         <camunda:out source="serviceDecomposition" target="serviceDecomposition" />
@@ -120,7 +156,7 @@
       <bpmn2:incoming>SequenceFlow_0y0jt4l</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_1w35ov3</bpmn2:outgoing>
     </bpmn2:callActivity>
-    <bpmn2:sequenceFlow id="SequenceFlow_053qjfy" sourceRef="Task_1opcb4j" targetRef="Task_0vy2zge" />
+    <bpmn2:sequenceFlow id="SequenceFlow_053qjfy" sourceRef="Task_1opcb4j" targetRef="Task_0iydw5o" />
     <bpmn2:scriptTask id="Task_1opcb4j" name="Get VnfResourceDecomposition" scriptFormat="groovy">
       <bpmn2:incoming>SequenceFlow_1w35ov3</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_053qjfy</bpmn2:outgoing>
@@ -131,7 +167,7 @@
     <bpmn2:sequenceFlow id="SequenceFlow_0y0jt4l" sourceRef="ScriptTask_1" targetRef="Task_1gg76h7" />
     <bpmn2:scriptTask id="Task_1rxiqe1" name="Check If VNF Is In Maintenance in A&#38;AI" scriptFormat="groovy">
       <bpmn2:incoming>SequenceFlow_16mo99z</bpmn2:incoming>
-      <bpmn2:incoming>SequenceFlow_193t8ts</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_0jph3mt</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing>
       <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
 def uvfm = new ReplaceVnfInfra()
@@ -143,7 +179,7 @@
     <bpmn2:sequenceFlow id="SequenceFlow_0gzzeru" sourceRef="ScriptTask_6" targetRef="ExclusiveGateway_0ulrq9g" />
     <bpmn2:scriptTask id="Task_0ap39ka" name="Set VNF inMaintenance Flag in A&#38;AI" scriptFormat="groovy">
       <bpmn2:incoming>SequenceFlow_0baosqi</bpmn2:incoming>
-      <bpmn2:incoming>SequenceFlow_18u8p2k</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_1nodcf9</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_0k3fx7p</bpmn2:outgoing>
       <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
 def uvfm = new ReplaceVnfInfra()
@@ -152,7 +188,7 @@
     </bpmn2:scriptTask>
     <bpmn2:scriptTask id="Task_1drglpt" name="Unset VNF In Maintenance Flag in A&#38;AI" scriptFormat="groovy">
       <bpmn2:incoming>SequenceFlow_19lg15d</bpmn2:incoming>
-      <bpmn2:incoming>SequenceFlow_1lsfn19</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_0usoiza</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_12mfil6</bpmn2:outgoing>
       <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
 def uvfm = new ReplaceVnfInfra()
@@ -160,7 +196,7 @@
 ]]></bpmn2:script>
     </bpmn2:scriptTask>
     <bpmn2:scriptTask id="Task_0vy2zge" name="Check If Physical Servers Are Locked in A&#38;AI" scriptFormat="groovy">
-      <bpmn2:incoming>SequenceFlow_053qjfy</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_14yy8v4</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_0usxnlk</bpmn2:outgoing>
       <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
 def uvfm = new ReplaceVnfInfra()
@@ -170,202 +206,105 @@
     <bpmn2:sequenceFlow id="SequenceFlow_0xx8y1s" sourceRef="Task_1dtbnuy" targetRef="ExclusiveGateway_1slvyx2" />
     <bpmn2:sequenceFlow id="SequenceFlow_0a6pdza" sourceRef="Task_1fj63ov" targetRef="ExclusiveGateway_1ichg7h" />
     <bpmn2:sequenceFlow id="SequenceFlow_13h26h9" sourceRef="Task_1cfkcss" targetRef="ExclusiveGateway_1etgtgi" />
-    <bpmn2:scriptTask id="Task_1dtbnuy" name="Call APP-C VNF Lock" scriptFormat="groovy">
-      <bpmn2:incoming>SequenceFlow_1bkhs8m</bpmn2:incoming>
-      <bpmn2:incoming>SequenceFlow_0eueu1t</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_0xx8y1s</bpmn2:outgoing>
-      <bpmn2:script><![CDATA[import org.openecomp.appc.client.lcm.model.Action
-import org.openecomp.mso.bpmn.infrastructure.scripts.*
-def uvfm = new ReplaceVnfInfra()
-uvfm.runAppcCommand(execution, Action.Lock)
-]]></bpmn2:script>
-    </bpmn2:scriptTask>
-    <bpmn2:scriptTask id="Task_1fj63ov" name="Call APP-C Health Check" scriptFormat="groovy">
-      <bpmn2:incoming>SequenceFlow_0qy68ib</bpmn2:incoming>
-      <bpmn2:incoming>SequenceFlow_1sla5dr</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_0a6pdza</bpmn2:outgoing>
-      <bpmn2:script><![CDATA[import org.openecomp.appc.client.lcm.model.Action
-import org.openecomp.mso.bpmn.infrastructure.scripts.*
-def uvfm = new ReplaceVnfInfra()
-uvfm.runAppcCommand(execution, Action.HealthCheck)]]></bpmn2:script>
-    </bpmn2:scriptTask>
-    <bpmn2:scriptTask id="Task_1cfkcss" name="Call APP-C VNF Graceful Stop" scriptFormat="groovy">
-      <bpmn2:incoming>SequenceFlow_0q0qan8</bpmn2:incoming>
-      <bpmn2:incoming>SequenceFlow_0iektwg</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_13h26h9</bpmn2:outgoing>
-      <bpmn2:script><![CDATA[import org.openecomp.appc.client.lcm.model.Action
-import org.openecomp.mso.bpmn.infrastructure.scripts.*
-def uvfm = new ReplaceVnfInfra()
-uvfm.runAppcCommand(execution, Action.Stop)]]></bpmn2:script>
-    </bpmn2:scriptTask>
     <bpmn2:sequenceFlow id="SequenceFlow_1uno5rs" sourceRef="Task_1hdg951" targetRef="ExclusiveGateway_02tj4dw" />
     <bpmn2:sequenceFlow id="SequenceFlow_1c79909" sourceRef="Task_1ca5ctq" targetRef="ExclusiveGateway_1gn5lab" />
-    <bpmn2:scriptTask id="Task_1hdg951" name="Call APP-C VNF Start" scriptFormat="groovy">
-      <bpmn2:incoming>SequenceFlow_04zwhw4</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_1uno5rs</bpmn2:outgoing>
-      <bpmn2:script><![CDATA[import org.openecomp.appc.client.lcm.model.Action
-import org.openecomp.mso.bpmn.infrastructure.scripts.*
-def uvfm = new ReplaceVnfInfra()
-uvfm.runAppcCommand(execution, Action.Start)]]></bpmn2:script>
-    </bpmn2:scriptTask>
-    <bpmn2:scriptTask id="Task_1ca5ctq" name="Call APP-C Health Check" scriptFormat="groovy">
-      <bpmn2:incoming>SequenceFlow_162mm0m</bpmn2:incoming>
-      <bpmn2:incoming>SequenceFlow_1hx1ur7</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_1c79909</bpmn2:outgoing>
-      <bpmn2:script><![CDATA[import org.openecomp.appc.client.lcm.model.Action
-import org.openecomp.mso.bpmn.infrastructure.scripts.*
-def uvfm = new ReplaceVnfInfra()
-uvfm.runAppcCommand(execution, Action.HealthCheck)]]></bpmn2:script>
-    </bpmn2:scriptTask>
     <bpmn2:sequenceFlow id="SequenceFlow_1xfbwpi" sourceRef="Task_1sove95" targetRef="ExclusiveGateway_06mv93h" />
-    <bpmn2:scriptTask id="Task_1sove95" name="Call APP-C VNF Unlock" scriptFormat="groovy">
-      <bpmn2:incoming>SequenceFlow_197t3qk</bpmn2:incoming>
-      <bpmn2:incoming>SequenceFlow_0ukzynj</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_1xfbwpi</bpmn2:outgoing>
-      <bpmn2:script><![CDATA[import org.openecomp.appc.client.lcm.model.Action
-import org.openecomp.mso.bpmn.infrastructure.scripts.*
-def uvfm = new ReplaceVnfInfra()
-uvfm.runAppcCommand(execution, Action.Unlock)]]></bpmn2:script>
-    </bpmn2:scriptTask>
     <bpmn2:exclusiveGateway id="ExclusiveGateway_0q323wc" name="Error on PServers Check?" default="SequenceFlow_16mo99z">
       <bpmn2:incoming>SequenceFlow_0usxnlk</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_16mo99z</bpmn2:outgoing>
-      <bpmn2:outgoing>SequenceFlow_1qmz2ez</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_12hm1ks</bpmn2:outgoing>
     </bpmn2:exclusiveGateway>
     <bpmn2:sequenceFlow id="SequenceFlow_16mo99z" name="no" sourceRef="ExclusiveGateway_0q323wc" targetRef="Task_1rxiqe1" />
     <bpmn2:exclusiveGateway id="ExclusiveGateway_045e1uz" name="Error On inMaintenance Check?" default="SequenceFlow_0baosqi">
       <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_0baosqi</bpmn2:outgoing>
-      <bpmn2:outgoing>SequenceFlow_03rkfbo</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0etr76r</bpmn2:outgoing>
     </bpmn2:exclusiveGateway>
     <bpmn2:sequenceFlow id="SequenceFlow_0baosqi" name="no" sourceRef="ExclusiveGateway_045e1uz" targetRef="Task_0ap39ka" />
     <bpmn2:callActivity id="Task_0q5cdit" name="Rainy Day Handler" calledElement="RainyDayHandler">
       <bpmn2:extensionElements>
         <camunda:in source="msoRequestId" target="msoRequestId" />
         <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
-        <camunda:in source="RPLVnfI_serviceType" target="serviceType" />
-        <camunda:in source="RPLVnfI_nfRole" target="vnfType" />
-        <camunda:in source="RPLVnfI_currentActivity" target="currentActivity" />
-        <camunda:in source="RPLVnfI_workStep" target="workStep" />
-        <camunda:in source="RPLVnfI_failedActivity" target="failedActivity" />
-        <camunda:in source="RPLVnfI_errorCode" target="errorCode" />
-        <camunda:in source="RPLVnfI_errorText" target="errorText" />
+        <camunda:in source="serviceType" target="serviceType" />
+        <camunda:in source="nfRole" target="vnfType" />
+        <camunda:in source="currentActivity" target="currentActivity" />
+        <camunda:in source="workStep" target="workStep" />
+        <camunda:in source="failedActivity" target="failedActivity" />
+        <camunda:in source="errorCode" target="errorCode" />
+        <camunda:in source="errorText" target="errorText" />
         <camunda:out source="WorkflowException" target="WorkflowException" />
-        <camunda:out source="handlingCode" target="RPLVnfI_disposition" />
-        <camunda:in source="RPLVnfI_requestorId" target="requestorId" />
-        <camunda:out source="taskId" target="RPLVnfI_taskId" />
+        <camunda:out source="handlingCode" target="disposition" />
+        <camunda:in source="requestorId" target="requestorId" />
+        <camunda:out source="taskId" target="taskId" />
+        <camunda:in source="vnfName" target="vnfName" />
       </bpmn2:extensionElements>
-      <bpmn2:incoming>SequenceFlow_1qmz2ez</bpmn2:incoming>
-      <bpmn2:incoming>SequenceFlow_03rkfbo</bpmn2:incoming>
-      <bpmn2:incoming>SequenceFlow_1lsm3bn</bpmn2:incoming>
-      <bpmn2:incoming>SequenceFlow_0bduwog</bpmn2:incoming>
-      <bpmn2:incoming>SequenceFlow_0uwar5b</bpmn2:incoming>
-      <bpmn2:incoming>SequenceFlow_0i7hfj2</bpmn2:incoming>
-      <bpmn2:incoming>SequenceFlow_13yjc85</bpmn2:incoming>
-      <bpmn2:incoming>SequenceFlow_0waedj5</bpmn2:incoming>
-      <bpmn2:incoming>SequenceFlow_1hg9c2l</bpmn2:incoming>
-      <bpmn2:incoming>SequenceFlow_0gej71y</bpmn2:incoming>
-      <bpmn2:incoming>SequenceFlow_0pfydeg</bpmn2:incoming>
-      <bpmn2:incoming>SequenceFlow_10ek8l4</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_1cezgw4</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_0v0u7mf</bpmn2:outgoing>
     </bpmn2:callActivity>
-    <bpmn2:sequenceFlow id="SequenceFlow_1qmz2ez" name="yes" sourceRef="ExclusiveGateway_0q323wc" targetRef="Task_0q5cdit">
-      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("RPLVnfI_errorCode") != "0"]]></bpmn2:conditionExpression>
-    </bpmn2:sequenceFlow>
-    <bpmn2:sequenceFlow id="SequenceFlow_03rkfbo" name="yes" sourceRef="ExclusiveGateway_045e1uz" targetRef="Task_0q5cdit">
-      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("RPLVnfI_errorCode") != "0"]]></bpmn2:conditionExpression>
-    </bpmn2:sequenceFlow>
     <bpmn2:sequenceFlow id="SequenceFlow_0v0u7mf" sourceRef="Task_0q5cdit" targetRef="ExclusiveGateway_0xlxgl0" />
     <bpmn2:task id="Task_0zbogrm" name="Rollback Processing">
       <bpmn2:incoming>SequenceFlow_1qr8msw</bpmn2:incoming>
     </bpmn2:task>
     <bpmn2:sequenceFlow id="SequenceFlow_0vpd06n" name="Abort" sourceRef="ExclusiveGateway_0xlxgl0" targetRef="Task_1tg549h">
-      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("RPLVnfI_disposition") == "Abort"]]></bpmn2:conditionExpression>
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("disposition") == "Abort"]]></bpmn2:conditionExpression>
     </bpmn2:sequenceFlow>
     <bpmn2:sequenceFlow id="SequenceFlow_1qr8msw" name="Rollback" sourceRef="ExclusiveGateway_0xlxgl0" targetRef="Task_0zbogrm">
-      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("RPLVnfI_disposition") == "Rollback"]]></bpmn2:conditionExpression>
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("disposition") == "Rollback"]]></bpmn2:conditionExpression>
     </bpmn2:sequenceFlow>
     <bpmn2:exclusiveGateway id="ExclusiveGateway_0ud5uwa" name="Eror on inMaintenance Set?" default="SequenceFlow_1bkhs8m">
       <bpmn2:incoming>SequenceFlow_0k3fx7p</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_1bkhs8m</bpmn2:outgoing>
-      <bpmn2:outgoing>SequenceFlow_1lsm3bn</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_11b00u2</bpmn2:outgoing>
     </bpmn2:exclusiveGateway>
     <bpmn2:sequenceFlow id="SequenceFlow_0k3fx7p" sourceRef="Task_0ap39ka" targetRef="ExclusiveGateway_0ud5uwa" />
-    <bpmn2:sequenceFlow id="SequenceFlow_1lsm3bn" name="yes" sourceRef="ExclusiveGateway_0ud5uwa" targetRef="Task_0q5cdit">
-      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("RPLVnfI_errorCode") != "0"]]></bpmn2:conditionExpression>
-    </bpmn2:sequenceFlow>
     <bpmn2:exclusiveGateway id="ExclusiveGateway_1slvyx2" name="Error on VNF Lock?" default="SequenceFlow_0qy68ib">
       <bpmn2:incoming>SequenceFlow_0xx8y1s</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_0qy68ib</bpmn2:outgoing>
-      <bpmn2:outgoing>SequenceFlow_0bduwog</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_1ck3v34</bpmn2:outgoing>
     </bpmn2:exclusiveGateway>
     <bpmn2:sequenceFlow id="SequenceFlow_0qy68ib" name="no" sourceRef="ExclusiveGateway_1slvyx2" targetRef="Task_1fj63ov" />
     <bpmn2:exclusiveGateway id="ExclusiveGateway_1ichg7h" name="Error on Pre Health Check?" default="SequenceFlow_0q0qan8">
       <bpmn2:incoming>SequenceFlow_0a6pdza</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_0q0qan8</bpmn2:outgoing>
-      <bpmn2:outgoing>SequenceFlow_0uwar5b</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_079nix0</bpmn2:outgoing>
     </bpmn2:exclusiveGateway>
     <bpmn2:sequenceFlow id="SequenceFlow_0q0qan8" name="no" sourceRef="ExclusiveGateway_1ichg7h" targetRef="Task_1cfkcss" />
     <bpmn2:exclusiveGateway id="ExclusiveGateway_1etgtgi" name="Error on VNF Stop?" default="SequenceFlow_1c0vdki">
       <bpmn2:incoming>SequenceFlow_13h26h9</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_1c0vdki</bpmn2:outgoing>
-      <bpmn2:outgoing>SequenceFlow_0i7hfj2</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_032i8t0</bpmn2:outgoing>
     </bpmn2:exclusiveGateway>
     <bpmn2:sequenceFlow id="SequenceFlow_1c0vdki" name="no" sourceRef="ExclusiveGateway_1etgtgi" targetRef="Task_0eae8go" />
-    <bpmn2:sequenceFlow id="SequenceFlow_0bduwog" name="yes" sourceRef="ExclusiveGateway_1slvyx2" targetRef="Task_0q5cdit">
-      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("RPLVnfI_errorCode") != "0"]]></bpmn2:conditionExpression>
-    </bpmn2:sequenceFlow>
-    <bpmn2:sequenceFlow id="SequenceFlow_0uwar5b" name="yes" sourceRef="ExclusiveGateway_1ichg7h" targetRef="Task_0q5cdit">
-      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("RPLVnfI_errorCode") != "0"]]></bpmn2:conditionExpression>
-    </bpmn2:sequenceFlow>
-    <bpmn2:sequenceFlow id="SequenceFlow_0i7hfj2" name="yes" sourceRef="ExclusiveGateway_1etgtgi" targetRef="Task_0q5cdit">
-      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("RPLVnfI_errorCode") != "0"]]></bpmn2:conditionExpression>
-    </bpmn2:sequenceFlow>
-    <bpmn2:exclusiveGateway id="ExclusiveGateway_0ulrq9g" name="Error on DoDeleteVnfAndNModules?" default="SequenceFlow_0bxgny0">
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_0ulrq9g" name="Error on DoDeleteVnfAndNModules?" camunda:asyncBefore="true" default="SequenceFlow_0bxgny0">
       <bpmn2:incoming>SequenceFlow_0gzzeru</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_10ek8l4</bpmn2:outgoing>
       <bpmn2:outgoing>SequenceFlow_0bxgny0</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_1f0c5lj</bpmn2:outgoing>
     </bpmn2:exclusiveGateway>
     <bpmn2:sequenceFlow id="SequenceFlow_04zwhw4" name="no" sourceRef="ExclusiveGateway_084iffr" targetRef="Task_1hdg951" />
-    <bpmn2:sequenceFlow id="SequenceFlow_10ek8l4" name="yes" sourceRef="ExclusiveGateway_0ulrq9g" targetRef="Task_0q5cdit">
-      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("RPLVnfI_errorCode") != "0"]]></bpmn2:conditionExpression>
-    </bpmn2:sequenceFlow>
     <bpmn2:exclusiveGateway id="ExclusiveGateway_02tj4dw" name="Error on VNF Start?" default="SequenceFlow_162mm0m">
       <bpmn2:incoming>SequenceFlow_1uno5rs</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_162mm0m</bpmn2:outgoing>
-      <bpmn2:outgoing>SequenceFlow_0waedj5</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_17vwb2h</bpmn2:outgoing>
     </bpmn2:exclusiveGateway>
     <bpmn2:sequenceFlow id="SequenceFlow_162mm0m" name="no" sourceRef="ExclusiveGateway_02tj4dw" targetRef="Task_1ca5ctq" />
     <bpmn2:exclusiveGateway id="ExclusiveGateway_1gn5lab" name="Error on Post Health Check?" default="SequenceFlow_197t3qk">
       <bpmn2:incoming>SequenceFlow_1c79909</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_197t3qk</bpmn2:outgoing>
-      <bpmn2:outgoing>SequenceFlow_1hg9c2l</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0ba08lt</bpmn2:outgoing>
     </bpmn2:exclusiveGateway>
     <bpmn2:sequenceFlow id="SequenceFlow_197t3qk" name="no" sourceRef="ExclusiveGateway_1gn5lab" targetRef="Task_1sove95" />
     <bpmn2:exclusiveGateway id="ExclusiveGateway_06mv93h" name="Error on VNF Unlock?" default="SequenceFlow_19lg15d">
       <bpmn2:incoming>SequenceFlow_1xfbwpi</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_19lg15d</bpmn2:outgoing>
-      <bpmn2:outgoing>SequenceFlow_0gej71y</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_1akvi72</bpmn2:outgoing>
     </bpmn2:exclusiveGateway>
     <bpmn2:sequenceFlow id="SequenceFlow_19lg15d" name="no" sourceRef="ExclusiveGateway_06mv93h" targetRef="Task_1drglpt" />
     <bpmn2:exclusiveGateway id="ExclusiveGateway_0l2z6wc" name="Erorr on inMaintenance Unset?" default="SequenceFlow_3">
       <bpmn2:incoming>SequenceFlow_12mfil6</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_13yjc85</bpmn2:outgoing>
       <bpmn2:outgoing>SequenceFlow_3</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_1sdol24</bpmn2:outgoing>
     </bpmn2:exclusiveGateway>
     <bpmn2:sequenceFlow id="SequenceFlow_12mfil6" sourceRef="Task_1drglpt" targetRef="ExclusiveGateway_0l2z6wc" />
-    <bpmn2:sequenceFlow id="SequenceFlow_13yjc85" name="yes" sourceRef="ExclusiveGateway_0l2z6wc" targetRef="Task_0q5cdit">
-      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("RPLVnfI_errorCode") != "0"]]></bpmn2:conditionExpression>
-    </bpmn2:sequenceFlow>
-    <bpmn2:sequenceFlow id="SequenceFlow_0waedj5" name="yes" sourceRef="ExclusiveGateway_02tj4dw" targetRef="Task_0q5cdit">
-      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("RPLVnfI_errorCode") != "0"]]></bpmn2:conditionExpression>
-    </bpmn2:sequenceFlow>
-    <bpmn2:sequenceFlow id="SequenceFlow_1hg9c2l" name="yes" sourceRef="ExclusiveGateway_1gn5lab" targetRef="Task_0q5cdit">
-      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("RPLVnfI_errorCode") != "0"]]></bpmn2:conditionExpression>
-    </bpmn2:sequenceFlow>
-    <bpmn2:sequenceFlow id="SequenceFlow_0gej71y" name="yes" sourceRef="ExclusiveGateway_06mv93h" targetRef="Task_0q5cdit">
-      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("RPLVnfI_errorCode") != "0"]]></bpmn2:conditionExpression>
-    </bpmn2:sequenceFlow>
     <bpmn2:scriptTask id="Task_1tg549h" name="Abort Processing" scriptFormat="groovy">
       <bpmn2:incoming>SequenceFlow_0vpd06n</bpmn2:incoming>
       <bpmn2:incoming>SequenceFlow_051zp79</bpmn2:incoming>
@@ -381,42 +320,27 @@
     </bpmn2:exclusiveGateway>
     <bpmn2:exclusiveGateway id="ExclusiveGateway_0y82zzx" name="Which step to skip?" default="SequenceFlow_051zp79">
       <bpmn2:incoming>SequenceFlow_05gpym3</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_1sla5dr</bpmn2:outgoing>
-      <bpmn2:outgoing>SequenceFlow_0iektwg</bpmn2:outgoing>
-      <bpmn2:outgoing>SequenceFlow_1ttepat</bpmn2:outgoing>
-      <bpmn2:outgoing>SequenceFlow_1hx1ur7</bpmn2:outgoing>
-      <bpmn2:outgoing>SequenceFlow_0ukzynj</bpmn2:outgoing>
-      <bpmn2:outgoing>SequenceFlow_1lsfn19</bpmn2:outgoing>
       <bpmn2:outgoing>SequenceFlow_051zp79</bpmn2:outgoing>
-      <bpmn2:outgoing>SequenceFlow_193t8ts</bpmn2:outgoing>
-      <bpmn2:outgoing>SequenceFlow_18u8p2k</bpmn2:outgoing>
-      <bpmn2:outgoing>SequenceFlow_0eueu1t</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_1ei7at5</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0kg02xg</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_1i6p53b</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_1yy7o24</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0sqmtpl</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_1shdmrj</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_1v1i5w4</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_1h8rscx</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_1xzq6jb</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_165q14c</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0wp1a6g</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0vymfh9</bpmn2:outgoing>
     </bpmn2:exclusiveGateway>
     <bpmn2:sequenceFlow id="SequenceFlow_05gpym3" name="Skip" sourceRef="ExclusiveGateway_0xlxgl0" targetRef="ExclusiveGateway_0y82zzx">
-      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("RPLVnfI_disposition") == "Skip"]]></bpmn2:conditionExpression>
-    </bpmn2:sequenceFlow>
-    <bpmn2:sequenceFlow id="SequenceFlow_1sla5dr" name="Skip APP-C VNF Lock" sourceRef="ExclusiveGateway_0y82zzx" targetRef="Task_1fj63ov">
-      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("RPLVnfI_workStep") == "LockVNF"]]></bpmn2:conditionExpression>
-    </bpmn2:sequenceFlow>
-    <bpmn2:sequenceFlow id="SequenceFlow_0iektwg" name="Skip APP-C VNF Pre Health Check" sourceRef="ExclusiveGateway_0y82zzx" targetRef="Task_1cfkcss">
-      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("RPLVnfI_workStep") == "HealthCheckVNF1"]]></bpmn2:conditionExpression>
-    </bpmn2:sequenceFlow>
-    <bpmn2:sequenceFlow id="SequenceFlow_1ttepat" name="Skip APP-C VNF Stop" sourceRef="ExclusiveGateway_0y82zzx" targetRef="Task_0eae8go">
-      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("RPLVnfI_workStep") == "StopVNF"]]></bpmn2:conditionExpression>
-    </bpmn2:sequenceFlow>
-    <bpmn2:sequenceFlow id="SequenceFlow_1hx1ur7" name="Skip APP-C VNF Start" sourceRef="ExclusiveGateway_0y82zzx" targetRef="Task_1ca5ctq">
-      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("RPLVnfI_workStep") == "StartVNF"]]></bpmn2:conditionExpression>
-    </bpmn2:sequenceFlow>
-    <bpmn2:sequenceFlow id="SequenceFlow_0ukzynj" name="Skip APP-C Post Health Check" sourceRef="ExclusiveGateway_0y82zzx" targetRef="Task_1sove95">
-      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("RPLVnfI_workStep") == "HealthCheckVNF2"]]></bpmn2:conditionExpression>
-    </bpmn2:sequenceFlow>
-    <bpmn2:sequenceFlow id="SequenceFlow_1lsfn19" name="Skip APP-C VNF Unlock" sourceRef="ExclusiveGateway_0y82zzx" targetRef="Task_1drglpt">
-      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("RPLVnfI_workStep") == "UnlockVNF"]]></bpmn2:conditionExpression>
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("disposition") == "Skip"]]></bpmn2:conditionExpression>
     </bpmn2:sequenceFlow>
     <bpmn2:sequenceFlow id="SequenceFlow_19ba94v" sourceRef="Task_0eae8go" targetRef="ScriptTask_6" />
     <bpmn2:scriptTask id="Task_0eae8go" name="Prepare DoDeleteVnfAndModules" scriptFormat="groovy">
       <bpmn2:incoming>SequenceFlow_1c0vdki</bpmn2:incoming>
-      <bpmn2:incoming>SequenceFlow_1ttepat</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_0aldwvz</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_19ba94v</bpmn2:outgoing>
       <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
 def uvfm = new ReplaceVnfInfra()
@@ -424,36 +348,387 @@
     </bpmn2:scriptTask>
     <bpmn2:scriptTask id="Task_040hi91" name="Prepare DoCreateVnfAndModules" scriptFormat="groovy">
       <bpmn2:incoming>SequenceFlow_0bxgny0</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_111z6w4</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_1qm0ygo</bpmn2:outgoing>
       <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
 def uvfm = new ReplaceVnfInfra()
 uvfm.prepDoCreateVnfAndModules(execution)]]></bpmn2:script>
     </bpmn2:scriptTask>
     <bpmn2:callActivity id="Task_15hpowt" name="DoCreateVnfAndModules" calledElement="DoCreateVnfAndModules">
+      <bpmn2:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="disableRollback" target="disableRollback" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:in source="productFamilyId" target="productFamilyId" />
+        <camunda:in source="vnfModelInfo" target="vnfModelInfo" />
+        <camunda:in source="lcpCloudRegionId" target="lcpCloudRegionId" />
+        <camunda:in source="tenantId" target="tenantId" />
+        <camunda:in source="sdncVersion" target="sdncVersion" />
+        <camunda:in source="serviceModelInfo" target="serviceModelInfo" />
+        <camunda:in source="globalSubscriberId" target="globalSubscriberId" />
+        <camunda:in source="serviceDecomposition" target="serviceDecomposition" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+        <camunda:in source="vnfId" target="vnfId" />
+        <camunda:in source="vnfName" target="vnfName" />
+      </bpmn2:extensionElements>
       <bpmn2:incoming>SequenceFlow_1qm0ygo</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_0he2w4b</bpmn2:outgoing>
     </bpmn2:callActivity>
-    <bpmn2:exclusiveGateway id="ExclusiveGateway_084iffr" name="Error on DoCreateVnfModules?">
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_084iffr" name="Error on DoCreateVnfModules?" default="SequenceFlow_04zwhw4">
       <bpmn2:incoming>SequenceFlow_0he2w4b</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_0pfydeg</bpmn2:outgoing>
       <bpmn2:outgoing>SequenceFlow_04zwhw4</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0pfvulx</bpmn2:outgoing>
     </bpmn2:exclusiveGateway>
-    <bpmn2:sequenceFlow id="SequenceFlow_0pfydeg" name="yes" sourceRef="ExclusiveGateway_084iffr" targetRef="Task_0q5cdit">
-      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("RPLVnfI_errorCode") != "0"]]></bpmn2:conditionExpression>
-    </bpmn2:sequenceFlow>
     <bpmn2:sequenceFlow id="SequenceFlow_0bxgny0" name="no" sourceRef="ExclusiveGateway_0ulrq9g" targetRef="Task_040hi91" />
     <bpmn2:sequenceFlow id="SequenceFlow_1qm0ygo" sourceRef="Task_040hi91" targetRef="Task_15hpowt" />
     <bpmn2:sequenceFlow id="SequenceFlow_0he2w4b" sourceRef="Task_15hpowt" targetRef="ExclusiveGateway_084iffr" />
     <bpmn2:sequenceFlow id="SequenceFlow_051zp79" name="" sourceRef="ExclusiveGateway_0y82zzx" targetRef="Task_1tg549h" />
-    <bpmn2:sequenceFlow id="SequenceFlow_193t8ts" name="Skip Check if PServers Locked in AAI" sourceRef="ExclusiveGateway_0y82zzx" targetRef="Task_1rxiqe1">
-      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("RPLVnfI_workStep") == "checkIfPserversInMaintInAAI"]]></bpmn2:conditionExpression>
+    <bpmn2:callActivity id="Task_1dtbnuy" name="Call APP-C VNF Lock" calledElement="AppCClient">
+      <bpmn2:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="actionLock" target="action" />
+        <camunda:in source="vnfId" target="vnfId" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:out source="errorCode" target="errorCode" />
+        <camunda:out source="errorText" target="errorText" />
+        <camunda:out source="workStep" target="workStep" />
+        <camunda:out source="failedActivity" target="failedActivity" />
+        <camunda:out source="rollbackVnfLock" target="rollbackVnfLock" />        
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1bkhs8m</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_1qfjlt7</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0xx8y1s</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:callActivity id="Task_1fj63ov" name="Call APP-C Health Check" calledElement="AppCClient">
+      <bpmn2:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="actionHealthCheck" target="action" />
+        <camunda:in source="healthCheckIndex0" target="healthCheckIndex" />
+        <camunda:in source="payload" target="payload" />
+        <camunda:in source="vnfId" target="vnfId" />
+        <camunda:out source="errorCode" target="errorCode" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:out source="errorText" target="errorText" />
+        <camunda:out source="workStep" target="workStep" />
+        <camunda:out source="failedActivity" target="failedActivity" />
+        <camunda:in source="vnfName" target="vnfName" />
+        <camunda:in source="vnfHostIpAddress" target="vnfHostIpAddress" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_0qy68ib</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_0x7iupc</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0a6pdza</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:callActivity id="Task_1cfkcss" name="Call APP-C VNF Graceful Stop" calledElement="AppCClient">
+      <bpmn2:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="actionStop" target="action" />
+        <camunda:in source="vnfId" target="vnfId" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:out source="errorCode" target="errorCode" />
+        <camunda:out source="errorText" target="errorText" />
+        <camunda:out source="workStep" target="workStep" />
+        <camunda:out source="failedActivity" target="failedActivity" />
+        <camunda:in source="aicIdentity" target="aicIdentity" />
+        <camunda:out source="rollbackVnfStop" target="rollbackVnfStop" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_0q0qan8</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_0hp0w6k</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_13h26h9</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:callActivity id="Task_1hdg951" name="Call APP-C VNF Start" calledElement="AppCClient">
+      <bpmn2:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="actionStart" target="action" />
+        <camunda:in source="vnfId" target="vnfId" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:out source="errorCode" target="errorCode" />
+        <camunda:out source="errorText" target="errorText" />
+        <camunda:out source="workStep" target="workStep" />
+        <camunda:out source="failedActivity" target="failedActivity" />
+        <camunda:in source="aicIdentity" target="aicIdentity" />
+        <camunda:out source="rollbackVnfStop" target="rollbackVnfStop" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_04zwhw4</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_1lrbndo</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1uno5rs</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:callActivity id="Task_1ca5ctq" name="Call APP-C Health Check" calledElement="AppCClient">
+      <bpmn2:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="actionHealthCheck" target="action" />
+        <camunda:in source="healthCheckIndex1" target="healthCheckIndex" />
+        <camunda:in source="payload" target="payload" />
+        <camunda:in source="vnfId" target="vnfId" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:out source="errorCode" target="errorCode" />
+        <camunda:out source="errorText" target="errorText" />
+        <camunda:out source="workStep" target="workStep" />
+        <camunda:out source="failedActivity" target="failedActivity" />
+        <camunda:in source="vnfName" target="vnfName" />
+        <camunda:in source="vnfHostIpAddress" target="vnfHostIpAddress" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_162mm0m</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_14mblvp</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1c79909</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_11iqe6n" name="To Rainy Day Handling">
+      <bpmn2:incoming>SequenceFlow_12hm1ks</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To Rainy Day Handling" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_16f09ke" name="To inMaintenance Check">
+      <bpmn2:outgoing>SequenceFlow_0jph3mt</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="To inMaintenance Check" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1mtokuy" name="To Rainy Day Handling">
+      <bpmn2:incoming>SequenceFlow_0etr76r</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To Rainy Day Handling" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_1h8oi7w" name="To inMaintenance Set">
+      <bpmn2:outgoing>SequenceFlow_1nodcf9</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="To inMaintenance Set" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0pwcatt" name="To Rainy Day Handling">
+      <bpmn2:incoming>SequenceFlow_11b00u2</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To Rainy Day Handling" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_12hm1ks" name="yes" sourceRef="ExclusiveGateway_0q323wc" targetRef="IntermediateThrowEvent_11iqe6n">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression>
     </bpmn2:sequenceFlow>
-    <bpmn2:sequenceFlow id="SequenceFlow_18u8p2k" name="Skip If VNF Is in Maint in AAI" sourceRef="ExclusiveGateway_0y82zzx" targetRef="Task_0ap39ka">
-      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("RPLVnfI_workStep") == "checkIfVnfInMaintInAAI"]]></bpmn2:conditionExpression>
+    <bpmn2:sequenceFlow id="SequenceFlow_0jph3mt" sourceRef="IntermediateThrowEvent_16f09ke" targetRef="Task_1rxiqe1" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0etr76r" name="yes" sourceRef="ExclusiveGateway_045e1uz" targetRef="IntermediateThrowEvent_1mtokuy">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression>
     </bpmn2:sequenceFlow>
-    <bpmn2:sequenceFlow id="SequenceFlow_0eueu1t" name="Skip Set VNF In Maint in AAI" sourceRef="ExclusiveGateway_0y82zzx" targetRef="Task_1dtbnuy">
-      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("RPLVnfI_workStep") == "setVnfInMaintFlagInAAI"]]></bpmn2:conditionExpression>
+    <bpmn2:sequenceFlow id="SequenceFlow_1nodcf9" sourceRef="IntermediateThrowEvent_1h8oi7w" targetRef="Task_0ap39ka" />
+    <bpmn2:sequenceFlow id="SequenceFlow_11b00u2" name="yes" sourceRef="ExclusiveGateway_0ud5uwa" targetRef="IntermediateThrowEvent_0pwcatt">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression>
     </bpmn2:sequenceFlow>
+    <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_1w8dvxw" name="To VNF Lock">
+      <bpmn2:outgoing>SequenceFlow_1qfjlt7</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="To VNF Lock" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0mqqagp" name="To Rainy Day Hnadling">
+      <bpmn2:incoming>SequenceFlow_1ck3v34</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To Rainy Day Handling" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_0vyfpwj" name="To Health PreCheck">
+      <bpmn2:outgoing>SequenceFlow_0x7iupc</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="To Health PreCheck" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_12187dz" name="To Rainy Day Handling">
+      <bpmn2:incoming>SequenceFlow_079nix0</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To Rainy Day Handling" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_0c7rese" name="To VNF Stop">
+      <bpmn2:outgoing>SequenceFlow_0hp0w6k</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="To VNF Stop" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_18grbwz" name="To Rainy Day Handling">
+      <bpmn2:incoming>SequenceFlow_032i8t0</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To Rainy Day Handling" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1qfjlt7" sourceRef="IntermediateThrowEvent_1w8dvxw" targetRef="Task_1dtbnuy" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1ck3v34" name="yes" sourceRef="ExclusiveGateway_1slvyx2" targetRef="IntermediateThrowEvent_0mqqagp">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_0x7iupc" sourceRef="IntermediateThrowEvent_0vyfpwj" targetRef="Task_1fj63ov" />
+    <bpmn2:sequenceFlow id="SequenceFlow_079nix0" name="yes" sourceRef="ExclusiveGateway_1ichg7h" targetRef="IntermediateThrowEvent_12187dz">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_0hp0w6k" sourceRef="IntermediateThrowEvent_0c7rese" targetRef="Task_1cfkcss" />
+    <bpmn2:sequenceFlow id="SequenceFlow_032i8t0" name="yes" sourceRef="ExclusiveGateway_1etgtgi" targetRef="IntermediateThrowEvent_18grbwz">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_0r8kzqa" name="To DoDeleteVnfAndModules">
+      <bpmn2:outgoing>SequenceFlow_0aldwvz</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="To DoDeleteVnfAndModules" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_169eg4j" name="To Rainy Day Handling">
+      <bpmn2:incoming>SequenceFlow_1f0c5lj</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To Rainy Day Handling" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_0tenxiw" name="To DoCreateVnfAndModules">
+      <bpmn2:outgoing>SequenceFlow_111z6w4</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="To DoCreateVnfAndModules" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1mocak0" name="To Rainy Day Handling">
+      <bpmn2:incoming>SequenceFlow_0pfvulx</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To Rainy Day Handling" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0aldwvz" sourceRef="IntermediateThrowEvent_0r8kzqa" targetRef="Task_0eae8go" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1f0c5lj" name="yes" sourceRef="ExclusiveGateway_0ulrq9g" targetRef="IntermediateThrowEvent_169eg4j">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_111z6w4" sourceRef="IntermediateThrowEvent_0tenxiw" targetRef="Task_040hi91" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0pfvulx" name="yes" sourceRef="ExclusiveGateway_084iffr" targetRef="IntermediateThrowEvent_1mocak0">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:callActivity id="Task_1sove95" name="Call APP-C VNF Unlock" calledElement="AppCClient">
+      <bpmn2:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="actionUnlock" target="action" />
+        <camunda:in source="vnfId" target="vnfId" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:out source="errorCode" target="errorCode" />
+        <camunda:out source="errorText" target="errorText" />
+        <camunda:out source="workStep" target="workStep" />
+        <camunda:out source="failedActivity" target="failedActivity" />
+        <camunda:out source="rollbackVnfLock" target="rollbackVnfLock" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_197t3qk</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_18e0jz0</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1xfbwpi</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_15yev7i" name="To VNF Start">
+      <bpmn2:outgoing>SequenceFlow_1lrbndo</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="To VNF Start" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0osnva5" name="To Rainy Day Handling">
+      <bpmn2:incoming>SequenceFlow_17vwb2h</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To Rainy Day Handling" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_0gluaxf" name="To Health PostCheck">
+      <bpmn2:outgoing>SequenceFlow_14mblvp</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="To Health PostCheck" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1chu5lh" name="To Rainy Day Handling">
+      <bpmn2:incoming>SequenceFlow_0ba08lt</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To Rainy Day Handling" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_0p7wh09" name="To VNF Unlock">
+      <bpmn2:outgoing>SequenceFlow_18e0jz0</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="To VNF Unlock" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0uh8zti" name="To Rainy Day Handling">
+      <bpmn2:incoming>SequenceFlow_1akvi72</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To Rainy Day Handling" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_1dei2gz" name="To inMaintenance Unset">
+      <bpmn2:outgoing>SequenceFlow_0usoiza</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="To inMaintenance Unset" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0fobhuu" name="To Rainy Day Handling">
+      <bpmn2:incoming>SequenceFlow_1sdol24</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To Rainy Day Handling" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1lrbndo" sourceRef="IntermediateThrowEvent_15yev7i" targetRef="Task_1hdg951" />
+    <bpmn2:sequenceFlow id="SequenceFlow_17vwb2h" name="yes" sourceRef="ExclusiveGateway_02tj4dw" targetRef="IntermediateThrowEvent_0osnva5">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_14mblvp" sourceRef="IntermediateThrowEvent_0gluaxf" targetRef="Task_1ca5ctq" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0ba08lt" name="yes" sourceRef="ExclusiveGateway_1gn5lab" targetRef="IntermediateThrowEvent_1chu5lh">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_18e0jz0" sourceRef="IntermediateThrowEvent_0p7wh09" targetRef="Task_1sove95" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1akvi72" name="yes" sourceRef="ExclusiveGateway_06mv93h" targetRef="IntermediateThrowEvent_0uh8zti">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_0usoiza" sourceRef="IntermediateThrowEvent_1dei2gz" targetRef="Task_1drglpt" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1sdol24" name="yes" sourceRef="ExclusiveGateway_0l2z6wc" targetRef="IntermediateThrowEvent_0fobhuu">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_1lc72r4" name="To Completion Handler Prep">
+      <bpmn2:outgoing>SequenceFlow_19rrss6</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="To Completion Handler Prep" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_19rrss6" sourceRef="IntermediateThrowEvent_1lc72r4" targetRef="ScriptTask_10" />
+    <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_0a9mn5c" name="To Rainy Day Handling">
+      <bpmn2:outgoing>SequenceFlow_1cezgw4</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="To Rainy Day Handling" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1cezgw4" sourceRef="IntermediateThrowEvent_0a9mn5c" targetRef="Task_0q5cdit" />
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0x4bho9" name="To inMaintenance Check">
+      <bpmn2:incoming>SequenceFlow_1ei7at5</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To inMaintenance Check" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0jervei" name="To inMaintenance Set">
+      <bpmn2:incoming>SequenceFlow_0kg02xg</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To inMaintenance Set" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1vju4tj" name="To VNF Lock">
+      <bpmn2:incoming>SequenceFlow_1i6p53b</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To VNF Lock" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1fzppfz" name="To Health PreCheck">
+      <bpmn2:incoming>SequenceFlow_1yy7o24</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To Health PreCheck" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1e0qowf" name="To VNF Stop">
+      <bpmn2:incoming>SequenceFlow_0sqmtpl</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To VNF Stop" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1v93roi" name="To DoDeleteVnfAndModules">
+      <bpmn2:incoming>SequenceFlow_1shdmrj</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To DoDeleteVnfAndModules" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_04a1dfz" name="To DoCreateVnfAndModules">
+      <bpmn2:incoming>SequenceFlow_1v1i5w4</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To DoCreateVnfAndModules" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_151z73b" name="To VNF Start">
+      <bpmn2:incoming>SequenceFlow_1h8rscx</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To VNF Start" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_10bre7q" name="To Health PostCheck">
+      <bpmn2:incoming>SequenceFlow_1xzq6jb</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To Health PostCheck" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1fl945a" name="To VNF Unlock">
+      <bpmn2:incoming>SequenceFlow_165q14c</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To VNF Unlock" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1lljtoh" name="To inMaintenance Unset">
+      <bpmn2:incoming>SequenceFlow_0wp1a6g</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To inMaintenance Unset" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0sub2cf" name="To Completion Handler Prep">
+      <bpmn2:incoming>SequenceFlow_0vymfh9</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To Completion Handler Prep" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1ei7at5" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_0x4bho9">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("workStep") == "checkIfPserversInMaintInAAI"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_0kg02xg" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_0jervei">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("workStep") == "checkIfVnfInMaintInAAI"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_1i6p53b" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_1vju4tj">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("workStep") == "setVnfInMaintFlagInAAI"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_1yy7o24" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_1fzppfz">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("workStep") == "Lock"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_0sqmtpl" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_1e0qowf">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("workStep") == "HealthCheck0"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_1shdmrj" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_1v93roi">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("workStep") == "Stop"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_1v1i5w4" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_04a1dfz">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("workStep") == "doDeleteVnfAndModules"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_1h8rscx" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_151z73b">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("workStep") == "doCreateVnfAndModules"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_1xzq6jb" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_10bre7q">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("workStep") == "Start"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_165q14c" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_1fl945a">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("workStep") == "HealthCheck1"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_0wp1a6g" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_1lljtoh">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("workStep") == "Unlock"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_0vymfh9" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_0sub2cf">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("workStep") == "unsetVnfInMaintFlagInAAI"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_14yy8v4" sourceRef="Task_0iydw5o" targetRef="Task_0vy2zge" />
+    <bpmn2:scriptTask id="Task_0iydw5o" name="Query A&#38;AI for VNF" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_053qjfy</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_14yy8v4</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def uvfm = new ReplaceVnfInfra()
+uvfm.queryAAIForVnf(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
   </bpmn2:process>
   <bpmn2:error id="Error_1" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
   <bpmndi:BPMNDiagram id="BPMNDiagram_1">
@@ -465,9 +740,9 @@
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="_BPMNShape_EndEvent_125" bpmnElement="EndEvent_1">
-        <dc:Bounds x="595" y="975" width="36" height="36" />
+        <dc:Bounds x="599" y="1249" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="594" y="1016" width="38" height="12" />
+          <dc:Bounds x="598" y="1290" width="38" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_4" sourceElement="_BPMNShape_StartEvent_50" targetElement="_BPMNShape_ScriptTask_124">
@@ -498,107 +773,110 @@
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_127" bpmnElement="ScriptTask_4">
-        <dc:Bounds x="439" y="953" width="100" height="80" />
+        <dc:Bounds x="434" y="1227" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_6" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_ScriptTask_127" targetElement="_BPMNShape_EndEvent_125">
-        <di:waypoint xsi:type="dc:Point" x="539" y="993" />
-        <di:waypoint xsi:type="dc:Point" x="595" y="993" />
+        <di:waypoint xsi:type="dc:Point" x="534" y="1267" />
+        <di:waypoint xsi:type="dc:Point" x="560" y="1267" />
+        <di:waypoint xsi:type="dc:Point" x="560" y="1267" />
+        <di:waypoint xsi:type="dc:Point" x="599" y="1267" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="716" y="834" width="0" height="0" />
+          <dc:Bounds x="575" y="1267" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_133" bpmnElement="ScriptTask_10">
-        <dc:Bounds x="139" y="953" width="100" height="80" />
+        <dc:Bounds x="134" y="1227" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="_BPMNShape_CallActivity_27" bpmnElement="CallActivity_1">
-        <dc:Bounds x="289" y="953" width="100" height="80" />
+        <dc:Bounds x="284" y="1227" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_17" bpmnElement="SequenceFlow_17" sourceElement="_BPMNShape_ScriptTask_133" targetElement="_BPMNShape_CallActivity_27">
-        <di:waypoint xsi:type="dc:Point" x="239" y="993" />
-        <di:waypoint xsi:type="dc:Point" x="289" y="993" />
+        <di:waypoint xsi:type="dc:Point" x="234" y="1267" />
+        <di:waypoint xsi:type="dc:Point" x="284" y="1267" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="264" y="999" width="0" height="0" />
+          <dc:Bounds x="256" y="1509" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="_BPMNShape_SubProcess_17" bpmnElement="SubProcess_1" isExpanded="true">
-        <dc:Bounds x="85" y="1189" width="565" height="241" />
+        <dc:Bounds x="105" y="1469" width="1047" height="239" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="_BPMNShape_StartEvent_52" bpmnElement="StartEvent_3">
-        <dc:Bounds x="149" y="1283" width="36" height="36" />
+        <dc:Bounds x="169" y="1563" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="128" y="1324" width="77" height="12" />
+          <dc:Bounds x="148" y="1604" width="77" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_136" bpmnElement="ScriptTask_3">
-        <dc:Bounds x="229" y="1261" width="100" height="80" />
+        <dc:Bounds x="748" y="1541" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_52" targetElement="_BPMNShape_ScriptTask_136">
-        <di:waypoint xsi:type="dc:Point" x="185" y="1301" />
-        <di:waypoint xsi:type="dc:Point" x="229" y="1301" />
+        <di:waypoint xsi:type="dc:Point" x="205" y="1581" />
+        <di:waypoint xsi:type="dc:Point" x="248" y="1581" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="232" y="1601" width="0" height="0" />
+          <dc:Bounds x="227" y="1566" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_7" bpmnElement="SequenceFlow_7" sourceElement="_BPMNShape_ScriptTask_136" targetElement="_BPMNShape_CallActivity_28">
-        <di:waypoint xsi:type="dc:Point" x="329" y="1301" />
-        <di:waypoint xsi:type="dc:Point" x="397" y="1301" />
+        <di:waypoint xsi:type="dc:Point" x="848" y="1581" />
+        <di:waypoint xsi:type="dc:Point" x="916" y="1581" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="345" y="1301" width="0" height="0" />
+          <dc:Bounds x="864" y="1581" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="_BPMNShape_EndEvent_126" bpmnElement="EndEvent_2">
-        <dc:Bounds x="553" y="1283" width="36" height="36" />
+        <dc:Bounds x="1072" y="1563" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="571" y="1324" width="0" height="0" />
+          <dc:Bounds x="1090" y="1604" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="_BPMNShape_BoundaryEvent_43" bpmnElement="BoundaryEvent_1">
-        <dc:Bounds x="632" y="1283" width="36" height="36" />
+        <dc:Bounds x="1134" y="1562" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="650" y="1324" width="0" height="0" />
+          <dc:Bounds x="1152" y="1603" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="_BPMNShape_EndEvent_127" bpmnElement="EndEvent_3">
-        <dc:Bounds x="726" y="1283" width="36" height="36" />
+        <dc:Bounds x="1205" y="1561" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="744" y="1324" width="0" height="0" />
+          <dc:Bounds x="1223" y="1602" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_12" bpmnElement="SequenceFlow_12" sourceElement="_BPMNShape_BoundaryEvent_43" targetElement="_BPMNShape_EndEvent_127">
-        <di:waypoint xsi:type="dc:Point" x="668" y="1301" />
-        <di:waypoint xsi:type="dc:Point" x="726" y="1301" />
+        <di:waypoint xsi:type="dc:Point" x="1170" y="1580" />
+        <di:waypoint xsi:type="dc:Point" x="1205" y="1579" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="697" y="1286" width="0" height="0" />
+          <dc:Bounds x="1188" y="1564.5" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="_BPMNShape_CallActivity_28" bpmnElement="CallActivity_2">
-        <dc:Bounds x="397" y="1261" width="100" height="80" />
+        <dc:Bounds x="916" y="1541" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_14" bpmnElement="SequenceFlow_14" sourceElement="_BPMNShape_CallActivity_27" targetElement="_BPMNShape_ScriptTask_127">
-        <di:waypoint xsi:type="dc:Point" x="389" y="993" />
-        <di:waypoint xsi:type="dc:Point" x="439" y="993" />
+        <di:waypoint xsi:type="dc:Point" x="384" y="1267" />
+        <di:waypoint xsi:type="dc:Point" x="434" y="1267" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="432" y="961" width="0" height="0" />
+          <dc:Bounds x="406" y="1509" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_19" bpmnElement="SequenceFlow_19" sourceElement="_BPMNShape_CallActivity_28" targetElement="_BPMNShape_EndEvent_126">
-        <di:waypoint xsi:type="dc:Point" x="497" y="1301" />
-        <di:waypoint xsi:type="dc:Point" x="553" y="1301" />
+        <di:waypoint xsi:type="dc:Point" x="1016" y="1581" />
+        <di:waypoint xsi:type="dc:Point" x="1072" y="1581" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="390" y="1361" width="0" height="0" />
+          <dc:Bounds x="909" y="1641" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_181" bpmnElement="ScriptTask_6">
-        <dc:Bounds x="289" y="559" width="100" height="80" />
+        <dc:Bounds x="305" y="695" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_3" sourceElement="_BPMNShape_ScriptTask_181" targetElement="_BPMNShape_ScriptTask_133">
-        <di:waypoint xsi:type="dc:Point" x="1130" y="835" />
-        <di:waypoint xsi:type="dc:Point" x="1130" y="900" />
-        <di:waypoint xsi:type="dc:Point" x="99" y="900" />
-        <di:waypoint xsi:type="dc:Point" x="99" y="993" />
-        <di:waypoint xsi:type="dc:Point" x="139" y="993" />
+        <di:waypoint xsi:type="dc:Point" x="1181" y="989" />
+        <di:waypoint xsi:type="dc:Point" x="1275" y="989" />
+        <di:waypoint xsi:type="dc:Point" x="1275" y="1171" />
+        <di:waypoint xsi:type="dc:Point" x="96" y="1171" />
+        <di:waypoint xsi:type="dc:Point" x="96" y="1267" />
+        <di:waypoint xsi:type="dc:Point" x="134" y="1267" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1109" y="862" width="12" height="12" />
+          <dc:Bounds x="1218" y="964.4017408047539" width="12" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_1w35ov3_di" bpmnElement="SequenceFlow_1w35ov3">
@@ -613,13 +891,9 @@
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_053qjfy_di" bpmnElement="SequenceFlow_053qjfy">
         <di:waypoint xsi:type="dc:Point" x="818" y="90" />
-        <di:waypoint xsi:type="dc:Point" x="982" y="90" />
-        <di:waypoint xsi:type="dc:Point" x="982" y="156" />
-        <di:waypoint xsi:type="dc:Point" x="103" y="156" />
-        <di:waypoint xsi:type="dc:Point" x="103" y="237" />
-        <di:waypoint xsi:type="dc:Point" x="131" y="237" />
+        <di:waypoint xsi:type="dc:Point" x="863" y="90" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="543" y="141" width="0" height="0" />
+          <dc:Bounds x="841" y="75" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ScriptTask_08xzuox_di" bpmnElement="Task_1opcb4j">
@@ -636,102 +910,87 @@
         <dc:Bounds x="425" y="197" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0usxnlk_di" bpmnElement="SequenceFlow_0usxnlk">
-        <di:waypoint xsi:type="dc:Point" x="231" y="237" />
+        <di:waypoint xsi:type="dc:Point" x="239" y="237" />
         <di:waypoint xsi:type="dc:Point" x="292" y="237" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="262" y="222" width="0" height="0" />
+          <dc:Bounds x="266" y="222" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_1bkhs8m_di" bpmnElement="SequenceFlow_1bkhs8m">
-        <di:waypoint xsi:type="dc:Point" x="896" y="264" />
-        <di:waypoint xsi:type="dc:Point" x="896" y="339" />
-        <di:waypoint xsi:type="dc:Point" x="98" y="339" />
-        <di:waypoint xsi:type="dc:Point" x="98" y="427" />
-        <di:waypoint xsi:type="dc:Point" x="139" y="427" />
+        <di:waypoint xsi:type="dc:Point" x="921" y="237" />
+        <di:waypoint xsi:type="dc:Point" x="988" y="237" />
+        <di:waypoint xsi:type="dc:Point" x="988" y="402" />
+        <di:waypoint xsi:type="dc:Point" x="98" y="402" />
+        <di:waypoint xsi:type="dc:Point" x="98" y="490" />
+        <di:waypoint xsi:type="dc:Point" x="139" y="490" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="905" y="313.95238095238096" width="12" height="12" />
+          <dc:Bounds x="951" y="208.69353020889844" width="12" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0gzzeru_di" bpmnElement="SequenceFlow_0gzzeru">
-        <di:waypoint xsi:type="dc:Point" x="389" y="599" />
-        <di:waypoint xsi:type="dc:Point" x="441" y="599" />
+        <di:waypoint xsi:type="dc:Point" x="405" y="735" />
+        <di:waypoint xsi:type="dc:Point" x="464" y="735" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="415" y="584" width="0" height="0" />
+          <dc:Bounds x="435" y="720" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ScriptTask_0wa4zya_di" bpmnElement="Task_0ap39ka">
-        <dc:Bounds x="714" y="197" width="100" height="80" />
+        <dc:Bounds x="718" y="197" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ScriptTask_0sgm9bu_di" bpmnElement="Task_1drglpt">
-        <dc:Bounds x="960" y="770" width="100" height="80" />
+        <dc:Bounds x="982" y="949" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ScriptTask_16jtt5t_di" bpmnElement="Task_0vy2zge">
-        <dc:Bounds x="131" y="197" width="100" height="80" />
+        <dc:Bounds x="139" y="197" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0xx8y1s_di" bpmnElement="SequenceFlow_0xx8y1s">
-        <di:waypoint xsi:type="dc:Point" x="239" y="427" />
-        <di:waypoint xsi:type="dc:Point" x="292" y="427" />
+        <di:waypoint xsi:type="dc:Point" x="239" y="490" />
+        <di:waypoint xsi:type="dc:Point" x="292" y="490" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="266" y="412" width="0" height="0" />
+          <dc:Bounds x="266" y="475" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0a6pdza_di" bpmnElement="SequenceFlow_0a6pdza">
-        <di:waypoint xsi:type="dc:Point" x="525" y="427" />
-        <di:waypoint xsi:type="dc:Point" x="601" y="427" />
+        <di:waypoint xsi:type="dc:Point" x="525" y="490" />
+        <di:waypoint xsi:type="dc:Point" x="601" y="490" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="563" y="412" width="0" height="0" />
+          <dc:Bounds x="563" y="475" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_13h26h9_di" bpmnElement="SequenceFlow_13h26h9">
-        <di:waypoint xsi:type="dc:Point" x="814" y="427" />
-        <di:waypoint xsi:type="dc:Point" x="871" y="427" />
+        <di:waypoint xsi:type="dc:Point" x="818" y="490" />
+        <di:waypoint xsi:type="dc:Point" x="871" y="490" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="843" y="412" width="0" height="0" />
+          <dc:Bounds x="845" y="475" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ScriptTask_02wc9i0_di" bpmnElement="Task_1dtbnuy">
-        <dc:Bounds x="139" y="387" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_0mz2hdm_di" bpmnElement="Task_1fj63ov">
-        <dc:Bounds x="425" y="387" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_1wagy2o_di" bpmnElement="Task_1cfkcss">
-        <dc:Bounds x="714" y="387" width="100" height="80" />
-      </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_1uno5rs_di" bpmnElement="SequenceFlow_1uno5rs">
-        <di:waypoint xsi:type="dc:Point" x="239" y="810" />
-        <di:waypoint xsi:type="dc:Point" x="292" y="810" />
+        <di:waypoint xsi:type="dc:Point" x="259" y="989" />
+        <di:waypoint xsi:type="dc:Point" x="295" y="989" />
+        <di:waypoint xsi:type="dc:Point" x="295" y="989" />
+        <di:waypoint xsi:type="dc:Point" x="330" y="989" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="266" y="795" width="0" height="0" />
+          <dc:Bounds x="310" y="989" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_1c79909_di" bpmnElement="SequenceFlow_1c79909">
-        <di:waypoint xsi:type="dc:Point" x="525" y="810" />
-        <di:waypoint xsi:type="dc:Point" x="601" y="810" />
+        <di:waypoint xsi:type="dc:Point" x="539" y="989" />
+        <di:waypoint xsi:type="dc:Point" x="601" y="989" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="563" y="795" width="0" height="0" />
+          <dc:Bounds x="570" y="974" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ScriptTask_13zephm_di" bpmnElement="Task_1hdg951">
-        <dc:Bounds x="139" y="770" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_11xqphb_di" bpmnElement="Task_1ca5ctq">
-        <dc:Bounds x="425" y="770" width="100" height="80" />
-      </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_1xfbwpi_di" bpmnElement="SequenceFlow_1xfbwpi">
-        <di:waypoint xsi:type="dc:Point" x="814" y="810" />
-        <di:waypoint xsi:type="dc:Point" x="871" y="810" />
+        <di:waypoint xsi:type="dc:Point" x="818" y="989" />
+        <di:waypoint xsi:type="dc:Point" x="880" y="989" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="843" y="795" width="0" height="0" />
+          <dc:Bounds x="849" y="974" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ScriptTask_0a4ovfa_di" bpmnElement="Task_1sove95">
-        <dc:Bounds x="714" y="770" width="100" height="80" />
-      </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ExclusiveGateway_0q323wc_di" bpmnElement="ExclusiveGateway_0q323wc" isMarkerVisible="true">
         <dc:Bounds x="291.803" y="212" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="274" y="262" width="86" height="24" />
+          <dc:Bounds x="273" y="170" width="87" height="24" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_16mo99z_di" bpmnElement="SequenceFlow_16mo99z">
@@ -744,434 +1003,804 @@
       <bpmndi:BPMNShape id="ExclusiveGateway_045e1uz_di" bpmnElement="ExclusiveGateway_045e1uz" isMarkerVisible="true">
         <dc:Bounds x="601" y="212" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="589" y="262" width="73" height="36" />
+          <dc:Bounds x="589" y="161" width="73" height="36" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0baosqi_di" bpmnElement="SequenceFlow_0baosqi">
         <di:waypoint xsi:type="dc:Point" x="651" y="237" />
-        <di:waypoint xsi:type="dc:Point" x="714" y="237" />
+        <di:waypoint xsi:type="dc:Point" x="718" y="237" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="673" y="214" width="12" height="12" />
+          <dc:Bounds x="675" y="214" width="12" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="CallActivity_1k5n5d1_di" bpmnElement="Task_0q5cdit">
-        <dc:Bounds x="1132" y="470" width="100" height="80" />
+        <dc:Bounds x="1173" y="609" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_1qmz2ez_di" bpmnElement="SequenceFlow_1qmz2ez">
-        <di:waypoint xsi:type="dc:Point" x="317" y="212" />
-        <di:waypoint xsi:type="dc:Point" x="317" y="191" />
-        <di:waypoint xsi:type="dc:Point" x="1182" y="191" />
-        <di:waypoint xsi:type="dc:Point" x="1182" y="470" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="378" y="196" width="18" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_03rkfbo_di" bpmnElement="SequenceFlow_03rkfbo">
-        <di:waypoint xsi:type="dc:Point" x="626" y="212" />
-        <di:waypoint xsi:type="dc:Point" x="626" y="187" />
-        <di:waypoint xsi:type="dc:Point" x="1182" y="187" />
-        <di:waypoint xsi:type="dc:Point" x="1182" y="470" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="683" y="166" width="18" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0v0u7mf_di" bpmnElement="SequenceFlow_0v0u7mf">
-        <di:waypoint xsi:type="dc:Point" x="1232" y="510" />
-        <di:waypoint xsi:type="dc:Point" x="1314" y="510" />
+        <di:waypoint xsi:type="dc:Point" x="1273" y="649" />
+        <di:waypoint xsi:type="dc:Point" x="1315" y="649" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1273" y="495" width="0" height="0" />
+          <dc:Bounds x="1294" y="634" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="Task_0zbogrm_di" bpmnElement="Task_0zbogrm">
-        <dc:Bounds x="1438" y="470" width="100" height="80" />
+        <dc:Bounds x="1290" y="768" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0vpd06n_di" bpmnElement="SequenceFlow_0vpd06n">
-        <di:waypoint xsi:type="dc:Point" x="1339" y="485" />
-        <di:waypoint xsi:type="dc:Point" x="1339" y="373" />
-        <di:waypoint xsi:type="dc:Point" x="1438" y="373" />
+        <di:waypoint xsi:type="dc:Point" x="1340" y="624" />
+        <di:waypoint xsi:type="dc:Point" x="1340" y="551" />
+        <di:waypoint xsi:type="dc:Point" x="1340" y="551" />
+        <di:waypoint xsi:type="dc:Point" x="1340" y="502" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1390" y="377" width="26" height="12" />
+          <dc:Bounds x="1351" y="556.9998593756898" width="26" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_1qr8msw_di" bpmnElement="SequenceFlow_1qr8msw">
-        <di:waypoint xsi:type="dc:Point" x="1364" y="510" />
-        <di:waypoint xsi:type="dc:Point" x="1405" y="510" />
-        <di:waypoint xsi:type="dc:Point" x="1405" y="510" />
-        <di:waypoint xsi:type="dc:Point" x="1438" y="510" />
+        <di:waypoint xsi:type="dc:Point" x="1340" y="674" />
+        <di:waypoint xsi:type="dc:Point" x="1340" y="722" />
+        <di:waypoint xsi:type="dc:Point" x="1340" y="722" />
+        <di:waypoint xsi:type="dc:Point" x="1340" y="768" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1380" y="515" width="42" height="12" />
+          <dc:Bounds x="1344" y="718.1219512195122" width="42" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ExclusiveGateway_0ud5uwa_di" bpmnElement="ExclusiveGateway_0ud5uwa" isMarkerVisible="true">
         <dc:Bounds x="871.1194471865745" y="211.86673247778873" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="904" y="257.86673247778873" width="73" height="36" />
+          <dc:Bounds x="859" y="164" width="73" height="36" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0k3fx7p_di" bpmnElement="SequenceFlow_0k3fx7p">
-        <di:waypoint xsi:type="dc:Point" x="814" y="237" />
+        <di:waypoint xsi:type="dc:Point" x="818" y="237" />
         <di:waypoint xsi:type="dc:Point" x="871" y="237" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="843" y="222" width="0" height="0" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1lsm3bn_di" bpmnElement="SequenceFlow_1lsm3bn">
-        <di:waypoint xsi:type="dc:Point" x="921" y="237" />
-        <di:waypoint xsi:type="dc:Point" x="1182" y="237" />
-        <di:waypoint xsi:type="dc:Point" x="1182" y="470" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1044" y="214" width="18" height="12" />
+          <dc:Bounds x="845" y="222" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ExclusiveGateway_1slvyx2_di" bpmnElement="ExclusiveGateway_1slvyx2" isMarkerVisible="true">
-        <dc:Bounds x="292" y="402" width="50" height="50" />
+        <dc:Bounds x="292" y="465" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="283" y="452" width="68" height="24" />
+          <dc:Bounds x="283" y="428" width="68" height="24" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0qy68ib_di" bpmnElement="SequenceFlow_0qy68ib">
-        <di:waypoint xsi:type="dc:Point" x="342" y="427" />
-        <di:waypoint xsi:type="dc:Point" x="425" y="427" />
+        <di:waypoint xsi:type="dc:Point" x="342" y="490" />
+        <di:waypoint xsi:type="dc:Point" x="425" y="490" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="378" y="412" width="12" height="12" />
+          <dc:Bounds x="378" y="475" width="12" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ExclusiveGateway_1ichg7h_di" bpmnElement="ExclusiveGateway_1ichg7h" isMarkerVisible="true">
-        <dc:Bounds x="601" y="402" width="50" height="50" />
+        <dc:Bounds x="601" y="465" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="590" y="452" width="72" height="24" />
+          <dc:Bounds x="590" y="428" width="72" height="24" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0q0qan8_di" bpmnElement="SequenceFlow_0q0qan8">
-        <di:waypoint xsi:type="dc:Point" x="651" y="427" />
-        <di:waypoint xsi:type="dc:Point" x="714" y="427" />
+        <di:waypoint xsi:type="dc:Point" x="651" y="490" />
+        <di:waypoint xsi:type="dc:Point" x="718" y="490" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="677" y="412" width="12" height="12" />
+          <dc:Bounds x="680" y="475" width="12" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ExclusiveGateway_1etgtgi_di" bpmnElement="ExclusiveGateway_1etgtgi" isMarkerVisible="true">
-        <dc:Bounds x="870.9141164856861" y="402" width="50" height="50" />
+        <dc:Bounds x="871" y="465" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="909" y="445" width="68" height="24" />
+          <dc:Bounds x="862" y="430" width="68" height="24" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_1c0vdki_di" bpmnElement="SequenceFlow_1c0vdki">
-        <di:waypoint xsi:type="dc:Point" x="896" y="452" />
-        <di:waypoint xsi:type="dc:Point" x="896" y="507" />
-        <di:waypoint xsi:type="dc:Point" x="90" y="507" />
-        <di:waypoint xsi:type="dc:Point" x="90" y="599" />
-        <di:waypoint xsi:type="dc:Point" x="131" y="599" />
+        <di:waypoint xsi:type="dc:Point" x="921" y="490" />
+        <di:waypoint xsi:type="dc:Point" x="995" y="490" />
+        <di:waypoint xsi:type="dc:Point" x="995" y="643" />
+        <di:waypoint xsi:type="dc:Point" x="96" y="643" />
+        <di:waypoint xsi:type="dc:Point" x="96" y="735" />
+        <di:waypoint xsi:type="dc:Point" x="139" y="735" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="906" y="484" width="12" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0bduwog_di" bpmnElement="SequenceFlow_0bduwog">
-        <di:waypoint xsi:type="dc:Point" x="317" y="402" />
-        <di:waypoint xsi:type="dc:Point" x="317" y="354" />
-        <di:waypoint xsi:type="dc:Point" x="1182" y="354" />
-        <di:waypoint xsi:type="dc:Point" x="1182" y="470" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="375" y="356" width="18" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0uwar5b_di" bpmnElement="SequenceFlow_0uwar5b">
-        <di:waypoint xsi:type="dc:Point" x="626" y="402" />
-        <di:waypoint xsi:type="dc:Point" x="626" y="359" />
-        <di:waypoint xsi:type="dc:Point" x="1182" y="359" />
-        <di:waypoint xsi:type="dc:Point" x="1182" y="470" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="676" y="367" width="18" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0i7hfj2_di" bpmnElement="SequenceFlow_0i7hfj2">
-        <di:waypoint xsi:type="dc:Point" x="921" y="427" />
-        <di:waypoint xsi:type="dc:Point" x="1182" y="427" />
-        <di:waypoint xsi:type="dc:Point" x="1182" y="470" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1044" y="412" width="18" height="12" />
+          <dc:Bounds x="949" y="466" width="12" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ExclusiveGateway_0ulrq9g_di" bpmnElement="ExclusiveGateway_0ulrq9g" isMarkerVisible="true">
-        <dc:Bounds x="441" y="574" width="50" height="50" />
+        <dc:Bounds x="464" y="710" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="445" y="631" width="88" height="36" />
+          <dc:Bounds x="445" y="660" width="88" height="36" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_04zwhw4_di" bpmnElement="SequenceFlow_04zwhw4">
-        <di:waypoint xsi:type="dc:Point" x="896" y="625" />
-        <di:waypoint xsi:type="dc:Point" x="896" y="683" />
-        <di:waypoint xsi:type="dc:Point" x="91" y="683" />
-        <di:waypoint xsi:type="dc:Point" x="91" y="810" />
-        <di:waypoint xsi:type="dc:Point" x="139" y="810" />
+        <di:waypoint xsi:type="dc:Point" x="921" y="735" />
+        <di:waypoint xsi:type="dc:Point" x="1004" y="735" />
+        <di:waypoint xsi:type="dc:Point" x="1004" y="900" />
+        <di:waypoint xsi:type="dc:Point" x="95" y="900" />
+        <di:waypoint xsi:type="dc:Point" x="95" y="989" />
+        <di:waypoint xsi:type="dc:Point" x="159" y="989" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="94" y="740.2320415029827" width="12" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_10ek8l4_di" bpmnElement="SequenceFlow_10ek8l4">
-        <di:waypoint xsi:type="dc:Point" x="466" y="574" />
-        <di:waypoint xsi:type="dc:Point" x="466" y="530" />
-        <di:waypoint xsi:type="dc:Point" x="1132" y="530" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1039" y="503.5367415795749" width="18" height="12" />
+          <dc:Bounds x="953" y="712" width="12" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ExclusiveGateway_02tj4dw_di" bpmnElement="ExclusiveGateway_02tj4dw" isMarkerVisible="true">
-        <dc:Bounds x="292.1076011846002" y="785" width="50" height="50" />
+        <dc:Bounds x="330" y="964" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="284" y="835" width="68" height="24" />
+          <dc:Bounds x="321" y="923" width="68" height="24" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_162mm0m_di" bpmnElement="SequenceFlow_162mm0m">
-        <di:waypoint xsi:type="dc:Point" x="342" y="810" />
-        <di:waypoint xsi:type="dc:Point" x="425" y="810" />
+        <di:waypoint xsi:type="dc:Point" x="380" y="989" />
+        <di:waypoint xsi:type="dc:Point" x="410" y="989" />
+        <di:waypoint xsi:type="dc:Point" x="410" y="989" />
+        <di:waypoint xsi:type="dc:Point" x="439" y="989" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="378" y="795" width="12" height="12" />
+          <dc:Bounds x="402" y="966.0361567790148" width="12" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ExclusiveGateway_1gn5lab_di" bpmnElement="ExclusiveGateway_1gn5lab" isMarkerVisible="true">
-        <dc:Bounds x="601.1076011846002" y="785" width="50" height="50" />
+        <dc:Bounds x="601" y="964" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="591" y="835" width="72" height="24" />
+          <dc:Bounds x="590" y="927" width="72" height="24" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_197t3qk_di" bpmnElement="SequenceFlow_197t3qk">
-        <di:waypoint xsi:type="dc:Point" x="651.1076011846002" y="810" />
-        <di:waypoint xsi:type="dc:Point" x="714" y="810" />
+        <di:waypoint xsi:type="dc:Point" x="651" y="989" />
+        <di:waypoint xsi:type="dc:Point" x="718" y="989" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="677" y="795" width="12" height="12" />
+          <dc:Bounds x="677" y="963.1314236383614" width="12" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ExclusiveGateway_06mv93h_di" bpmnElement="ExclusiveGateway_06mv93h" isMarkerVisible="true">
-        <dc:Bounds x="871" y="785" width="50" height="50" />
+        <dc:Bounds x="880" y="964" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="862" y="835" width="68" height="24" />
+          <dc:Bounds x="879" y="928" width="68" height="24" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_19lg15d_di" bpmnElement="SequenceFlow_19lg15d">
-        <di:waypoint xsi:type="dc:Point" x="921" y="810" />
-        <di:waypoint xsi:type="dc:Point" x="960" y="810" />
+        <di:waypoint xsi:type="dc:Point" x="930" y="989" />
+        <di:waypoint xsi:type="dc:Point" x="953" y="989" />
+        <di:waypoint xsi:type="dc:Point" x="953" y="989" />
+        <di:waypoint xsi:type="dc:Point" x="982" y="989" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="935" y="795" width="12" height="12" />
+          <dc:Bounds x="948" y="964.6410256410256" width="12" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ExclusiveGateway_0l2z6wc_di" bpmnElement="ExclusiveGateway_0l2z6wc" isMarkerVisible="true">
-        <dc:Bounds x="1105.1076011846003" y="785" width="50" height="50" />
+        <dc:Bounds x="1131" y="964" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1145" y="833" width="73" height="36" />
+          <dc:Bounds x="1119" y="916" width="73" height="36" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_12mfil6_di" bpmnElement="SequenceFlow_12mfil6">
-        <di:waypoint xsi:type="dc:Point" x="1060" y="810" />
-        <di:waypoint xsi:type="dc:Point" x="1105" y="810" />
+        <di:waypoint xsi:type="dc:Point" x="1082" y="989" />
+        <di:waypoint xsi:type="dc:Point" x="1131" y="989" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1083" y="785" width="0" height="0" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_13yjc85_di" bpmnElement="SequenceFlow_13yjc85">
-        <di:waypoint xsi:type="dc:Point" x="1155" y="810" />
-        <di:waypoint xsi:type="dc:Point" x="1182" y="810" />
-        <di:waypoint xsi:type="dc:Point" x="1182" y="550" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1160" y="795" width="18" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0waedj5_di" bpmnElement="SequenceFlow_0waedj5">
-        <di:waypoint xsi:type="dc:Point" x="317" y="785" />
-        <di:waypoint xsi:type="dc:Point" x="317" y="711" />
-        <di:waypoint xsi:type="dc:Point" x="1182" y="711" />
-        <di:waypoint xsi:type="dc:Point" x="1182" y="550" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="370" y="716" width="18" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1hg9c2l_di" bpmnElement="SequenceFlow_1hg9c2l">
-        <di:waypoint xsi:type="dc:Point" x="626" y="785" />
-        <di:waypoint xsi:type="dc:Point" x="626" y="714" />
-        <di:waypoint xsi:type="dc:Point" x="1182" y="714" />
-        <di:waypoint xsi:type="dc:Point" x="1182" y="550" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="669" y="717" width="18" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0gej71y_di" bpmnElement="SequenceFlow_0gej71y">
-        <di:waypoint xsi:type="dc:Point" x="896" y="785" />
-        <di:waypoint xsi:type="dc:Point" x="896" y="720" />
-        <di:waypoint xsi:type="dc:Point" x="1182" y="720" />
-        <di:waypoint xsi:type="dc:Point" x="1182" y="550" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="905" y="738" width="18" height="12" />
+          <dc:Bounds x="1107" y="974" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ScriptTask_1lb0lk5_di" bpmnElement="Task_1tg549h">
-        <dc:Bounds x="1438" y="333" width="100" height="80" />
+        <dc:Bounds x="1290" y="422" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ExclusiveGateway_1gmvi7n_di" bpmnElement="ExclusiveGateway_0xlxgl0" isMarkerVisible="true">
-        <dc:Bounds x="1314" y="485" width="50" height="50" />
+        <dc:Bounds x="1315" y="624" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1295" y="534.2201382033564" width="87" height="12" />
+          <dc:Bounds x="1296" y="596" width="88" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ExclusiveGateway_0y82zzx_di" bpmnElement="ExclusiveGateway_0y82zzx" isMarkerVisible="true">
-        <dc:Bounds x="1463" y="671" width="50" height="50" />
+        <dc:Bounds x="1468" y="624" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1522" y="684" width="69" height="24" />
+          <dc:Bounds x="1424" y="593" width="69" height="24" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_05gpym3_di" bpmnElement="SequenceFlow_05gpym3">
-        <di:waypoint xsi:type="dc:Point" x="1339" y="535" />
-        <di:waypoint xsi:type="dc:Point" x="1339" y="648" />
-        <di:waypoint xsi:type="dc:Point" x="1490" y="648" />
-        <di:waypoint xsi:type="dc:Point" x="1489" y="672" />
+        <di:waypoint xsi:type="dc:Point" x="1365" y="649" />
+        <di:waypoint xsi:type="dc:Point" x="1417" y="649" />
+        <di:waypoint xsi:type="dc:Point" x="1417" y="649" />
+        <di:waypoint xsi:type="dc:Point" x="1468" y="649" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1404" y="633" width="21" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1sla5dr_di" bpmnElement="SequenceFlow_1sla5dr">
-        <di:waypoint xsi:type="dc:Point" x="1463" y="696" />
-        <di:waypoint xsi:type="dc:Point" x="440" y="696" />
-        <di:waypoint xsi:type="dc:Point" x="440" y="467" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1227" y="699.0112438804176" width="85" height="24" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0iektwg_di" bpmnElement="SequenceFlow_0iektwg">
-        <di:waypoint xsi:type="dc:Point" x="1467" y="692" />
-        <di:waypoint xsi:type="dc:Point" x="1323" y="667" />
-        <di:waypoint xsi:type="dc:Point" x="764" y="667" />
-        <di:waypoint xsi:type="dc:Point" x="764" y="467" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1214" y="631" width="87" height="24" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1ttepat_di" bpmnElement="SequenceFlow_1ttepat">
-        <di:waypoint xsi:type="dc:Point" x="1468" y="701" />
-        <di:waypoint xsi:type="dc:Point" x="1346" y="735" />
-        <di:waypoint xsi:type="dc:Point" x="189" y="735" />
-        <di:waypoint xsi:type="dc:Point" x="189" y="639" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1230" y="743" width="85" height="24" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1hx1ur7_di" bpmnElement="SequenceFlow_1hx1ur7">
-        <di:waypoint xsi:type="dc:Point" x="1488" y="721" />
-        <di:waypoint xsi:type="dc:Point" x="1488" y="789" />
-        <di:waypoint xsi:type="dc:Point" x="1322" y="883" />
-        <di:waypoint xsi:type="dc:Point" x="475" y="883" />
-        <di:waypoint xsi:type="dc:Point" x="475" y="850" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1316" y="811" width="85" height="24" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0ukzynj_di" bpmnElement="SequenceFlow_0ukzynj">
-        <di:waypoint xsi:type="dc:Point" x="1488" y="721" />
-        <di:waypoint xsi:type="dc:Point" x="1488" y="818" />
-        <di:waypoint xsi:type="dc:Point" x="1346" y="918" />
-        <di:waypoint xsi:type="dc:Point" x="764" y="918" />
-        <di:waypoint xsi:type="dc:Point" x="764" y="850" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1374" y="853.0052048946286" width="85" height="24" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1lsfn19_di" bpmnElement="SequenceFlow_1lsfn19">
-        <di:waypoint xsi:type="dc:Point" x="1488" y="721" />
-        <di:waypoint xsi:type="dc:Point" x="1488" y="858" />
-        <di:waypoint xsi:type="dc:Point" x="1368" y="952" />
-        <di:waypoint xsi:type="dc:Point" x="1010" y="952" />
-        <di:waypoint xsi:type="dc:Point" x="1010" y="850" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1402" y="937.143889853408" width="85" height="24" />
+          <dc:Bounds x="1388" y="626" width="21" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_19ba94v_di" bpmnElement="SequenceFlow_19ba94v">
-        <di:waypoint xsi:type="dc:Point" x="231" y="599" />
-        <di:waypoint xsi:type="dc:Point" x="289" y="599" />
+        <di:waypoint xsi:type="dc:Point" x="239" y="735" />
+        <di:waypoint xsi:type="dc:Point" x="305" y="735" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="260" y="584" width="0" height="0" />
+          <dc:Bounds x="272" y="720" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ScriptTask_0rqgdju_di" bpmnElement="Task_0eae8go">
-        <dc:Bounds x="131" y="559" width="100" height="80" />
+        <dc:Bounds x="139" y="695" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ScriptTask_13zzxzd_di" bpmnElement="Task_040hi91">
-        <dc:Bounds x="513" y="559" width="100" height="80" />
+        <dc:Bounds x="567" y="695" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="CallActivity_1qpajth_di" bpmnElement="Task_15hpowt">
-        <dc:Bounds x="645" y="559" width="100" height="80" />
+        <dc:Bounds x="726" y="695" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ExclusiveGateway_084iffr_di" bpmnElement="ExclusiveGateway_084iffr" isMarkerVisible="true">
-        <dc:Bounds x="871" y="574" width="50" height="50" />
+        <dc:Bounds x="871" y="710" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="924" y="599" width="84" height="36" />
+          <dc:Bounds x="854" y="659" width="84" height="36" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_0pfydeg_di" bpmnElement="SequenceFlow_0pfydeg">
-        <di:waypoint xsi:type="dc:Point" x="921" y="599" />
-        <di:waypoint xsi:type="dc:Point" x="1182" y="599" />
-        <di:waypoint xsi:type="dc:Point" x="1182" y="550" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1043" y="584" width="18" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0bxgny0_di" bpmnElement="SequenceFlow_0bxgny0">
-        <di:waypoint xsi:type="dc:Point" x="491" y="599" />
-        <di:waypoint xsi:type="dc:Point" x="513" y="599" />
+        <di:waypoint xsi:type="dc:Point" x="514" y="735" />
+        <di:waypoint xsi:type="dc:Point" x="567" y="735" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="496" y="574" width="12" height="12" />
+          <dc:Bounds x="535" y="710" width="12" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_1qm0ygo_di" bpmnElement="SequenceFlow_1qm0ygo">
-        <di:waypoint xsi:type="dc:Point" x="613" y="599" />
-        <di:waypoint xsi:type="dc:Point" x="645" y="599" />
+        <di:waypoint xsi:type="dc:Point" x="667" y="735" />
+        <di:waypoint xsi:type="dc:Point" x="726" y="735" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="629" y="574" width="0" height="0" />
+          <dc:Bounds x="697" y="720" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0he2w4b_di" bpmnElement="SequenceFlow_0he2w4b">
-        <di:waypoint xsi:type="dc:Point" x="745" y="599" />
-        <di:waypoint xsi:type="dc:Point" x="871" y="599" />
+        <di:waypoint xsi:type="dc:Point" x="826" y="735" />
+        <di:waypoint xsi:type="dc:Point" x="871" y="735" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="808" y="574" width="0" height="0" />
+          <dc:Bounds x="849" y="720" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_051zp79_di" bpmnElement="SequenceFlow_051zp79">
-        <di:waypoint xsi:type="dc:Point" x="1499" y="682" />
-        <di:waypoint xsi:type="dc:Point" x="1627" y="512" />
-        <di:waypoint xsi:type="dc:Point" x="1627" y="373" />
-        <di:waypoint xsi:type="dc:Point" x="1538" y="373" />
+        <di:waypoint xsi:type="dc:Point" x="1493" y="624" />
+        <di:waypoint xsi:type="dc:Point" x="1493" y="462" />
+        <di:waypoint xsi:type="dc:Point" x="1390" y="462" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1728" y="551.5" width="0" height="0" />
+          <dc:Bounds x="1508" y="543" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_193t8ts_di" bpmnElement="SequenceFlow_193t8ts">
-        <di:waypoint xsi:type="dc:Point" x="1505" y="688" />
-        <di:waypoint xsi:type="dc:Point" x="1677" y="614" />
-        <di:waypoint xsi:type="dc:Point" x="1677" y="310" />
-        <di:waypoint xsi:type="dc:Point" x="475" y="310" />
+      <bpmndi:BPMNShape id="CallActivity_1r1hua0_di" bpmnElement="Task_1dtbnuy">
+        <dc:Bounds x="139" y="450" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0ce9xg6_di" bpmnElement="Task_1fj63ov">
+        <dc:Bounds x="425" y="450" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0iib61o_di" bpmnElement="Task_1cfkcss">
+        <dc:Bounds x="718" y="450" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1xyvwmi_di" bpmnElement="Task_1hdg951">
+        <dc:Bounds x="159" y="949" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0sghju2_di" bpmnElement="Task_1ca5ctq">
+        <dc:Bounds x="439" y="949" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1qrk3gs_di" bpmnElement="IntermediateThrowEvent_11iqe6n">
+        <dc:Bounds x="299" y="325" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="282" y="361" width="69" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_144j68y_di" bpmnElement="IntermediateThrowEvent_16f09ke">
+        <dc:Bounds x="457" y="325" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="432" y="361" width="85" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1rpfbr6_di" bpmnElement="IntermediateThrowEvent_1mtokuy">
+        <dc:Bounds x="608" y="325" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="591" y="361" width="69" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1k1fpg2_di" bpmnElement="IntermediateThrowEvent_1h8oi7w">
+        <dc:Bounds x="750" y="325" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="724" y="361" width="88" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_04ykz47_di" bpmnElement="IntermediateThrowEvent_0pwcatt">
+        <dc:Bounds x="878" y="325" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="861" y="361" width="69" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_12hm1ks_di" bpmnElement="SequenceFlow_12hm1ks">
+        <di:waypoint xsi:type="dc:Point" x="317" y="262" />
+        <di:waypoint xsi:type="dc:Point" x="317" y="325" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="323" y="283.5" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0jph3mt_di" bpmnElement="SequenceFlow_0jph3mt">
+        <di:waypoint xsi:type="dc:Point" x="475" y="325" />
         <di:waypoint xsi:type="dc:Point" x="475" y="277" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1575" y="581" width="88" height="36" />
+          <dc:Bounds x="490" y="291" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_18u8p2k_di" bpmnElement="SequenceFlow_18u8p2k">
-        <di:waypoint xsi:type="dc:Point" x="1508" y="691" />
-        <di:waypoint xsi:type="dc:Point" x="1776" y="618" />
-        <di:waypoint xsi:type="dc:Point" x="1776" y="311" />
-        <di:waypoint xsi:type="dc:Point" x="764" y="311" />
-        <di:waypoint xsi:type="dc:Point" x="764" y="277" />
+      <bpmndi:BPMNEdge id="SequenceFlow_0etr76r_di" bpmnElement="SequenceFlow_0etr76r">
+        <di:waypoint xsi:type="dc:Point" x="626" y="262" />
+        <di:waypoint xsi:type="dc:Point" x="626" y="325" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1689" y="577.5" width="81" height="24" />
+          <dc:Bounds x="632" y="283.5" width="18" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0eueu1t_di" bpmnElement="SequenceFlow_0eueu1t">
-        <di:waypoint xsi:type="dc:Point" x="1510" y="693" />
-        <di:waypoint xsi:type="dc:Point" x="1865" y="635" />
-        <di:waypoint xsi:type="dc:Point" x="1865" y="309" />
-        <di:waypoint xsi:type="dc:Point" x="189" y="309" />
-        <di:waypoint xsi:type="dc:Point" x="189" y="387" />
+      <bpmndi:BPMNEdge id="SequenceFlow_1nodcf9_di" bpmnElement="SequenceFlow_1nodcf9">
+        <di:waypoint xsi:type="dc:Point" x="768" y="325" />
+        <di:waypoint xsi:type="dc:Point" x="768" y="301" />
+        <di:waypoint xsi:type="dc:Point" x="768" y="301" />
+        <di:waypoint xsi:type="dc:Point" x="768" y="277" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1784" y="579" width="80" height="24" />
+          <dc:Bounds x="783" y="301" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_11b00u2_di" bpmnElement="SequenceFlow_11b00u2">
+        <di:waypoint xsi:type="dc:Point" x="896" y="262" />
+        <di:waypoint xsi:type="dc:Point" x="896" y="325" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="902" y="283.5" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_0u1c12l_di" bpmnElement="IntermediateThrowEvent_1w8dvxw">
+        <dc:Bounds x="171" y="571" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="158" y="606.255" width="62" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1w4kuh4_di" bpmnElement="IntermediateThrowEvent_0mqqagp">
+        <dc:Bounds x="299" y="571" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="282" y="607" width="69" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_15qyo7b_di" bpmnElement="IntermediateThrowEvent_0vyfpwj">
+        <dc:Bounds x="457" y="571" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="450" y="607" width="50" height="26" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0gui5k9_di" bpmnElement="IntermediateThrowEvent_12187dz">
+        <dc:Bounds x="608" y="571" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="591" y="607" width="69" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1aj9q5v_di" bpmnElement="IntermediateThrowEvent_0c7rese">
+        <dc:Bounds x="750" y="571" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="737" y="607" width="62" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0glqip0_di" bpmnElement="IntermediateThrowEvent_18grbwz">
+        <dc:Bounds x="878" y="571" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="861" y="607" width="69" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1qfjlt7_di" bpmnElement="SequenceFlow_1qfjlt7">
+        <di:waypoint xsi:type="dc:Point" x="189" y="571" />
+        <di:waypoint xsi:type="dc:Point" x="189" y="551" />
+        <di:waypoint xsi:type="dc:Point" x="189" y="551" />
+        <di:waypoint xsi:type="dc:Point" x="189" y="530" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="204" y="551" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ck3v34_di" bpmnElement="SequenceFlow_1ck3v34">
+        <di:waypoint xsi:type="dc:Point" x="317" y="515" />
+        <di:waypoint xsi:type="dc:Point" x="317" y="571" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="323" y="533" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0x7iupc_di" bpmnElement="SequenceFlow_0x7iupc">
+        <di:waypoint xsi:type="dc:Point" x="475" y="571" />
+        <di:waypoint xsi:type="dc:Point" x="475" y="551" />
+        <di:waypoint xsi:type="dc:Point" x="475" y="551" />
+        <di:waypoint xsi:type="dc:Point" x="475" y="530" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="490" y="551" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_079nix0_di" bpmnElement="SequenceFlow_079nix0">
+        <di:waypoint xsi:type="dc:Point" x="626" y="515" />
+        <di:waypoint xsi:type="dc:Point" x="626" y="571" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="632" y="533" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0hp0w6k_di" bpmnElement="SequenceFlow_0hp0w6k">
+        <di:waypoint xsi:type="dc:Point" x="768" y="571" />
+        <di:waypoint xsi:type="dc:Point" x="768" y="551" />
+        <di:waypoint xsi:type="dc:Point" x="768" y="551" />
+        <di:waypoint xsi:type="dc:Point" x="768" y="530" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="783" y="551" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_032i8t0_di" bpmnElement="SequenceFlow_032i8t0">
+        <di:waypoint xsi:type="dc:Point" x="896" y="515" />
+        <di:waypoint xsi:type="dc:Point" x="896" y="571" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="902" y="533" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_11xo4q3_di" bpmnElement="IntermediateThrowEvent_0r8kzqa">
+        <dc:Bounds x="171" y="818" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="144" y="853.255" width="90" height="38" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0u4mlb8_di" bpmnElement="IntermediateThrowEvent_169eg4j">
+        <dc:Bounds x="471" y="818" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="454" y="854" width="69" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1pdmno6_di" bpmnElement="IntermediateThrowEvent_0tenxiw">
+        <dc:Bounds x="599" y="818" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="576" y="854" width="81" height="38" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_07n59qs_di" bpmnElement="IntermediateThrowEvent_1mocak0">
+        <dc:Bounds x="878" y="818" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="861" y="854" width="69" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0aldwvz_di" bpmnElement="SequenceFlow_0aldwvz">
+        <di:waypoint xsi:type="dc:Point" x="189" y="818" />
+        <di:waypoint xsi:type="dc:Point" x="189" y="775" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="204" y="796.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1f0c5lj_di" bpmnElement="SequenceFlow_1f0c5lj">
+        <di:waypoint xsi:type="dc:Point" x="489" y="760" />
+        <di:waypoint xsi:type="dc:Point" x="489" y="818" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="495" y="779.6376811594203" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_111z6w4_di" bpmnElement="SequenceFlow_111z6w4">
+        <di:waypoint xsi:type="dc:Point" x="617" y="818" />
+        <di:waypoint xsi:type="dc:Point" x="617" y="775" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="632" y="796.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0pfvulx_di" bpmnElement="SequenceFlow_0pfvulx">
+        <di:waypoint xsi:type="dc:Point" x="896" y="760" />
+        <di:waypoint xsi:type="dc:Point" x="896" y="818" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="902" y="779.6376811594203" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_0xi77mq_di" bpmnElement="Task_1sove95">
+        <dc:Bounds x="718" y="949" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_0t5q3v6_di" bpmnElement="IntermediateThrowEvent_15yev7i">
+        <dc:Bounds x="191" y="1089" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="178" y="1124.255" width="61" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0yid2k4_di" bpmnElement="IntermediateThrowEvent_0osnva5">
+        <dc:Bounds x="337" y="1088" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="320" y="1124" width="69" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_0rlfyt9_di" bpmnElement="IntermediateThrowEvent_0gluaxf">
+        <dc:Bounds x="471" y="1089" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="462" y="1125" width="54" height="26" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1sk17yj_di" bpmnElement="IntermediateThrowEvent_1chu5lh">
+        <dc:Bounds x="608" y="1088" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="591" y="1124" width="69" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_0nmz72e_di" bpmnElement="IntermediateThrowEvent_0p7wh09">
+        <dc:Bounds x="750" y="1088" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="731" y="1124" width="74" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1okzqsq_di" bpmnElement="IntermediateThrowEvent_0uh8zti">
+        <dc:Bounds x="887" y="1088" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="870" y="1124" width="69" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1944cw1_di" bpmnElement="IntermediateThrowEvent_1dei2gz">
+        <dc:Bounds x="1014" y="1088" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="989" y="1124" width="85" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0ynnoam_di" bpmnElement="IntermediateThrowEvent_0fobhuu">
+        <dc:Bounds x="1138" y="1088" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1121" y="1124" width="69" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1lrbndo_di" bpmnElement="SequenceFlow_1lrbndo">
+        <di:waypoint xsi:type="dc:Point" x="209" y="1089" />
+        <di:waypoint xsi:type="dc:Point" x="209" y="1029" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="224" y="1049" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_17vwb2h_di" bpmnElement="SequenceFlow_17vwb2h">
+        <di:waypoint xsi:type="dc:Point" x="355" y="1014" />
+        <di:waypoint xsi:type="dc:Point" x="355" y="1088" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="361" y="1041" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_14mblvp_di" bpmnElement="SequenceFlow_14mblvp">
+        <di:waypoint xsi:type="dc:Point" x="489" y="1089" />
+        <di:waypoint xsi:type="dc:Point" x="489" y="1059" />
+        <di:waypoint xsi:type="dc:Point" x="489" y="1059" />
+        <di:waypoint xsi:type="dc:Point" x="489" y="1029" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="504" y="1059" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ba08lt_di" bpmnElement="SequenceFlow_0ba08lt">
+        <di:waypoint xsi:type="dc:Point" x="626" y="1014" />
+        <di:waypoint xsi:type="dc:Point" x="626" y="1088" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="632" y="1041" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_18e0jz0_di" bpmnElement="SequenceFlow_18e0jz0">
+        <di:waypoint xsi:type="dc:Point" x="768" y="1088" />
+        <di:waypoint xsi:type="dc:Point" x="768" y="1029" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="783" y="1048.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1akvi72_di" bpmnElement="SequenceFlow_1akvi72">
+        <di:waypoint xsi:type="dc:Point" x="905" y="1014" />
+        <di:waypoint xsi:type="dc:Point" x="905" y="1088" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="911" y="1041" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0usoiza_di" bpmnElement="SequenceFlow_0usoiza">
+        <di:waypoint xsi:type="dc:Point" x="1032" y="1088" />
+        <di:waypoint xsi:type="dc:Point" x="1032" y="1029" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1047" y="1048.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1sdol24_di" bpmnElement="SequenceFlow_1sdol24">
+        <di:waypoint xsi:type="dc:Point" x="1156" y="1014" />
+        <di:waypoint xsi:type="dc:Point" x="1156" y="1088" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1162" y="1041" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_0pacmdm_di" bpmnElement="IntermediateThrowEvent_1lc72r4">
+        <dc:Bounds x="166" y="1366" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="147" y="1401.255" width="73" height="26" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_19rrss6_di" bpmnElement="SequenceFlow_19rrss6">
+        <di:waypoint xsi:type="dc:Point" x="184" y="1366" />
+        <di:waypoint xsi:type="dc:Point" x="184" y="1307" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="199" y="1326.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_0123x9c_di" bpmnElement="IntermediateThrowEvent_0a9mn5c">
+        <dc:Bounds x="1070" y="631" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1053" y="667" width="69" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1cezgw4_di" bpmnElement="SequenceFlow_1cezgw4">
+        <di:waypoint xsi:type="dc:Point" x="1106" y="649" />
+        <di:waypoint xsi:type="dc:Point" x="1173" y="649" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1140" y="624" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0ahp5f8_di" bpmnElement="IntermediateThrowEvent_0x4bho9">
+        <dc:Bounds x="1524" y="417" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1499" y="380.30139720558884" width="85" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0yx79m8_di" bpmnElement="IntermediateThrowEvent_0jervei">
+        <dc:Bounds x="1562" y="445" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1565" y="413.30139720558884" width="88" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_06h1zmt_di" bpmnElement="IntermediateThrowEvent_1vju4tj">
+        <dc:Bounds x="1601" y="473" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1636" y="455.30139720558884" width="62" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0n245lm_di" bpmnElement="IntermediateThrowEvent_1fzppfz">
+        <dc:Bounds x="1636" y="514" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1672" y="494.30139720558884" width="50" height="26" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0hnmgom_di" bpmnElement="IntermediateThrowEvent_1e0qowf">
+        <dc:Bounds x="1662" y="562" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1706" y="561.3013972055888" width="61" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0g27srb_di" bpmnElement="IntermediateThrowEvent_1v93roi">
+        <dc:Bounds x="1679" y="614" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1724" y="604.3013972055888" width="90" height="38" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_14fm060_di" bpmnElement="IntermediateThrowEvent_04a1dfz">
+        <dc:Bounds x="1679" y="670" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1732" y="660.3013972055888" width="81" height="38" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_183osb4_di" bpmnElement="IntermediateThrowEvent_151z73b">
+        <dc:Bounds x="1663" y="717" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1709" y="728" width="61" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0d49blq_di" bpmnElement="IntermediateThrowEvent_10bre7q">
+        <dc:Bounds x="1636" y="756" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1682" y="774.3013972055888" width="54" height="26" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_13jsvce_di" bpmnElement="IntermediateThrowEvent_1fl945a">
+        <dc:Bounds x="1601" y="791" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1643" y="818.3013972055888" width="73" height="14" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_04zlwpn_di" bpmnElement="IntermediateThrowEvent_1lljtoh">
+        <dc:Bounds x="1562" y="819" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1603" y="851.3013972055888" width="86" height="26" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1ge1m93_di" bpmnElement="IntermediateThrowEvent_0sub2cf">
+        <dc:Bounds x="1524" y="846" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1505" y="881.3013972055888" width="73" height="26" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ei7at5_di" bpmnElement="SequenceFlow_1ei7at5">
+        <di:waypoint xsi:type="dc:Point" x="1498" y="629" />
+        <di:waypoint xsi:type="dc:Point" x="1538" y="452" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1518" y="525.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0kg02xg_di" bpmnElement="SequenceFlow_0kg02xg">
+        <di:waypoint xsi:type="dc:Point" x="1501" y="632" />
+        <di:waypoint xsi:type="dc:Point" x="1572" y="479" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1537" y="540.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1i6p53b_di" bpmnElement="SequenceFlow_1i6p53b">
+        <di:waypoint xsi:type="dc:Point" x="1504" y="635" />
+        <di:waypoint xsi:type="dc:Point" x="1608" y="504" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1556" y="554.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1yy7o24_di" bpmnElement="SequenceFlow_1yy7o24">
+        <di:waypoint xsi:type="dc:Point" x="1508" y="639" />
+        <di:waypoint xsi:type="dc:Point" x="1640" y="542" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1574" y="575.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0sqmtpl_di" bpmnElement="SequenceFlow_0sqmtpl">
+        <di:waypoint xsi:type="dc:Point" x="1511" y="642" />
+        <di:waypoint xsi:type="dc:Point" x="1663" y="586" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1587" y="599" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1shdmrj_di" bpmnElement="SequenceFlow_1shdmrj">
+        <di:waypoint xsi:type="dc:Point" x="1518" y="649" />
+        <di:waypoint xsi:type="dc:Point" x="1679" y="634" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1599" y="626.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1v1i5w4_di" bpmnElement="SequenceFlow_1v1i5w4">
+        <di:waypoint xsi:type="dc:Point" x="1514" y="653" />
+        <di:waypoint xsi:type="dc:Point" x="1680" y="685" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1597" y="654" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1h8rscx_di" bpmnElement="SequenceFlow_1h8rscx">
+        <di:waypoint xsi:type="dc:Point" x="1510" y="657" />
+        <di:waypoint xsi:type="dc:Point" x="1665" y="727" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1588" y="677" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1xzq6jb_di" bpmnElement="SequenceFlow_1xzq6jb">
+        <di:waypoint xsi:type="dc:Point" x="1507" y="660" />
+        <di:waypoint xsi:type="dc:Point" x="1640" y="764" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1574" y="697" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_165q14c_di" bpmnElement="SequenceFlow_165q14c">
+        <di:waypoint xsi:type="dc:Point" x="1504" y="663" />
+        <di:waypoint xsi:type="dc:Point" x="1608" y="795" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1556" y="714" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0wp1a6g_di" bpmnElement="SequenceFlow_0wp1a6g">
+        <di:waypoint xsi:type="dc:Point" x="1501" y="666" />
+        <di:waypoint xsi:type="dc:Point" x="1573" y="821" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1537" y="728.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0vymfh9_di" bpmnElement="SequenceFlow_0vymfh9">
+        <di:waypoint xsi:type="dc:Point" x="1497" y="670" />
+        <di:waypoint xsi:type="dc:Point" x="1537" y="847" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1517" y="743.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_14yy8v4_di" bpmnElement="SequenceFlow_14yy8v4">
+        <di:waypoint xsi:type="dc:Point" x="963" y="90" />
+        <di:waypoint xsi:type="dc:Point" x="982" y="90" />
+        <di:waypoint xsi:type="dc:Point" x="982" y="156" />
+        <di:waypoint xsi:type="dc:Point" x="103" y="156" />
+        <di:waypoint xsi:type="dc:Point" x="103" y="237" />
+        <di:waypoint xsi:type="dc:Point" x="139" y="237" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="543" y="141" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0o7degu_di" bpmnElement="Task_0iydw5o">
+        <dc:Bounds x="863" y="50" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0msgw6c_di" bpmnElement="SequenceFlow_0msgw6c">
+        <di:waypoint xsi:type="dc:Point" x="348" y="1581" />
+        <di:waypoint xsi:type="dc:Point" x="421" y="1581" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="385" y="1566" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0uhssvq_di" bpmnElement="SequenceFlow_0uhssvq">
+        <di:waypoint xsi:type="dc:Point" x="521" y="1581" />
+        <di:waypoint xsi:type="dc:Point" x="588" y="1581" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="555" y="1566" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ph6862_di" bpmnElement="SequenceFlow_0ph6862">
+        <di:waypoint xsi:type="dc:Point" x="688" y="1581" />
+        <di:waypoint xsi:type="dc:Point" x="748" y="1581" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="718" y="1566" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_10ii2tr_di" bpmnElement="Task_1cl8ayk">
+        <dc:Bounds x="248" y="1541" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_09qi8yg_di" bpmnElement="Task_0dc1x7g">
+        <dc:Bounds x="588" y="1541" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0bv5v50_di" bpmnElement="Task_1xw8w6a">
+        <dc:Bounds x="421" y="1541" width="100" height="80" />
+      </bpmndi:BPMNShape>
     </bpmndi:BPMNPlane>
   </bpmndi:BPMNDiagram>
 </bpmn2:definitions>
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/UpdateVnfInfra.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/UpdateVnfInfra.bpmn
index 2631da1..fa58c0b 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/UpdateVnfInfra.bpmn
+++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/UpdateVnfInfra.bpmn
@@ -20,7 +20,7 @@
     <bpmn2:sequenceFlow id="SequenceFlow_5" name="" sourceRef="PreProcessRequest" targetRef="ScriptTask_1" />
     <bpmn2:callActivity id="CallActivity_1" name="Completion Handler" calledElement="CompleteMsoProcess">
       <bpmn2:extensionElements>
-        <camunda:in source="UPDVnfI_CompletionHandlerRequest" target="CompleteMsoProcessRequest" />
+        <camunda:in source="CompletionHandlerRequest" target="CompleteMsoProcessRequest" />
         <camunda:in source="mso-request-id" target="mso-request-id" />
         <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
         <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
@@ -42,10 +42,11 @@
     <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="ScriptTask_4" targetRef="EndEvent_1" />
     <bpmn2:scriptTask id="ScriptTask_10" name="Completion Handler (prep)" scriptFormat="groovy">
       <bpmn2:incoming>SequenceFlow_3</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_1dqbqqx</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_17</bpmn2:outgoing>
       <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
 def uvfm = new UpdateVnfInfra()
-uvfm.completionHandlerPrep(execution, 'UPDVnfI_CompletionHandlerRequest')
+uvfm.completionHandlerPrep(execution, 'CompletionHandlerRequest')
 ]]></bpmn2:script>
     </bpmn2:scriptTask>
     <bpmn2:sequenceFlow id="SequenceFlow_17" name="" sourceRef="ScriptTask_10" targetRef="CallActivity_1" />
@@ -54,19 +55,19 @@
         <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing>
         <bpmn2:errorEventDefinition id="ErrorEventDefinition_1" />
       </bpmn2:startEvent>
-      <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_3" targetRef="ScriptTask_3" />
+      <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_3" targetRef="Task_07rej8l" />
       <bpmn2:scriptTask id="ScriptTask_3" name="Fallout Handler (prep)" scriptFormat="groovy">
-        <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming>
+        <bpmn2:incoming>SequenceFlow_0slcwxc</bpmn2:incoming>
         <bpmn2:outgoing>SequenceFlow_7</bpmn2:outgoing>
         <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
-def uvfm = new UpdateVfModuleInfra()
-uvfm.falloutHandlerPrep(execution, 'UPDVnfI_FalloutHandlerRequest')
+def uvfm = new UpdateVnfInfra()
+uvfm.falloutHandlerPrep(execution, 'FalloutHandlerRequest')
 ]]></bpmn2:script>
       </bpmn2:scriptTask>
       <bpmn2:sequenceFlow id="SequenceFlow_7" sourceRef="ScriptTask_3" targetRef="CallActivity_2" />
       <bpmn2:callActivity id="CallActivity_2" name="Fallout Handler" calledElement="FalloutHandler">
         <bpmn2:extensionElements>
-          <camunda:in source="UPDVnfI_FalloutHandlerRequest" target="FalloutHandlerRequest" />
+          <camunda:in source="FalloutHandlerRequest" target="FalloutHandlerRequest" />
           <camunda:in source="mso-request-id" target="mso-request-id" />
           <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
           <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
@@ -79,6 +80,39 @@
         <bpmn2:terminateEventDefinition id="TerminateEventDefinition_1" />
       </bpmn2:endEvent>
       <bpmn2:sequenceFlow id="SequenceFlow_19" name="" sourceRef="CallActivity_2" targetRef="EndEvent_2" />
+      <bpmn2:sequenceFlow id="SequenceFlow_0a0lfh8" sourceRef="Task_07rej8l" targetRef="Task_18twhln" />
+      <bpmn2:sequenceFlow id="SequenceFlow_0r0o5yt" sourceRef="Task_18twhln" targetRef="Task_16v4gow" />
+      <bpmn2:sequenceFlow id="SequenceFlow_0slcwxc" sourceRef="Task_16v4gow" targetRef="ScriptTask_3" />
+      <bpmn2:scriptTask id="Task_07rej8l" name="PreProcess Rollback" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_0a0lfh8</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def uvfm = new VnfInPlaceUpdate()
+uvfm.preProcessRollback(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:scriptTask id="Task_16v4gow" name="PostProcess Rollback" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_0r0o5yt</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_0slcwxc</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def uvfm = new VnfInPlaceUpdate()
+uvfm.postProcessRollback(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:callActivity id="Task_18twhln" name="Rollback Processing" calledElement="RollbackVnf">
+        <bpmn2:extensionElements>
+          <camunda:in source="msoRequestId" target="msoRequestId" />
+          <camunda:in source="vnfId" target="vnfId" />
+          <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+          <camunda:in source="rollbackSetClosedLoopDisabledFlag" target="rollbackSetClosedLoopDisabledFlag" />
+          <camunda:in source="rollbackSetVnfInMaintenanceFlag" target="rollbackSetVnfInMaintenanceFlag" />
+          <camunda:in source="rollbackVnfStop" target="rollbackVnfStop" />
+          <camunda:in source="rollbackVnfLock" target="rollbackVnfLock" />
+          <camunda:in source="errorCode" target="errorCode" />
+          <camunda:in source="rollbackQuiesceTraffic" target="rollbackQuiesceTraffic" />
+          <camunda:out source="rollbackSuccessful" target="rollbackSuccessful" />
+        </bpmn2:extensionElements>
+        <bpmn2:incoming>SequenceFlow_0a0lfh8</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_0r0o5yt</bpmn2:outgoing>
+      </bpmn2:callActivity>
     </bpmn2:subProcess>
     <bpmn2:endEvent id="EndEvent_3">
       <bpmn2:incoming>SequenceFlow_12</bpmn2:incoming>
@@ -95,23 +129,24 @@
     <bpmn2:sequenceFlow id="SequenceFlow_4" name="" sourceRef="StartEvent_1" targetRef="PreProcessRequest" />
     <bpmn2:callActivity id="ScriptTask_6" name="DoUpdateVnfAndModules" calledElement="DoUpdateVnfAndModules">
       <bpmn2:extensionElements>
-        <camunda:in source="UPDVnfI_requestId" target="msoRequestId" />
+        <camunda:in source="requestId" target="msoRequestId" />
         <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
         <camunda:out source="WorkflowException" target="WorkflowException" />
         <camunda:in source="isVidRequest" target="isVidRequest" />
-        <camunda:in source="UPDVnfI_vnfType" target="vnfType" />
-        <camunda:in source="UPDVnfI_vnfName" target="vnfName" />
-        <camunda:in source="UPDVnfI_vnfId" target="vnfId" />
-        <camunda:in source="UPDVnfI_asdcServiceModelVersion" target="asdcServiceModelVersion" />
-        <camunda:in source="UPDVnfI_serviceInstanceId" target="serviceInstanceId" />
-        <camunda:in source="UPDVnfI_serviceModelInfo" target="serviceModelInfo" />
-        <camunda:in source="UPDVnfI_vnfModelInfo" target="vnfModelInfo" />
-        <camunda:in source="UPDVnfI_globalSubscriberId" target="globalSubscriberId" />
-        <camunda:in source="UPDVnfI_lcpCloudRegionId" target="lcpCloudRegionId" />
-        <camunda:in source="UPDVnfI_tenantId" target="tenantId" />
-        <camunda:in source="UPDVnfI_sdncVersion" target="sdncVersion" />
-        <camunda:in source="UPDVnfI_usePreload" target="usePreload" />
-        <camunda:in source="UPDVnfI_vnfResourceDecomposition" target="vnfResourceDecomposition" />
+        <camunda:in source="vnfType" target="vnfType" />
+        <camunda:in source="vnfName" target="vnfName" />
+        <camunda:in source="vnfId" target="vnfId" />
+        <camunda:in source="asdcServiceModelVersion" target="asdcServiceModelVersion" />
+        <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
+        <camunda:in source="serviceModelInfo" target="serviceModelInfo" />
+        <camunda:in source="vnfModelInfo" target="vnfModelInfo" />
+        <camunda:in source="globalSubscriberId" target="globalSubscriberId" />
+        <camunda:in source="lcpCloudRegionId" target="lcpCloudRegionId" />
+        <camunda:in source="tenantId" target="tenantId" />
+        <camunda:in source="sdncVersion" target="sdncVersion" />
+        <camunda:in source="usePreload" target="usePreload" />
+        <camunda:in source="vnfResourceDecomposition" target="vnfResourceDecomposition" />
+        <camunda:in source="vfModuleInputParams" target="vfModuleInputParams" />
       </bpmn2:extensionElements>
       <bpmn2:incoming>SequenceFlow_19ba94v</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_0gzzeru</bpmn2:outgoing>
@@ -122,7 +157,7 @@
       <bpmn2:extensionElements>
         <camunda:in source="msoRequestId" target="msoRequestId" />
         <camunda:in source="serviceInstanceId" target="serviceInstanceId" />
-        <camunda:in source="UPDVnfI_serviceModelInfo" target="serviceModelInfo" />
+        <camunda:in source="serviceModelInfo" target="serviceModelInfo" />
         <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
         <camunda:out source="WorkflowException" target="WorkflowException" />
         <camunda:out source="serviceDecomposition" target="serviceDecomposition" />
@@ -130,7 +165,7 @@
       <bpmn2:incoming>SequenceFlow_0y0jt4l</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_1w35ov3</bpmn2:outgoing>
     </bpmn2:callActivity>
-    <bpmn2:sequenceFlow id="SequenceFlow_053qjfy" sourceRef="Task_1opcb4j" targetRef="Task_0vy2zge" />
+    <bpmn2:sequenceFlow id="SequenceFlow_053qjfy" sourceRef="Task_1opcb4j" targetRef="Task_155eyrq" />
     <bpmn2:scriptTask id="Task_1opcb4j" name="Get VnfResourceDecomposition" scriptFormat="groovy">
       <bpmn2:incoming>SequenceFlow_1w35ov3</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_053qjfy</bpmn2:outgoing>
@@ -141,7 +176,7 @@
     <bpmn2:sequenceFlow id="SequenceFlow_0y0jt4l" sourceRef="ScriptTask_1" targetRef="Task_1gg76h7" />
     <bpmn2:scriptTask id="Task_1rxiqe1" name="Check If VNF Is In Maintenance in A&#38;AI" scriptFormat="groovy">
       <bpmn2:incoming>SequenceFlow_16mo99z</bpmn2:incoming>
-      <bpmn2:incoming>SequenceFlow_0fxuur5</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_1pj72fw</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing>
       <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
 def uvfm = new UpdateVnfInfra()
@@ -153,7 +188,7 @@
     <bpmn2:sequenceFlow id="SequenceFlow_0gzzeru" sourceRef="ScriptTask_6" targetRef="ExclusiveGateway_0ulrq9g" />
     <bpmn2:scriptTask id="Task_0ap39ka" name="Set VNF inMaintenance Flag in A&#38;AI" scriptFormat="groovy">
       <bpmn2:incoming>SequenceFlow_0baosqi</bpmn2:incoming>
-      <bpmn2:incoming>SequenceFlow_1wax44p</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_1lmijmb</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_0k3fx7p</bpmn2:outgoing>
       <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
 def uvfm = new UpdateVnfInfra()
@@ -162,7 +197,7 @@
     </bpmn2:scriptTask>
     <bpmn2:scriptTask id="Task_1drglpt" name="Unset VNF In Maintenance Flag in A&#38;AI" scriptFormat="groovy">
       <bpmn2:incoming>SequenceFlow_19lg15d</bpmn2:incoming>
-      <bpmn2:incoming>SequenceFlow_1lsfn19</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_11p8elx</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_12mfil6</bpmn2:outgoing>
       <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
 def uvfm = new UpdateVnfInfra()
@@ -170,7 +205,7 @@
 ]]></bpmn2:script>
     </bpmn2:scriptTask>
     <bpmn2:scriptTask id="Task_0vy2zge" name="Check If Physical Servers Are Locked in A&#38;AI" scriptFormat="groovy">
-      <bpmn2:incoming>SequenceFlow_053qjfy</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_178fxkj</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_0usxnlk</bpmn2:outgoing>
       <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
 def uvfm = new UpdateVnfInfra()
@@ -180,201 +215,105 @@
     <bpmn2:sequenceFlow id="SequenceFlow_0xx8y1s" sourceRef="Task_1dtbnuy" targetRef="ExclusiveGateway_1slvyx2" />
     <bpmn2:sequenceFlow id="SequenceFlow_0a6pdza" sourceRef="Task_1fj63ov" targetRef="ExclusiveGateway_1ichg7h" />
     <bpmn2:sequenceFlow id="SequenceFlow_13h26h9" sourceRef="Task_1cfkcss" targetRef="ExclusiveGateway_1etgtgi" />
-    <bpmn2:scriptTask id="Task_1dtbnuy" name="Call APP-C VNF Lock" scriptFormat="groovy">
-      <bpmn2:incoming>SequenceFlow_1bkhs8m</bpmn2:incoming>
-      <bpmn2:incoming>SequenceFlow_1nlqlwn</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_0xx8y1s</bpmn2:outgoing>
-      <bpmn2:script><![CDATA[import org.openecomp.appc.client.lcm.model.Action
-import org.openecomp.mso.bpmn.infrastructure.scripts.*
-def uvfm = new UpdateVnfInfra()
-uvfm.runAppcCommand(execution, Action.Lock)
-]]></bpmn2:script>
-    </bpmn2:scriptTask>
-    <bpmn2:scriptTask id="Task_1fj63ov" name="Call APP-C Health Check" scriptFormat="groovy">
-      <bpmn2:incoming>SequenceFlow_0qy68ib</bpmn2:incoming>
-      <bpmn2:incoming>SequenceFlow_1sla5dr</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_0a6pdza</bpmn2:outgoing>
-      <bpmn2:script><![CDATA[import org.openecomp.appc.client.lcm.model.Action
-import org.openecomp.mso.bpmn.infrastructure.scripts.*
-def uvfm = new UpdateVnfInfra()
-uvfm.runAppcCommand(execution, Action.HealthCheck)]]></bpmn2:script>
-    </bpmn2:scriptTask>
-    <bpmn2:scriptTask id="Task_1cfkcss" name="Call APP-C VNF Graceful Stop" scriptFormat="groovy">
-      <bpmn2:incoming>SequenceFlow_0q0qan8</bpmn2:incoming>
-      <bpmn2:incoming>SequenceFlow_0iektwg</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_13h26h9</bpmn2:outgoing>
-      <bpmn2:script><![CDATA[import org.openecomp.appc.client.lcm.model.Action
-import org.openecomp.mso.bpmn.infrastructure.scripts.*
-def uvfm = new UpdateVnfInfra()
-uvfm.runAppcCommand(execution, Action.Stop)]]></bpmn2:script>
-    </bpmn2:scriptTask>
     <bpmn2:sequenceFlow id="SequenceFlow_1uno5rs" sourceRef="Task_1hdg951" targetRef="ExclusiveGateway_02tj4dw" />
     <bpmn2:sequenceFlow id="SequenceFlow_1c79909" sourceRef="Task_1ca5ctq" targetRef="ExclusiveGateway_1gn5lab" />
-    <bpmn2:scriptTask id="Task_1hdg951" name="Call APP-C VNF Start" scriptFormat="groovy">
-      <bpmn2:incoming>SequenceFlow_04zwhw4</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_1uno5rs</bpmn2:outgoing>
-      <bpmn2:script><![CDATA[import org.openecomp.appc.client.lcm.model.Action
-import org.openecomp.mso.bpmn.infrastructure.scripts.*
-def uvfm = new UpdateVnfInfra()
-uvfm.runAppcCommand(execution, Action.Start)]]></bpmn2:script>
-    </bpmn2:scriptTask>
-    <bpmn2:scriptTask id="Task_1ca5ctq" name="Call APP-C Health Check" scriptFormat="groovy">
-      <bpmn2:incoming>SequenceFlow_162mm0m</bpmn2:incoming>
-      <bpmn2:incoming>SequenceFlow_1hx1ur7</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_1c79909</bpmn2:outgoing>
-      <bpmn2:script><![CDATA[import org.openecomp.appc.client.lcm.model.Action
-import org.openecomp.mso.bpmn.infrastructure.scripts.*
-def uvfm = new UpdateVnfInfra()
-uvfm.runAppcCommand(execution, Action.HealthCheck)]]></bpmn2:script>
-    </bpmn2:scriptTask>
     <bpmn2:sequenceFlow id="SequenceFlow_1xfbwpi" sourceRef="Task_1sove95" targetRef="ExclusiveGateway_06mv93h" />
-    <bpmn2:scriptTask id="Task_1sove95" name="Call APP-C VNF Unlock" scriptFormat="groovy">
-      <bpmn2:incoming>SequenceFlow_197t3qk</bpmn2:incoming>
-      <bpmn2:incoming>SequenceFlow_0ukzynj</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_1xfbwpi</bpmn2:outgoing>
-      <bpmn2:script><![CDATA[import org.openecomp.appc.client.lcm.model.Action
-import org.openecomp.mso.bpmn.infrastructure.scripts.*
-def uvfm = new UpdateVnfInfra()
-uvfm.runAppcCommand(execution, Action.Unlock)]]></bpmn2:script>
-    </bpmn2:scriptTask>
     <bpmn2:exclusiveGateway id="ExclusiveGateway_0q323wc" name="Error on PServers Check?" default="SequenceFlow_16mo99z">
       <bpmn2:incoming>SequenceFlow_0usxnlk</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_16mo99z</bpmn2:outgoing>
-      <bpmn2:outgoing>SequenceFlow_1qmz2ez</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_1esmtgy</bpmn2:outgoing>
     </bpmn2:exclusiveGateway>
     <bpmn2:sequenceFlow id="SequenceFlow_16mo99z" name="no" sourceRef="ExclusiveGateway_0q323wc" targetRef="Task_1rxiqe1" />
     <bpmn2:exclusiveGateway id="ExclusiveGateway_045e1uz" name="Error On inMaintenance Check?" default="SequenceFlow_0baosqi">
       <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_0baosqi</bpmn2:outgoing>
-      <bpmn2:outgoing>SequenceFlow_03rkfbo</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_1jmzl1j</bpmn2:outgoing>
     </bpmn2:exclusiveGateway>
     <bpmn2:sequenceFlow id="SequenceFlow_0baosqi" name="no" sourceRef="ExclusiveGateway_045e1uz" targetRef="Task_0ap39ka" />
     <bpmn2:callActivity id="Task_0q5cdit" name="Rainy Day Handler" calledElement="RainyDayHandler">
       <bpmn2:extensionElements>
         <camunda:in source="msoRequestId" target="msoRequestId" />
         <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
-        <camunda:in source="UPDVnfI_serviceType" target="serviceType" />
-        <camunda:in source="UPDVnfI_nfRole" target="vnfType" />
-        <camunda:in source="UPDVnfI_currentActivity" target="currentActivity" />
-        <camunda:in source="UPDVnfI_workStep" target="workStep" />
-        <camunda:in source="UPDVnfI_failedActivity" target="failedActivity" />
-        <camunda:in source="UPDVnfI_errorCode" target="errorCode" />
-        <camunda:in source="UPDVnfI_errorText" target="errorText" />
+        <camunda:in source="serviceType" target="serviceType" />
+        <camunda:in source="nfRole" target="vnfType" />
+        <camunda:in source="currentActivity" target="currentActivity" />
+        <camunda:in source="workStep" target="workStep" />
+        <camunda:in source="failedActivity" target="failedActivity" />
+        <camunda:in source="errorCode" target="errorCode" />
+        <camunda:in source="errorText" target="errorText" />
         <camunda:out source="WorkflowException" target="WorkflowException" />
-        <camunda:out source="handlingCode" target="UPDVnfI_disposition" />
-        <camunda:in source="UPDVnfI_requestorId" target="requestorId" />
-        <camunda:out source="taskId" target="UPDVnfI_taskId" />
+        <camunda:out source="handlingCode" target="disposition" />
+        <camunda:in source="requestorId" target="requestorId" />
+        <camunda:out source="taskId" target="taskId" />
+        <camunda:in source="vnfName" target="vnfName" />
       </bpmn2:extensionElements>
-      <bpmn2:incoming>SequenceFlow_1qmz2ez</bpmn2:incoming>
-      <bpmn2:incoming>SequenceFlow_03rkfbo</bpmn2:incoming>
-      <bpmn2:incoming>SequenceFlow_1lsm3bn</bpmn2:incoming>
-      <bpmn2:incoming>SequenceFlow_0bduwog</bpmn2:incoming>
-      <bpmn2:incoming>SequenceFlow_0uwar5b</bpmn2:incoming>
-      <bpmn2:incoming>SequenceFlow_0i7hfj2</bpmn2:incoming>
-      <bpmn2:incoming>SequenceFlow_10ek8l4</bpmn2:incoming>
-      <bpmn2:incoming>SequenceFlow_13yjc85</bpmn2:incoming>
-      <bpmn2:incoming>SequenceFlow_0waedj5</bpmn2:incoming>
-      <bpmn2:incoming>SequenceFlow_1hg9c2l</bpmn2:incoming>
-      <bpmn2:incoming>SequenceFlow_0gej71y</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_1nplvhi</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_0v0u7mf</bpmn2:outgoing>
     </bpmn2:callActivity>
-    <bpmn2:sequenceFlow id="SequenceFlow_1qmz2ez" name="yes" sourceRef="ExclusiveGateway_0q323wc" targetRef="Task_0q5cdit">
-      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("UPDVnfI_errorCode") != "0"]]></bpmn2:conditionExpression>
-    </bpmn2:sequenceFlow>
-    <bpmn2:sequenceFlow id="SequenceFlow_03rkfbo" name="yes" sourceRef="ExclusiveGateway_045e1uz" targetRef="Task_0q5cdit">
-      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("UPDVnfI_errorCode") != "0"]]></bpmn2:conditionExpression>
-    </bpmn2:sequenceFlow>
     <bpmn2:sequenceFlow id="SequenceFlow_0v0u7mf" sourceRef="Task_0q5cdit" targetRef="ExclusiveGateway_0xlxgl0" />
     <bpmn2:task id="Task_0zbogrm" name="Rollback Processing">
       <bpmn2:incoming>SequenceFlow_1qr8msw</bpmn2:incoming>
     </bpmn2:task>
     <bpmn2:sequenceFlow id="SequenceFlow_0vpd06n" name="Abort" sourceRef="ExclusiveGateway_0xlxgl0" targetRef="Task_1tg549h">
-      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("UPDVnfI_disposition") == "Abort"]]></bpmn2:conditionExpression>
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("disposition") == "Abort"]]></bpmn2:conditionExpression>
     </bpmn2:sequenceFlow>
     <bpmn2:sequenceFlow id="SequenceFlow_1qr8msw" name="Rollback" sourceRef="ExclusiveGateway_0xlxgl0" targetRef="Task_0zbogrm">
-      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("UPDVnfI_disposition") == "Rollback"]]></bpmn2:conditionExpression>
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("disposition") == "Rollback"]]></bpmn2:conditionExpression>
     </bpmn2:sequenceFlow>
     <bpmn2:exclusiveGateway id="ExclusiveGateway_0ud5uwa" name="Eror on inMaintenance Set?" default="SequenceFlow_1bkhs8m">
       <bpmn2:incoming>SequenceFlow_0k3fx7p</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_1bkhs8m</bpmn2:outgoing>
-      <bpmn2:outgoing>SequenceFlow_1lsm3bn</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_010ynjs</bpmn2:outgoing>
     </bpmn2:exclusiveGateway>
     <bpmn2:sequenceFlow id="SequenceFlow_0k3fx7p" sourceRef="Task_0ap39ka" targetRef="ExclusiveGateway_0ud5uwa" />
-    <bpmn2:sequenceFlow id="SequenceFlow_1lsm3bn" name="yes" sourceRef="ExclusiveGateway_0ud5uwa" targetRef="Task_0q5cdit">
-      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("UPDVnfI_errorCode") != "0"]]></bpmn2:conditionExpression>
-    </bpmn2:sequenceFlow>
     <bpmn2:exclusiveGateway id="ExclusiveGateway_1slvyx2" name="Error on VNF Lock?" default="SequenceFlow_0qy68ib">
       <bpmn2:incoming>SequenceFlow_0xx8y1s</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_0qy68ib</bpmn2:outgoing>
-      <bpmn2:outgoing>SequenceFlow_0bduwog</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_1qsxbp4</bpmn2:outgoing>
     </bpmn2:exclusiveGateway>
     <bpmn2:sequenceFlow id="SequenceFlow_0qy68ib" name="no" sourceRef="ExclusiveGateway_1slvyx2" targetRef="Task_1fj63ov" />
     <bpmn2:exclusiveGateway id="ExclusiveGateway_1ichg7h" name="Error on Pre Health Check?" default="SequenceFlow_0q0qan8">
       <bpmn2:incoming>SequenceFlow_0a6pdza</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_0q0qan8</bpmn2:outgoing>
-      <bpmn2:outgoing>SequenceFlow_0uwar5b</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_15bl7wd</bpmn2:outgoing>
     </bpmn2:exclusiveGateway>
     <bpmn2:sequenceFlow id="SequenceFlow_0q0qan8" name="no" sourceRef="ExclusiveGateway_1ichg7h" targetRef="Task_1cfkcss" />
     <bpmn2:exclusiveGateway id="ExclusiveGateway_1etgtgi" name="Error on VNF Stop?" default="SequenceFlow_1c0vdki">
       <bpmn2:incoming>SequenceFlow_13h26h9</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_1c0vdki</bpmn2:outgoing>
-      <bpmn2:outgoing>SequenceFlow_0i7hfj2</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_1m84lq5</bpmn2:outgoing>
     </bpmn2:exclusiveGateway>
     <bpmn2:sequenceFlow id="SequenceFlow_1c0vdki" name="no" sourceRef="ExclusiveGateway_1etgtgi" targetRef="Task_0eae8go" />
-    <bpmn2:sequenceFlow id="SequenceFlow_0bduwog" name="yes" sourceRef="ExclusiveGateway_1slvyx2" targetRef="Task_0q5cdit">
-      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("UPDVnfI_errorCode") != "0"]]></bpmn2:conditionExpression>
-    </bpmn2:sequenceFlow>
-    <bpmn2:sequenceFlow id="SequenceFlow_0uwar5b" name="yes" sourceRef="ExclusiveGateway_1ichg7h" targetRef="Task_0q5cdit">
-      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("UPDVnfI_errorCode") != "0"]]></bpmn2:conditionExpression>
-    </bpmn2:sequenceFlow>
-    <bpmn2:sequenceFlow id="SequenceFlow_0i7hfj2" name="yes" sourceRef="ExclusiveGateway_1etgtgi" targetRef="Task_0q5cdit">
-      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("UPDVnfI_errorCode") != "0"]]></bpmn2:conditionExpression>
-    </bpmn2:sequenceFlow>
     <bpmn2:exclusiveGateway id="ExclusiveGateway_0ulrq9g" name="Error on DoUpdateVnfAndNModules?" default="SequenceFlow_04zwhw4">
       <bpmn2:incoming>SequenceFlow_0gzzeru</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_04zwhw4</bpmn2:outgoing>
-      <bpmn2:outgoing>SequenceFlow_10ek8l4</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0fog99f</bpmn2:outgoing>
     </bpmn2:exclusiveGateway>
     <bpmn2:sequenceFlow id="SequenceFlow_04zwhw4" name="no" sourceRef="ExclusiveGateway_0ulrq9g" targetRef="Task_1hdg951" />
-    <bpmn2:sequenceFlow id="SequenceFlow_10ek8l4" name="yes" sourceRef="ExclusiveGateway_0ulrq9g" targetRef="Task_0q5cdit">
-      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("UPDVnfI_errorCode") != "0"]]></bpmn2:conditionExpression>
-    </bpmn2:sequenceFlow>
     <bpmn2:exclusiveGateway id="ExclusiveGateway_02tj4dw" name="Error on VNF Start?" default="SequenceFlow_162mm0m">
       <bpmn2:incoming>SequenceFlow_1uno5rs</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_162mm0m</bpmn2:outgoing>
-      <bpmn2:outgoing>SequenceFlow_0waedj5</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_12g63pl</bpmn2:outgoing>
     </bpmn2:exclusiveGateway>
     <bpmn2:sequenceFlow id="SequenceFlow_162mm0m" name="no" sourceRef="ExclusiveGateway_02tj4dw" targetRef="Task_1ca5ctq" />
     <bpmn2:exclusiveGateway id="ExclusiveGateway_1gn5lab" name="Error on Post Health Check?" default="SequenceFlow_197t3qk">
       <bpmn2:incoming>SequenceFlow_1c79909</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_197t3qk</bpmn2:outgoing>
-      <bpmn2:outgoing>SequenceFlow_1hg9c2l</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0l83v2k</bpmn2:outgoing>
     </bpmn2:exclusiveGateway>
     <bpmn2:sequenceFlow id="SequenceFlow_197t3qk" name="no" sourceRef="ExclusiveGateway_1gn5lab" targetRef="Task_1sove95" />
     <bpmn2:exclusiveGateway id="ExclusiveGateway_06mv93h" name="Error on VNF Unlock?" default="SequenceFlow_19lg15d">
       <bpmn2:incoming>SequenceFlow_1xfbwpi</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_19lg15d</bpmn2:outgoing>
-      <bpmn2:outgoing>SequenceFlow_0gej71y</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_07fhkt4</bpmn2:outgoing>
     </bpmn2:exclusiveGateway>
     <bpmn2:sequenceFlow id="SequenceFlow_19lg15d" name="no" sourceRef="ExclusiveGateway_06mv93h" targetRef="Task_1drglpt" />
     <bpmn2:exclusiveGateway id="ExclusiveGateway_0l2z6wc" name="Erorr on inMaintenance Unset?" default="SequenceFlow_3">
       <bpmn2:incoming>SequenceFlow_12mfil6</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_13yjc85</bpmn2:outgoing>
       <bpmn2:outgoing>SequenceFlow_3</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0p94lgv</bpmn2:outgoing>
     </bpmn2:exclusiveGateway>
     <bpmn2:sequenceFlow id="SequenceFlow_12mfil6" sourceRef="Task_1drglpt" targetRef="ExclusiveGateway_0l2z6wc" />
-    <bpmn2:sequenceFlow id="SequenceFlow_13yjc85" name="yes" sourceRef="ExclusiveGateway_0l2z6wc" targetRef="Task_0q5cdit">
-      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("UPDVnfI_errorCode") != "0"]]></bpmn2:conditionExpression>
-    </bpmn2:sequenceFlow>
-    <bpmn2:sequenceFlow id="SequenceFlow_0waedj5" name="yes" sourceRef="ExclusiveGateway_02tj4dw" targetRef="Task_0q5cdit">
-      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("UPDVnfI_errorCode") != "0"]]></bpmn2:conditionExpression>
-    </bpmn2:sequenceFlow>
-    <bpmn2:sequenceFlow id="SequenceFlow_1hg9c2l" name="yes" sourceRef="ExclusiveGateway_1gn5lab" targetRef="Task_0q5cdit">
-      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("UPDVnfI_errorCode") != "0"]]></bpmn2:conditionExpression>
-    </bpmn2:sequenceFlow>
-    <bpmn2:sequenceFlow id="SequenceFlow_0gej71y" name="yes" sourceRef="ExclusiveGateway_06mv93h" targetRef="Task_0q5cdit">
-      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("UPDVnfI_errorCode") != "0"]]></bpmn2:conditionExpression>
-    </bpmn2:sequenceFlow>
     <bpmn2:scriptTask id="Task_1tg549h" name="Abort Processing" scriptFormat="groovy">
       <bpmn2:incoming>SequenceFlow_0vpd06n</bpmn2:incoming>
       <bpmn2:incoming>SequenceFlow_1c022sy</bpmn2:incoming>
@@ -390,57 +329,358 @@
     </bpmn2:exclusiveGateway>
     <bpmn2:exclusiveGateway id="ExclusiveGateway_0y82zzx" name="Which step to skip?" default="SequenceFlow_1c022sy">
       <bpmn2:incoming>SequenceFlow_05gpym3</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_1sla5dr</bpmn2:outgoing>
-      <bpmn2:outgoing>SequenceFlow_0iektwg</bpmn2:outgoing>
-      <bpmn2:outgoing>SequenceFlow_1ttepat</bpmn2:outgoing>
-      <bpmn2:outgoing>SequenceFlow_1hx1ur7</bpmn2:outgoing>
-      <bpmn2:outgoing>SequenceFlow_0ukzynj</bpmn2:outgoing>
-      <bpmn2:outgoing>SequenceFlow_1lsfn19</bpmn2:outgoing>
-      <bpmn2:outgoing>SequenceFlow_0fxuur5</bpmn2:outgoing>
-      <bpmn2:outgoing>SequenceFlow_1wax44p</bpmn2:outgoing>
-      <bpmn2:outgoing>SequenceFlow_1nlqlwn</bpmn2:outgoing>
       <bpmn2:outgoing>SequenceFlow_1c022sy</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0tqrgop</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_126nlmw</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0mw3mwl</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_13md9cw</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0xylem3</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_1c5mxd5</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0u8hiu2</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0fs7ay9</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_00qwx4v</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_14s8ji9</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0kricor</bpmn2:outgoing>
     </bpmn2:exclusiveGateway>
     <bpmn2:sequenceFlow id="SequenceFlow_05gpym3" name="Skip" sourceRef="ExclusiveGateway_0xlxgl0" targetRef="ExclusiveGateway_0y82zzx">
-      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("UPDVnfI_disposition") == "Skip"]]></bpmn2:conditionExpression>
-    </bpmn2:sequenceFlow>
-    <bpmn2:sequenceFlow id="SequenceFlow_1sla5dr" name="Skip APP-C VNF Lock" sourceRef="ExclusiveGateway_0y82zzx" targetRef="Task_1fj63ov">
-      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("UPDVnfI_workStep") == "LockVNF"]]></bpmn2:conditionExpression>
-    </bpmn2:sequenceFlow>
-    <bpmn2:sequenceFlow id="SequenceFlow_0iektwg" name="Skip APP-C VNF Pre Health Check" sourceRef="ExclusiveGateway_0y82zzx" targetRef="Task_1cfkcss">
-      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("UPDVnfI_workStep") == "HealthCheckVNF1"]]></bpmn2:conditionExpression>
-    </bpmn2:sequenceFlow>
-    <bpmn2:sequenceFlow id="SequenceFlow_1ttepat" name="Skip APP-C VNF Stop" sourceRef="ExclusiveGateway_0y82zzx" targetRef="Task_0eae8go">
-      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("UPDVnfI_workStep") == "StopVNF"]]></bpmn2:conditionExpression>
-    </bpmn2:sequenceFlow>
-    <bpmn2:sequenceFlow id="SequenceFlow_1hx1ur7" name="Skip APP-C VNF Start" sourceRef="ExclusiveGateway_0y82zzx" targetRef="Task_1ca5ctq">
-      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("UPDVnfI_workStep") == "StartVNF"]]></bpmn2:conditionExpression>
-    </bpmn2:sequenceFlow>
-    <bpmn2:sequenceFlow id="SequenceFlow_0ukzynj" name="Skip APP-C Post Health Check" sourceRef="ExclusiveGateway_0y82zzx" targetRef="Task_1sove95">
-      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("UPDVnfI_workStep") == "HealthCheckVNF2"]]></bpmn2:conditionExpression>
-    </bpmn2:sequenceFlow>
-    <bpmn2:sequenceFlow id="SequenceFlow_1lsfn19" name="Skip APP-C VNF Unlock" sourceRef="ExclusiveGateway_0y82zzx" targetRef="Task_1drglpt">
-      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("UPDVnfI_workStep") == "UnlockVNF"]]></bpmn2:conditionExpression>
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("disposition") == "Skip"]]></bpmn2:conditionExpression>
     </bpmn2:sequenceFlow>
     <bpmn2:sequenceFlow id="SequenceFlow_19ba94v" sourceRef="Task_0eae8go" targetRef="ScriptTask_6" />
     <bpmn2:scriptTask id="Task_0eae8go" name="Prepare DoUpdateVnfAndModules" scriptFormat="groovy">
       <bpmn2:incoming>SequenceFlow_1c0vdki</bpmn2:incoming>
-      <bpmn2:incoming>SequenceFlow_1ttepat</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_1hldqvv</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_19ba94v</bpmn2:outgoing>
       <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
 def uvfm = new UpdateVnfInfra()
 uvfm.prepDoUpdateVnfAndModules(execution)]]></bpmn2:script>
     </bpmn2:scriptTask>
-    <bpmn2:sequenceFlow id="SequenceFlow_0fxuur5" name="Skip Check if PServers Locked in AAI" sourceRef="ExclusiveGateway_0y82zzx" targetRef="Task_1rxiqe1">
-      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("UPDVnfI_workStep") == "checkIfPserversInMaintInAAI"]]></bpmn2:conditionExpression>
-    </bpmn2:sequenceFlow>
-    <bpmn2:sequenceFlow id="SequenceFlow_1wax44p" name="Skip If VNF Is in Maint in AAI" sourceRef="ExclusiveGateway_0y82zzx" targetRef="Task_0ap39ka">
-      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("UPDVnfI_workStep") == "checkIfVnfInMaintInAAI"]]></bpmn2:conditionExpression>
-    </bpmn2:sequenceFlow>
-    <bpmn2:sequenceFlow id="SequenceFlow_1nlqlwn" name="Skip Set VNF In Maint in AAI" sourceRef="ExclusiveGateway_0y82zzx" targetRef="Task_1dtbnuy">
-      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("UPDVnfI_workStep") == "setVnfInMaintFlagInAAI"]]></bpmn2:conditionExpression>
-    </bpmn2:sequenceFlow>
     <bpmn2:sequenceFlow id="SequenceFlow_1c022sy" sourceRef="ExclusiveGateway_0y82zzx" targetRef="Task_1tg549h" />
+    <bpmn2:callActivity id="Task_1dtbnuy" name="Call APP-C VNF Lock" calledElement="AppCClient">
+      <bpmn2:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="actionLock" target="action" />
+        <camunda:in source="vnfId" target="vnfId" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:out source="errorCode" target="errorCode" />
+        <camunda:out source="errorText" target="errorText" />
+        <camunda:out source="workStep" target="workStep" />
+        <camunda:out source="failedActivity" target="failedActivity" />
+        <camunda:out source="rollbackVnfLock" target="rollbackVnfLock" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1bkhs8m</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_0qmpjgv</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0xx8y1s</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:callActivity id="Task_1fj63ov" name="Call APP-C Health Check" calledElement="AppCClient">
+      <bpmn2:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="actionHealthCheck" target="action" />
+        <camunda:in source="healthCheckIndex0" target="healthCheckIndex" />
+        <camunda:in source="payload" target="payload" />
+        <camunda:in source="vnfId" target="vnfId" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:out source="errorCode" target="errorCode" />
+        <camunda:out source="errorText" target="errorText" />
+        <camunda:out source="workStep" target="workStep" />
+        <camunda:out source="failedActivity" target="failedActivity" />
+        <camunda:in source="vnfName" target="vnfName" />
+        <camunda:in source="vnfHostIpAddress" target="vnfHostIpAddress" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_0qy68ib</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_0tld38t</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0a6pdza</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:callActivity id="Task_1cfkcss" name="Call APP-C VNF Graceful Stop" calledElement="AppCClient">
+      <bpmn2:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="actionStop" target="action" />
+        <camunda:in source="vnfId" target="vnfId" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:out source="errorCode" target="errorCode" />
+        <camunda:out source="errorText" target="errorText" />
+        <camunda:out source="workStep" target="workStep" />
+        <camunda:out source="failedActivity" target="failedActivity" />
+        <camunda:in source="aicIdentity" target="aicIdentity" />
+        <camunda:out source="rollbackVnfStop" target="rollbackVnfStop" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_0q0qan8</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_08dyt3l</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_13h26h9</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:callActivity id="Task_1hdg951" name="Call APP-C VNF Start" calledElement="AppCClient">
+      <bpmn2:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="actionStart" target="action" />
+        <camunda:in source="vnfId" target="vnfId" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:out source="errorCode" target="errorCode" />
+        <camunda:out source="errorText" target="errorText" />
+        <camunda:out source="workStep" target="workStep" />
+        <camunda:out source="failedActivity" target="failedActivity" />
+        <camunda:in source="aicIdentity" target="aicIdentity" />
+        <camunda:out source="rollbackVnfStop" target="rollbackVnfStop" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_04zwhw4</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_0ye8oij</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1uno5rs</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:callActivity id="Task_1ca5ctq" name="Call APP-C Health Check" calledElement="AppCClient">
+      <bpmn2:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="actionHealthCheck" target="action" />
+        <camunda:in source="healthCheckIndex1" target="healthCheckIndex" />
+        <camunda:in source="payload" target="payload" />
+        <camunda:in source="vnfId" target="vnfId" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:out source="errorCode" target="errorCode" />
+        <camunda:out source="errorText" target="errorText" />
+        <camunda:out source="workStep" target="workStep" />
+        <camunda:out source="failedActivity" target="failedActivity" />
+        <camunda:in source="vnfName" target="vnfName" />
+        <camunda:in source="vnfHostIpAddress" target="vnfHostIpAddress" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_162mm0m</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_08kn9ok</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1c79909</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:callActivity id="Task_1sove95" name="Call APP-C VNF Unlock" calledElement="AppCClient">
+      <bpmn2:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="actionUnlock" target="action" />
+        <camunda:in source="vnfId" target="vnfId" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:out source="errorCode" target="errorCode" />
+        <camunda:out source="errorText" target="errorText" />
+        <camunda:out source="workStep" target="workStep" />
+        <camunda:out source="failedActivity" target="failedActivity" />
+        <camunda:out source="rollbackVnfLock" target="rollbackVnfLock" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_197t3qk</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_02uiht9</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1xfbwpi</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0wc37af" name="To Rainy Day Handling">
+      <bpmn2:incoming>SequenceFlow_1esmtgy</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To Rainy Day Handling" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1r18wa8" name="To Rainy Day Handling">
+      <bpmn2:incoming>SequenceFlow_1jmzl1j</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To Rainy Day Handling" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1esmtgy" name="yes" sourceRef="ExclusiveGateway_0q323wc" targetRef="IntermediateThrowEvent_0wc37af">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_1jmzl1j" name="yes" sourceRef="ExclusiveGateway_045e1uz" targetRef="IntermediateThrowEvent_1r18wa8">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_0k7j3qf" name="To inMaintenance Check">
+      <bpmn2:outgoing>SequenceFlow_1pj72fw</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="To inMaintenance Check" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1pj72fw" sourceRef="IntermediateThrowEvent_0k7j3qf" targetRef="Task_1rxiqe1" />
+    <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_1urs7gm" name="To inMaintenance Set">
+      <bpmn2:outgoing>SequenceFlow_1lmijmb</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="To inMaintenance Set" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1lmijmb" sourceRef="IntermediateThrowEvent_1urs7gm" targetRef="Task_0ap39ka" />
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0wx980v" name="To Rainy Day Handling">
+      <bpmn2:incoming>SequenceFlow_010ynjs</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To Rainy Day Handling" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_010ynjs" name="yes" sourceRef="ExclusiveGateway_0ud5uwa" targetRef="IntermediateThrowEvent_0wx980v">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_1khl6dg" name="To VNF Lock">
+      <bpmn2:outgoing>SequenceFlow_0qmpjgv</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="To VNF Lock" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_11rri8p" name="To Rainy Day Handling">
+      <bpmn2:incoming>SequenceFlow_1qsxbp4</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To Rainy Day Handling" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0frizqo" name="To Rainy Day Handling">
+      <bpmn2:incoming>SequenceFlow_15bl7wd</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To Rainy Day Handling" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1gmhr39" name="To Rainy Day Handling">
+      <bpmn2:incoming>SequenceFlow_1m84lq5</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To Rainy Day Handling" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_1m2d0qt" name="To Health PreCheck">
+      <bpmn2:outgoing>SequenceFlow_0tld38t</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="To Health PreCheck" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_0p4hkug" name="To VNF Stop">
+      <bpmn2:outgoing>SequenceFlow_08dyt3l</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="To VNF Stop" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1qsxbp4" name="yes" sourceRef="ExclusiveGateway_1slvyx2" targetRef="IntermediateThrowEvent_11rri8p">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_0qmpjgv" sourceRef="IntermediateThrowEvent_1khl6dg" targetRef="Task_1dtbnuy" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0tld38t" sourceRef="IntermediateThrowEvent_1m2d0qt" targetRef="Task_1fj63ov" />
+    <bpmn2:sequenceFlow id="SequenceFlow_15bl7wd" name="yes" sourceRef="ExclusiveGateway_1ichg7h" targetRef="IntermediateThrowEvent_0frizqo">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_08dyt3l" sourceRef="IntermediateThrowEvent_0p4hkug" targetRef="Task_1cfkcss" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1m84lq5" name="yes" sourceRef="ExclusiveGateway_1etgtgi" targetRef="IntermediateThrowEvent_1gmhr39">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_1s7fnzf" name="To DoUpdateVnfAndModules">
+      <bpmn2:outgoing>SequenceFlow_1hldqvv</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="To DoUpdateVnfAndModules" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1p2yktm" name="To Rainy Day Handling">
+      <bpmn2:incoming>SequenceFlow_0fog99f</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To Rainy Day Handling" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_17j7yap" name="To VNF Start">
+      <bpmn2:outgoing>SequenceFlow_0ye8oij</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="To VNF Start" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1gjzx99" name="To Rainy Day Handling">
+      <bpmn2:incoming>SequenceFlow_12g63pl</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To Rainy Day Handling" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1hldqvv" sourceRef="IntermediateThrowEvent_1s7fnzf" targetRef="Task_0eae8go" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0fog99f" name="yes" sourceRef="ExclusiveGateway_0ulrq9g" targetRef="IntermediateThrowEvent_1p2yktm">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_0ye8oij" sourceRef="IntermediateThrowEvent_17j7yap" targetRef="Task_1hdg951" />
+    <bpmn2:sequenceFlow id="SequenceFlow_12g63pl" name="yes" sourceRef="ExclusiveGateway_02tj4dw" targetRef="IntermediateThrowEvent_1gjzx99">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_03lb8ti" name="To Health PostCheck">
+      <bpmn2:outgoing>SequenceFlow_08kn9ok</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="To Health PostCheck" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1umr8ik" name="To Rainy Day Handling">
+      <bpmn2:incoming>SequenceFlow_0l83v2k</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To Rainy Day Handling" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_044oajb" name="To VNF Unlock">
+      <bpmn2:outgoing>SequenceFlow_02uiht9</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="To VNF Unlock" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1c1s0hp" name="To Rainy Day Handling">
+      <bpmn2:incoming>SequenceFlow_07fhkt4</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To Rainy Day Handling" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_11i6md0" name="To inMaintenance Unset">
+      <bpmn2:outgoing>SequenceFlow_11p8elx</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="To inMaintenance Unset" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1d8c9i0" name="To Rainy Day Handling">
+      <bpmn2:incoming>SequenceFlow_0p94lgv</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To Rainy Day Handling" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_08kn9ok" sourceRef="IntermediateThrowEvent_03lb8ti" targetRef="Task_1ca5ctq" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0l83v2k" name="yes" sourceRef="ExclusiveGateway_1gn5lab" targetRef="IntermediateThrowEvent_1umr8ik">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_02uiht9" sourceRef="IntermediateThrowEvent_044oajb" targetRef="Task_1sove95" />
+    <bpmn2:sequenceFlow id="SequenceFlow_07fhkt4" name="yes" sourceRef="ExclusiveGateway_06mv93h" targetRef="IntermediateThrowEvent_1c1s0hp">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_11p8elx" sourceRef="IntermediateThrowEvent_11i6md0" targetRef="Task_1drglpt" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0p94lgv" name="yes" sourceRef="ExclusiveGateway_0l2z6wc" targetRef="IntermediateThrowEvent_1d8c9i0">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_1dqbqqx" sourceRef="IntermediateThrowEvent_0xv558x" targetRef="ScriptTask_10" />
+    <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_0xv558x" name="To Completion Handler Prep">
+      <bpmn2:outgoing>SequenceFlow_1dqbqqx</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="To Completion Handler Prep" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_0hljxy3" name="To Rainy Day Handling">
+      <bpmn2:outgoing>SequenceFlow_1nplvhi</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="To Rainy Day Handling" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1nplvhi" sourceRef="IntermediateThrowEvent_0hljxy3" targetRef="Task_0q5cdit" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0tqrgop" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_08j8zjs">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("workStep") == "checkIfPserversInMaintInAAI"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_126nlmw" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_0tj8iiy">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("workStep") == "checkIfVnfInMaintInAAI"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_0mw3mwl" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_0oeqjo1">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("workStep") == "setVnfInMaintFlagInAAI"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_13md9cw" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_1939dn7">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("workStep") == "Lock"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_0xylem3" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_1rn3nlo">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("workStep") == "HealthCheck0"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_1c5mxd5" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_0weaigg">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("workStep") == "Stop"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_0u8hiu2" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_1q8mns4">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("workStep") == "doUpdateVnfAndModules"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_0fs7ay9" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_16kgzdv">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("workStep") == "Start"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_00qwx4v" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_18v3win">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("workStep") == "HealthCheck1"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_14s8ji9" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_0kypyu0">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("workStep") == "Unlock"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_0kricor" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_024m4nk">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("workStep") == "unsetVnfInMaintFlagInAAI"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_08j8zjs" name="To inMaintenance Check">
+      <bpmn2:incoming>SequenceFlow_0tqrgop</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To inMaintenance Check" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0tj8iiy" name="To inMaintenance Set">
+      <bpmn2:incoming>SequenceFlow_126nlmw</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To inMaintenance Set" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0oeqjo1" name="To VNF Lock">
+      <bpmn2:incoming>SequenceFlow_0mw3mwl</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To VNF Lock" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1939dn7" name="To Health PreCheck">
+      <bpmn2:incoming>SequenceFlow_13md9cw</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To Health PreCheck" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1rn3nlo" name="To VNF Stop">
+      <bpmn2:incoming>SequenceFlow_0xylem3</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To VNF Stop" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0weaigg" name="To DoUpdateVnfAndModules">
+      <bpmn2:incoming>SequenceFlow_1c5mxd5</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To DoUpdateVnfAndModules" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1q8mns4" name="To VNF Start">
+      <bpmn2:incoming>SequenceFlow_0u8hiu2</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To VNF Start" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_16kgzdv" name="To Health PostCheck">
+      <bpmn2:incoming>SequenceFlow_0fs7ay9</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To Health PostCheck" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_18v3win" name="To VNF Unlock">
+      <bpmn2:incoming>SequenceFlow_00qwx4v</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To VNF Unlock" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0kypyu0" name="To inMaintenance Unset">
+      <bpmn2:incoming>SequenceFlow_14s8ji9</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To inMaintenance Unset" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_024m4nk" name="To Completion Handler Prep">
+      <bpmn2:incoming>SequenceFlow_0kricor</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To Completion Handler Prep" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_178fxkj" sourceRef="Task_155eyrq" targetRef="Task_0vy2zge" />
+    <bpmn2:scriptTask id="Task_155eyrq" name="Query A&#38;AI for VNF" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_053qjfy</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_178fxkj</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def uvfm = new UpdateVnfInfra()
+uvfm.queryAAIForVnf(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
   </bpmn2:process>
   <bpmn2:error id="Error_1" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
   <bpmndi:BPMNDiagram id="BPMNDiagram_1">
@@ -452,9 +692,9 @@
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="_BPMNShape_EndEvent_125" bpmnElement="EndEvent_1">
-        <dc:Bounds x="595" y="975" width="36" height="36" />
+        <dc:Bounds x="589" y="1222" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="594" y="1016" width="38" height="12" />
+          <dc:Bounds x="588" y="1263" width="38" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_4" sourceElement="_BPMNShape_StartEvent_50" targetElement="_BPMNShape_ScriptTask_124">
@@ -485,107 +725,108 @@
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_127" bpmnElement="ScriptTask_4">
-        <dc:Bounds x="439" y="953" width="100" height="80" />
+        <dc:Bounds x="433" y="1200" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_6" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_ScriptTask_127" targetElement="_BPMNShape_EndEvent_125">
-        <di:waypoint xsi:type="dc:Point" x="539" y="993" />
-        <di:waypoint xsi:type="dc:Point" x="595" y="993" />
+        <di:waypoint xsi:type="dc:Point" x="533" y="1240" />
+        <di:waypoint xsi:type="dc:Point" x="589" y="1240" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="716" y="834" width="0" height="0" />
+          <dc:Bounds x="710" y="1081" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_133" bpmnElement="ScriptTask_10">
-        <dc:Bounds x="139" y="953" width="100" height="80" />
+        <dc:Bounds x="133" y="1200" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="_BPMNShape_CallActivity_27" bpmnElement="CallActivity_1">
-        <dc:Bounds x="289" y="953" width="100" height="80" />
+        <dc:Bounds x="283" y="1200" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_17" bpmnElement="SequenceFlow_17" sourceElement="_BPMNShape_ScriptTask_133" targetElement="_BPMNShape_CallActivity_27">
-        <di:waypoint xsi:type="dc:Point" x="239" y="993" />
-        <di:waypoint xsi:type="dc:Point" x="289" y="993" />
+        <di:waypoint xsi:type="dc:Point" x="233" y="1240" />
+        <di:waypoint xsi:type="dc:Point" x="283" y="1240" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="264" y="999" width="0" height="0" />
+          <dc:Bounds x="258" y="1246" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="_BPMNShape_SubProcess_17" bpmnElement="SubProcess_1" isExpanded="true">
-        <dc:Bounds x="85" y="1189" width="565" height="241" />
+        <dc:Bounds x="88" y="1464" width="966" height="240" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="_BPMNShape_StartEvent_52" bpmnElement="StartEvent_3">
-        <dc:Bounds x="149" y="1283" width="36" height="36" />
+        <dc:Bounds x="152" y="1558" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="128" y="1324" width="77" height="12" />
+          <dc:Bounds x="131" y="1599" width="77" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_136" bpmnElement="ScriptTask_3">
-        <dc:Bounds x="229" y="1261" width="100" height="80" />
+        <dc:Bounds x="621" y="1536" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_52" targetElement="_BPMNShape_ScriptTask_136">
-        <di:waypoint xsi:type="dc:Point" x="185" y="1301" />
-        <di:waypoint xsi:type="dc:Point" x="229" y="1301" />
+        <di:waypoint xsi:type="dc:Point" x="188" y="1576" />
+        <di:waypoint xsi:type="dc:Point" x="220" y="1576" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="232" y="1601" width="0" height="0" />
+          <dc:Bounds x="204" y="1561" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_7" bpmnElement="SequenceFlow_7" sourceElement="_BPMNShape_ScriptTask_136" targetElement="_BPMNShape_CallActivity_28">
-        <di:waypoint xsi:type="dc:Point" x="329" y="1301" />
-        <di:waypoint xsi:type="dc:Point" x="397" y="1301" />
+        <di:waypoint xsi:type="dc:Point" x="721" y="1576" />
+        <di:waypoint xsi:type="dc:Point" x="789" y="1576" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="345" y="1301" width="0" height="0" />
+          <dc:Bounds x="737" y="1576" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="_BPMNShape_EndEvent_126" bpmnElement="EndEvent_2">
-        <dc:Bounds x="553" y="1283" width="36" height="36" />
+        <dc:Bounds x="945" y="1558" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="571" y="1324" width="0" height="0" />
+          <dc:Bounds x="963" y="1599" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="_BPMNShape_BoundaryEvent_43" bpmnElement="BoundaryEvent_1">
-        <dc:Bounds x="632" y="1283" width="36" height="36" />
+        <dc:Bounds x="1036" y="1558" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="650" y="1324" width="0" height="0" />
+          <dc:Bounds x="1054" y="1599" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="_BPMNShape_EndEvent_127" bpmnElement="EndEvent_3">
-        <dc:Bounds x="726" y="1283" width="36" height="36" />
+        <dc:Bounds x="1164" y="1558" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="744" y="1324" width="0" height="0" />
+          <dc:Bounds x="1182" y="1599" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_12" bpmnElement="SequenceFlow_12" sourceElement="_BPMNShape_BoundaryEvent_43" targetElement="_BPMNShape_EndEvent_127">
-        <di:waypoint xsi:type="dc:Point" x="668" y="1301" />
-        <di:waypoint xsi:type="dc:Point" x="726" y="1301" />
+        <di:waypoint xsi:type="dc:Point" x="1072" y="1576" />
+        <di:waypoint xsi:type="dc:Point" x="1164" y="1576" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="697" y="1286" width="0" height="0" />
+          <dc:Bounds x="1118" y="1561" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="_BPMNShape_CallActivity_28" bpmnElement="CallActivity_2">
-        <dc:Bounds x="397" y="1261" width="100" height="80" />
+        <dc:Bounds x="789" y="1536" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_14" bpmnElement="SequenceFlow_14" sourceElement="_BPMNShape_CallActivity_27" targetElement="_BPMNShape_ScriptTask_127">
-        <di:waypoint xsi:type="dc:Point" x="389" y="993" />
-        <di:waypoint xsi:type="dc:Point" x="439" y="993" />
+        <di:waypoint xsi:type="dc:Point" x="383" y="1240" />
+        <di:waypoint xsi:type="dc:Point" x="433" y="1240" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="432" y="961" width="0" height="0" />
+          <dc:Bounds x="426" y="1208" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_19" bpmnElement="SequenceFlow_19" sourceElement="_BPMNShape_CallActivity_28" targetElement="_BPMNShape_EndEvent_126">
-        <di:waypoint xsi:type="dc:Point" x="497" y="1301" />
-        <di:waypoint xsi:type="dc:Point" x="553" y="1301" />
+        <di:waypoint xsi:type="dc:Point" x="889" y="1576" />
+        <di:waypoint xsi:type="dc:Point" x="945" y="1576" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="390" y="1361" width="0" height="0" />
+          <dc:Bounds x="782" y="1636" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_181" bpmnElement="ScriptTask_6">
-        <dc:Bounds x="454" y="559" width="100" height="80" />
+        <dc:Bounds x="419" y="685" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_3" sourceElement="_BPMNShape_ScriptTask_181" targetElement="_BPMNShape_ScriptTask_133">
-        <di:waypoint xsi:type="dc:Point" x="1130" y="835" />
-        <di:waypoint xsi:type="dc:Point" x="1130" y="900" />
-        <di:waypoint xsi:type="dc:Point" x="99" y="900" />
-        <di:waypoint xsi:type="dc:Point" x="99" y="993" />
-        <di:waypoint xsi:type="dc:Point" x="139" y="993" />
+        <di:waypoint xsi:type="dc:Point" x="932" y="983" />
+        <di:waypoint xsi:type="dc:Point" x="1007" y="983" />
+        <di:waypoint xsi:type="dc:Point" x="1007" y="1158" />
+        <di:waypoint xsi:type="dc:Point" x="89" y="1160" />
+        <di:waypoint xsi:type="dc:Point" x="89" y="1240" />
+        <di:waypoint xsi:type="dc:Point" x="133" y="1240" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1109" y="862" width="12" height="12" />
+          <dc:Bounds x="961" y="954.3909136697287" width="12" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_1w35ov3_di" bpmnElement="SequenceFlow_1w35ov3">
@@ -600,13 +841,9 @@
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_053qjfy_di" bpmnElement="SequenceFlow_053qjfy">
         <di:waypoint xsi:type="dc:Point" x="818" y="90" />
-        <di:waypoint xsi:type="dc:Point" x="982" y="90" />
-        <di:waypoint xsi:type="dc:Point" x="982" y="156" />
-        <di:waypoint xsi:type="dc:Point" x="103" y="156" />
-        <di:waypoint xsi:type="dc:Point" x="103" y="237" />
-        <di:waypoint xsi:type="dc:Point" x="131" y="237" />
+        <di:waypoint xsi:type="dc:Point" x="871" y="90" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="543" y="141" width="0" height="0" />
+          <dc:Bounds x="845" y="75" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ScriptTask_08xzuox_di" bpmnElement="Task_1opcb4j">
@@ -630,95 +867,80 @@
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_1bkhs8m_di" bpmnElement="SequenceFlow_1bkhs8m">
-        <di:waypoint xsi:type="dc:Point" x="896" y="264" />
-        <di:waypoint xsi:type="dc:Point" x="896" y="339" />
-        <di:waypoint xsi:type="dc:Point" x="98" y="339" />
-        <di:waypoint xsi:type="dc:Point" x="98" y="427" />
-        <di:waypoint xsi:type="dc:Point" x="139" y="427" />
+        <di:waypoint xsi:type="dc:Point" x="921" y="237" />
+        <di:waypoint xsi:type="dc:Point" x="994" y="237" />
+        <di:waypoint xsi:type="dc:Point" x="994" y="391" />
+        <di:waypoint xsi:type="dc:Point" x="98" y="391" />
+        <di:waypoint xsi:type="dc:Point" x="98" y="474" />
+        <di:waypoint xsi:type="dc:Point" x="139" y="474" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="905" y="313.95238095238096" width="12" height="12" />
+          <dc:Bounds x="950" y="212" width="12" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0gzzeru_di" bpmnElement="SequenceFlow_0gzzeru">
-        <di:waypoint xsi:type="dc:Point" x="554" y="599" />
-        <di:waypoint xsi:type="dc:Point" x="617" y="599" />
+        <di:waypoint xsi:type="dc:Point" x="519" y="725" />
+        <di:waypoint xsi:type="dc:Point" x="595" y="725" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="586" y="584" width="0" height="0" />
+          <dc:Bounds x="557" y="710" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ScriptTask_0wa4zya_di" bpmnElement="Task_0ap39ka">
         <dc:Bounds x="714" y="197" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ScriptTask_0sgm9bu_di" bpmnElement="Task_1drglpt">
-        <dc:Bounds x="960" y="770" width="100" height="80" />
+        <dc:Bounds x="718" y="943" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ScriptTask_16jtt5t_di" bpmnElement="Task_0vy2zge">
         <dc:Bounds x="131" y="197" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0xx8y1s_di" bpmnElement="SequenceFlow_0xx8y1s">
-        <di:waypoint xsi:type="dc:Point" x="239" y="427" />
-        <di:waypoint xsi:type="dc:Point" x="292" y="427" />
+        <di:waypoint xsi:type="dc:Point" x="239" y="474" />
+        <di:waypoint xsi:type="dc:Point" x="292" y="474" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="266" y="412" width="0" height="0" />
+          <dc:Bounds x="266" y="459" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0a6pdza_di" bpmnElement="SequenceFlow_0a6pdza">
-        <di:waypoint xsi:type="dc:Point" x="525" y="427" />
-        <di:waypoint xsi:type="dc:Point" x="601" y="427" />
+        <di:waypoint xsi:type="dc:Point" x="525" y="474" />
+        <di:waypoint xsi:type="dc:Point" x="601" y="474" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="563" y="412" width="0" height="0" />
+          <dc:Bounds x="563" y="459" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_13h26h9_di" bpmnElement="SequenceFlow_13h26h9">
-        <di:waypoint xsi:type="dc:Point" x="814" y="427" />
-        <di:waypoint xsi:type="dc:Point" x="871" y="427" />
+        <di:waypoint xsi:type="dc:Point" x="814" y="474" />
+        <di:waypoint xsi:type="dc:Point" x="871" y="474" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="843" y="412" width="0" height="0" />
+          <dc:Bounds x="843" y="459" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ScriptTask_02wc9i0_di" bpmnElement="Task_1dtbnuy">
-        <dc:Bounds x="139" y="387" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_0mz2hdm_di" bpmnElement="Task_1fj63ov">
-        <dc:Bounds x="425" y="387" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_1wagy2o_di" bpmnElement="Task_1cfkcss">
-        <dc:Bounds x="714" y="387" width="100" height="80" />
-      </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_1uno5rs_di" bpmnElement="SequenceFlow_1uno5rs">
-        <di:waypoint xsi:type="dc:Point" x="239" y="810" />
-        <di:waypoint xsi:type="dc:Point" x="292" y="810" />
+        <di:waypoint xsi:type="dc:Point" x="812" y="725" />
+        <di:waypoint xsi:type="dc:Point" x="850" y="725" />
+        <di:waypoint xsi:type="dc:Point" x="850" y="725" />
+        <di:waypoint xsi:type="dc:Point" x="876" y="725" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="266" y="795" width="0" height="0" />
+          <dc:Bounds x="865" y="725" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_1c79909_di" bpmnElement="SequenceFlow_1c79909">
-        <di:waypoint xsi:type="dc:Point" x="525" y="810" />
-        <di:waypoint xsi:type="dc:Point" x="601" y="810" />
+        <di:waypoint xsi:type="dc:Point" x="239" y="983" />
+        <di:waypoint xsi:type="dc:Point" x="292" y="983" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="563" y="795" width="0" height="0" />
+          <dc:Bounds x="266" y="968" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ScriptTask_13zephm_di" bpmnElement="Task_1hdg951">
-        <dc:Bounds x="139" y="770" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="ScriptTask_11xqphb_di" bpmnElement="Task_1ca5ctq">
-        <dc:Bounds x="425" y="770" width="100" height="80" />
-      </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_1xfbwpi_di" bpmnElement="SequenceFlow_1xfbwpi">
-        <di:waypoint xsi:type="dc:Point" x="814" y="810" />
-        <di:waypoint xsi:type="dc:Point" x="871" y="810" />
+        <di:waypoint xsi:type="dc:Point" x="515" y="983" />
+        <di:waypoint xsi:type="dc:Point" x="601" y="983" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="843" y="795" width="0" height="0" />
+          <dc:Bounds x="558" y="968" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ScriptTask_0a4ovfa_di" bpmnElement="Task_1sove95">
-        <dc:Bounds x="714" y="770" width="100" height="80" />
-      </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ExclusiveGateway_0q323wc_di" bpmnElement="ExclusiveGateway_0q323wc" isMarkerVisible="true">
         <dc:Bounds x="291.803" y="212" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="274" y="262" width="86" height="24" />
+          <dc:Bounds x="273" y="175" width="87" height="24" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_16mo99z_di" bpmnElement="SequenceFlow_16mo99z">
@@ -731,7 +953,7 @@
       <bpmndi:BPMNShape id="ExclusiveGateway_045e1uz_di" bpmnElement="ExclusiveGateway_045e1uz" isMarkerVisible="true">
         <dc:Bounds x="601" y="212" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="589" y="262" width="73" height="36" />
+          <dc:Bounds x="589" y="168" width="73" height="36" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0baosqi_di" bpmnElement="SequenceFlow_0baosqi">
@@ -744,24 +966,6 @@
       <bpmndi:BPMNShape id="CallActivity_1k5n5d1_di" bpmnElement="Task_0q5cdit">
         <dc:Bounds x="1132" y="470" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_1qmz2ez_di" bpmnElement="SequenceFlow_1qmz2ez">
-        <di:waypoint xsi:type="dc:Point" x="317" y="212" />
-        <di:waypoint xsi:type="dc:Point" x="317" y="191" />
-        <di:waypoint xsi:type="dc:Point" x="1182" y="191" />
-        <di:waypoint xsi:type="dc:Point" x="1182" y="470" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="378" y="196" width="18" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_03rkfbo_di" bpmnElement="SequenceFlow_03rkfbo">
-        <di:waypoint xsi:type="dc:Point" x="626" y="212" />
-        <di:waypoint xsi:type="dc:Point" x="626" y="187" />
-        <di:waypoint xsi:type="dc:Point" x="1182" y="187" />
-        <di:waypoint xsi:type="dc:Point" x="1182" y="470" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="683" y="166" width="18" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0v0u7mf_di" bpmnElement="SequenceFlow_0v0u7mf">
         <di:waypoint xsi:type="dc:Point" x="1232" y="510" />
         <di:waypoint xsi:type="dc:Point" x="1314" y="510" />
@@ -770,29 +974,30 @@
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="Task_0zbogrm_di" bpmnElement="Task_0zbogrm">
-        <dc:Bounds x="1438" y="470" width="100" height="80" />
+        <dc:Bounds x="1289" y="645" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0vpd06n_di" bpmnElement="SequenceFlow_0vpd06n">
         <di:waypoint xsi:type="dc:Point" x="1339" y="485" />
-        <di:waypoint xsi:type="dc:Point" x="1339" y="373" />
-        <di:waypoint xsi:type="dc:Point" x="1438" y="373" />
+        <di:waypoint xsi:type="dc:Point" x="1339" y="441" />
+        <di:waypoint xsi:type="dc:Point" x="1339" y="441" />
+        <di:waypoint xsi:type="dc:Point" x="1339" y="395" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1390" y="377" width="26" height="12" />
+          <dc:Bounds x="1347" y="419.2626464646465" width="26" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_1qr8msw_di" bpmnElement="SequenceFlow_1qr8msw">
-        <di:waypoint xsi:type="dc:Point" x="1364" y="510" />
-        <di:waypoint xsi:type="dc:Point" x="1405" y="510" />
-        <di:waypoint xsi:type="dc:Point" x="1405" y="510" />
-        <di:waypoint xsi:type="dc:Point" x="1438" y="510" />
+        <di:waypoint xsi:type="dc:Point" x="1339" y="535" />
+        <di:waypoint xsi:type="dc:Point" x="1339" y="599" />
+        <di:waypoint xsi:type="dc:Point" x="1339" y="599" />
+        <di:waypoint xsi:type="dc:Point" x="1339" y="645" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1379" y="516" width="42" height="12" />
+          <dc:Bounds x="1348" y="578.1951219512196" width="42" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ExclusiveGateway_0ud5uwa_di" bpmnElement="ExclusiveGateway_0ud5uwa" isMarkerVisible="true">
         <dc:Bounds x="871.1194471865745" y="211.86673247778873" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="904" y="257.86673247778873" width="73" height="36" />
+          <dc:Bounds x="859" y="167" width="73" height="36" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0k3fx7p_di" bpmnElement="SequenceFlow_0k3fx7p">
@@ -802,322 +1007,672 @@
           <dc:Bounds x="843" y="222" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1lsm3bn_di" bpmnElement="SequenceFlow_1lsm3bn">
-        <di:waypoint xsi:type="dc:Point" x="921" y="237" />
-        <di:waypoint xsi:type="dc:Point" x="1182" y="237" />
-        <di:waypoint xsi:type="dc:Point" x="1182" y="470" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1044" y="214" width="18" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ExclusiveGateway_1slvyx2_di" bpmnElement="ExclusiveGateway_1slvyx2" isMarkerVisible="true">
-        <dc:Bounds x="292" y="402" width="50" height="50" />
+        <dc:Bounds x="292" y="449" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="283" y="452" width="68" height="24" />
+          <dc:Bounds x="283" y="413" width="68" height="24" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0qy68ib_di" bpmnElement="SequenceFlow_0qy68ib">
-        <di:waypoint xsi:type="dc:Point" x="342" y="427" />
-        <di:waypoint xsi:type="dc:Point" x="425" y="427" />
+        <di:waypoint xsi:type="dc:Point" x="342" y="474" />
+        <di:waypoint xsi:type="dc:Point" x="425" y="474" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="378" y="412" width="12" height="12" />
+          <dc:Bounds x="378" y="459" width="12" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ExclusiveGateway_1ichg7h_di" bpmnElement="ExclusiveGateway_1ichg7h" isMarkerVisible="true">
-        <dc:Bounds x="601" y="402" width="50" height="50" />
+        <dc:Bounds x="601" y="449" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="590" y="452" width="72" height="24" />
+          <dc:Bounds x="590" y="414" width="72" height="24" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0q0qan8_di" bpmnElement="SequenceFlow_0q0qan8">
-        <di:waypoint xsi:type="dc:Point" x="651" y="427" />
-        <di:waypoint xsi:type="dc:Point" x="714" y="427" />
+        <di:waypoint xsi:type="dc:Point" x="651" y="474" />
+        <di:waypoint xsi:type="dc:Point" x="714" y="474" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="677" y="412" width="12" height="12" />
+          <dc:Bounds x="677" y="459" width="12" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ExclusiveGateway_1etgtgi_di" bpmnElement="ExclusiveGateway_1etgtgi" isMarkerVisible="true">
-        <dc:Bounds x="870.9141164856861" y="402" width="50" height="50" />
+        <dc:Bounds x="871" y="449" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="909" y="445" width="68" height="24" />
+          <dc:Bounds x="862" y="411" width="68" height="24" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_1c0vdki_di" bpmnElement="SequenceFlow_1c0vdki">
-        <di:waypoint xsi:type="dc:Point" x="896" y="452" />
-        <di:waypoint xsi:type="dc:Point" x="896" y="507" />
-        <di:waypoint xsi:type="dc:Point" x="90" y="507" />
-        <di:waypoint xsi:type="dc:Point" x="90" y="599" />
-        <di:waypoint xsi:type="dc:Point" x="219" y="599" />
+        <di:waypoint xsi:type="dc:Point" x="921" y="474" />
+        <di:waypoint xsi:type="dc:Point" x="1003" y="474" />
+        <di:waypoint xsi:type="dc:Point" x="1003" y="640" />
+        <di:waypoint xsi:type="dc:Point" x="102" y="640" />
+        <di:waypoint xsi:type="dc:Point" x="102" y="725" />
+        <di:waypoint xsi:type="dc:Point" x="195" y="725" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="906" y="484" width="12" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0bduwog_di" bpmnElement="SequenceFlow_0bduwog">
-        <di:waypoint xsi:type="dc:Point" x="317" y="402" />
-        <di:waypoint xsi:type="dc:Point" x="317" y="354" />
-        <di:waypoint xsi:type="dc:Point" x="1182" y="354" />
-        <di:waypoint xsi:type="dc:Point" x="1182" y="470" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="375" y="356" width="18" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0uwar5b_di" bpmnElement="SequenceFlow_0uwar5b">
-        <di:waypoint xsi:type="dc:Point" x="626" y="402" />
-        <di:waypoint xsi:type="dc:Point" x="626" y="359" />
-        <di:waypoint xsi:type="dc:Point" x="1182" y="359" />
-        <di:waypoint xsi:type="dc:Point" x="1182" y="470" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="676" y="367" width="18" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0i7hfj2_di" bpmnElement="SequenceFlow_0i7hfj2">
-        <di:waypoint xsi:type="dc:Point" x="921" y="427" />
-        <di:waypoint xsi:type="dc:Point" x="1182" y="427" />
-        <di:waypoint xsi:type="dc:Point" x="1182" y="470" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1044" y="412" width="18" height="12" />
+          <dc:Bounds x="964" y="444.0001202928146" width="12" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ExclusiveGateway_0ulrq9g_di" bpmnElement="ExclusiveGateway_0ulrq9g" isMarkerVisible="true">
-        <dc:Bounds x="617" y="574" width="50" height="50" />
+        <dc:Bounds x="595" y="700" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="654" y="618" width="83" height="36" />
+          <dc:Bounds x="578" y="658" width="84" height="36" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_04zwhw4_di" bpmnElement="SequenceFlow_04zwhw4">
-        <di:waypoint xsi:type="dc:Point" x="642" y="624" />
-        <di:waypoint xsi:type="dc:Point" x="642" y="694" />
-        <di:waypoint xsi:type="dc:Point" x="91" y="694" />
-        <di:waypoint xsi:type="dc:Point" x="91" y="810" />
-        <di:waypoint xsi:type="dc:Point" x="139" y="810" />
+        <di:waypoint xsi:type="dc:Point" x="645" y="725" />
+        <di:waypoint xsi:type="dc:Point" x="712" y="725" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="361" y="679" width="12" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_10ek8l4_di" bpmnElement="SequenceFlow_10ek8l4">
-        <di:waypoint xsi:type="dc:Point" x="667" y="599" />
-        <di:waypoint xsi:type="dc:Point" x="1182" y="599" />
-        <di:waypoint xsi:type="dc:Point" x="1182" y="550" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="916" y="584" width="18" height="12" />
+          <dc:Bounds x="679" y="707.4465803421167" width="12" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ExclusiveGateway_02tj4dw_di" bpmnElement="ExclusiveGateway_02tj4dw" isMarkerVisible="true">
-        <dc:Bounds x="292.1076011846002" y="785" width="50" height="50" />
+        <dc:Bounds x="876" y="700" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="284" y="835" width="68" height="24" />
+          <dc:Bounds x="867" y="665" width="68" height="24" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_162mm0m_di" bpmnElement="SequenceFlow_162mm0m">
-        <di:waypoint xsi:type="dc:Point" x="342" y="810" />
-        <di:waypoint xsi:type="dc:Point" x="425" y="810" />
+        <di:waypoint xsi:type="dc:Point" x="926" y="725" />
+        <di:waypoint xsi:type="dc:Point" x="1002" y="725" />
+        <di:waypoint xsi:type="dc:Point" x="1002" y="903" />
+        <di:waypoint xsi:type="dc:Point" x="94" y="903" />
+        <di:waypoint xsi:type="dc:Point" x="94" y="983" />
+        <di:waypoint xsi:type="dc:Point" x="139" y="983" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="378" y="795" width="12" height="12" />
+          <dc:Bounds x="961" y="701.1887293946602" width="12" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ExclusiveGateway_1gn5lab_di" bpmnElement="ExclusiveGateway_1gn5lab" isMarkerVisible="true">
-        <dc:Bounds x="601.1076011846002" y="785" width="50" height="50" />
+        <dc:Bounds x="292" y="958" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="591" y="835" width="72" height="24" />
+          <dc:Bounds x="281" y="920" width="72" height="24" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_197t3qk_di" bpmnElement="SequenceFlow_197t3qk">
-        <di:waypoint xsi:type="dc:Point" x="651.1076011846002" y="810" />
-        <di:waypoint xsi:type="dc:Point" x="714" y="810" />
+        <di:waypoint xsi:type="dc:Point" x="342" y="983" />
+        <di:waypoint xsi:type="dc:Point" x="384" y="983" />
+        <di:waypoint xsi:type="dc:Point" x="384" y="983" />
+        <di:waypoint xsi:type="dc:Point" x="415" y="983" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="677" y="795" width="12" height="12" />
+          <dc:Bounds x="367" y="955.268406786947" width="12" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ExclusiveGateway_06mv93h_di" bpmnElement="ExclusiveGateway_06mv93h" isMarkerVisible="true">
-        <dc:Bounds x="871" y="785" width="50" height="50" />
+        <dc:Bounds x="601" y="958" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="862" y="835" width="68" height="24" />
+          <dc:Bounds x="592" y="918" width="68" height="24" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_19lg15d_di" bpmnElement="SequenceFlow_19lg15d">
-        <di:waypoint xsi:type="dc:Point" x="921" y="810" />
-        <di:waypoint xsi:type="dc:Point" x="960" y="810" />
+        <di:waypoint xsi:type="dc:Point" x="651" y="983" />
+        <di:waypoint xsi:type="dc:Point" x="718" y="983" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="935" y="795" width="12" height="12" />
+          <dc:Bounds x="676" y="955.051282051282" width="12" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ExclusiveGateway_0l2z6wc_di" bpmnElement="ExclusiveGateway_0l2z6wc" isMarkerVisible="true">
-        <dc:Bounds x="1105.1076011846003" y="785" width="50" height="50" />
+        <dc:Bounds x="882" y="958" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1145" y="833" width="73" height="36" />
+          <dc:Bounds x="870" y="915" width="73" height="36" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_12mfil6_di" bpmnElement="SequenceFlow_12mfil6">
-        <di:waypoint xsi:type="dc:Point" x="1060" y="810" />
-        <di:waypoint xsi:type="dc:Point" x="1105" y="810" />
+        <di:waypoint xsi:type="dc:Point" x="818" y="983" />
+        <di:waypoint xsi:type="dc:Point" x="882" y="983" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1083" y="785" width="0" height="0" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_13yjc85_di" bpmnElement="SequenceFlow_13yjc85">
-        <di:waypoint xsi:type="dc:Point" x="1155" y="810" />
-        <di:waypoint xsi:type="dc:Point" x="1182" y="810" />
-        <di:waypoint xsi:type="dc:Point" x="1182" y="550" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1160" y="795" width="18" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0waedj5_di" bpmnElement="SequenceFlow_0waedj5">
-        <di:waypoint xsi:type="dc:Point" x="317" y="785" />
-        <di:waypoint xsi:type="dc:Point" x="317" y="711" />
-        <di:waypoint xsi:type="dc:Point" x="1182" y="711" />
-        <di:waypoint xsi:type="dc:Point" x="1182" y="550" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="370" y="716" width="18" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1hg9c2l_di" bpmnElement="SequenceFlow_1hg9c2l">
-        <di:waypoint xsi:type="dc:Point" x="626" y="785" />
-        <di:waypoint xsi:type="dc:Point" x="626" y="714" />
-        <di:waypoint xsi:type="dc:Point" x="1182" y="714" />
-        <di:waypoint xsi:type="dc:Point" x="1182" y="550" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="669" y="717" width="18" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0gej71y_di" bpmnElement="SequenceFlow_0gej71y">
-        <di:waypoint xsi:type="dc:Point" x="896" y="785" />
-        <di:waypoint xsi:type="dc:Point" x="896" y="720" />
-        <di:waypoint xsi:type="dc:Point" x="1182" y="720" />
-        <di:waypoint xsi:type="dc:Point" x="1182" y="550" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="905" y="738" width="18" height="12" />
+          <dc:Bounds x="850" y="968" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ScriptTask_1lb0lk5_di" bpmnElement="Task_1tg549h">
-        <dc:Bounds x="1438" y="333" width="100" height="80" />
+        <dc:Bounds x="1289" y="315" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ExclusiveGateway_1gmvi7n_di" bpmnElement="ExclusiveGateway_0xlxgl0" isMarkerVisible="true">
         <dc:Bounds x="1314" y="485" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1295" y="534.2201382033564" width="87" height="12" />
+          <dc:Bounds x="1303" y="468" width="88" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ExclusiveGateway_0y82zzx_di" bpmnElement="ExclusiveGateway_0y82zzx" isMarkerVisible="true">
-        <dc:Bounds x="1463" y="671" width="50" height="50" />
+        <dc:Bounds x="1431" y="485" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1499" y="715" width="69" height="24" />
+          <dc:Bounds x="1421" y="542" width="69" height="24" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_05gpym3_di" bpmnElement="SequenceFlow_05gpym3">
-        <di:waypoint xsi:type="dc:Point" x="1339" y="535" />
-        <di:waypoint xsi:type="dc:Point" x="1339" y="648" />
-        <di:waypoint xsi:type="dc:Point" x="1490" y="648" />
-        <di:waypoint xsi:type="dc:Point" x="1489" y="672" />
+        <di:waypoint xsi:type="dc:Point" x="1364" y="510" />
+        <di:waypoint xsi:type="dc:Point" x="1431" y="510" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1404" y="633" width="21" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1sla5dr_di" bpmnElement="SequenceFlow_1sla5dr">
-        <di:waypoint xsi:type="dc:Point" x="1463" y="696" />
-        <di:waypoint xsi:type="dc:Point" x="440" y="696" />
-        <di:waypoint xsi:type="dc:Point" x="440" y="467" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1228" y="699" width="85" height="24" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0iektwg_di" bpmnElement="SequenceFlow_0iektwg">
-        <di:waypoint xsi:type="dc:Point" x="1467" y="692" />
-        <di:waypoint xsi:type="dc:Point" x="1323" y="667" />
-        <di:waypoint xsi:type="dc:Point" x="764" y="667" />
-        <di:waypoint xsi:type="dc:Point" x="764" y="467" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1214" y="631" width="87" height="24" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1ttepat_di" bpmnElement="SequenceFlow_1ttepat">
-        <di:waypoint xsi:type="dc:Point" x="1468" y="701" />
-        <di:waypoint xsi:type="dc:Point" x="1346" y="735" />
-        <di:waypoint xsi:type="dc:Point" x="243" y="735" />
-        <di:waypoint xsi:type="dc:Point" x="243" y="639" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1233" y="743" width="85" height="24" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1hx1ur7_di" bpmnElement="SequenceFlow_1hx1ur7">
-        <di:waypoint xsi:type="dc:Point" x="1488" y="721" />
-        <di:waypoint xsi:type="dc:Point" x="1488" y="789" />
-        <di:waypoint xsi:type="dc:Point" x="1322" y="883" />
-        <di:waypoint xsi:type="dc:Point" x="475" y="883" />
-        <di:waypoint xsi:type="dc:Point" x="475" y="850" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1316" y="811" width="85" height="24" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0ukzynj_di" bpmnElement="SequenceFlow_0ukzynj">
-        <di:waypoint xsi:type="dc:Point" x="1488" y="721" />
-        <di:waypoint xsi:type="dc:Point" x="1488" y="818" />
-        <di:waypoint xsi:type="dc:Point" x="1346" y="918" />
-        <di:waypoint xsi:type="dc:Point" x="764" y="918" />
-        <di:waypoint xsi:type="dc:Point" x="764" y="850" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1374" y="853.0052048946286" width="85" height="24" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1lsfn19_di" bpmnElement="SequenceFlow_1lsfn19">
-        <di:waypoint xsi:type="dc:Point" x="1488" y="721" />
-        <di:waypoint xsi:type="dc:Point" x="1488" y="858" />
-        <di:waypoint xsi:type="dc:Point" x="1368" y="952" />
-        <di:waypoint xsi:type="dc:Point" x="1010" y="952" />
-        <di:waypoint xsi:type="dc:Point" x="1010" y="850" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1402" y="937.143889853408" width="85" height="24" />
+          <dc:Bounds x="1387" y="486.98705320489466" width="21" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_19ba94v_di" bpmnElement="SequenceFlow_19ba94v">
-        <di:waypoint xsi:type="dc:Point" x="319" y="599" />
-        <di:waypoint xsi:type="dc:Point" x="454" y="599" />
+        <di:waypoint xsi:type="dc:Point" x="295" y="725" />
+        <di:waypoint xsi:type="dc:Point" x="361" y="725" />
+        <di:waypoint xsi:type="dc:Point" x="361" y="725" />
+        <di:waypoint xsi:type="dc:Point" x="419" y="725" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="387" y="584" width="0" height="0" />
+          <dc:Bounds x="376" y="725" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ScriptTask_0rqgdju_di" bpmnElement="Task_0eae8go">
-        <dc:Bounds x="219" y="559" width="100" height="80" />
+        <dc:Bounds x="195" y="685" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_0fxuur5_di" bpmnElement="SequenceFlow_0fxuur5">
-        <di:waypoint xsi:type="dc:Point" x="1505" y="688" />
-        <di:waypoint xsi:type="dc:Point" x="1700" y="587" />
-        <di:waypoint xsi:type="dc:Point" x="1700" y="307" />
-        <di:waypoint xsi:type="dc:Point" x="475" y="307" />
+      <bpmndi:BPMNEdge id="SequenceFlow_1c022sy_di" bpmnElement="SequenceFlow_1c022sy">
+        <di:waypoint xsi:type="dc:Point" x="1456" y="485" />
+        <di:waypoint xsi:type="dc:Point" x="1456" y="355" />
+        <di:waypoint xsi:type="dc:Point" x="1389" y="355" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1471" y="420" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_0tz2nj7_di" bpmnElement="Task_1dtbnuy">
+        <dc:Bounds x="139" y="434" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0m9b4r4_di" bpmnElement="Task_1fj63ov">
+        <dc:Bounds x="425" y="434" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1131t0j_di" bpmnElement="Task_1cfkcss">
+        <dc:Bounds x="714" y="434" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0x0eohw_di" bpmnElement="Task_1hdg951">
+        <dc:Bounds x="712" y="685" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1hv52rh_di" bpmnElement="Task_1ca5ctq">
+        <dc:Bounds x="139" y="943" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1wftk6z_di" bpmnElement="Task_1sove95">
+        <dc:Bounds x="415" y="943" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_09rkic6_di" bpmnElement="IntermediateThrowEvent_0wc37af">
+        <dc:Bounds x="299" y="308" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="282" y="351.616" width="69" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1mk2rqe_di" bpmnElement="IntermediateThrowEvent_1r18wa8">
+        <dc:Bounds x="608" y="308" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="591" y="352" width="69" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1esmtgy_di" bpmnElement="SequenceFlow_1esmtgy">
+        <di:waypoint xsi:type="dc:Point" x="317" y="262" />
+        <di:waypoint xsi:type="dc:Point" x="317" y="308" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="329" y="274" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1jmzl1j_di" bpmnElement="SequenceFlow_1jmzl1j">
+        <di:waypoint xsi:type="dc:Point" x="626" y="262" />
+        <di:waypoint xsi:type="dc:Point" x="626" y="308" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="631" y="275" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_0r5r5re_di" bpmnElement="IntermediateThrowEvent_0k7j3qf">
+        <dc:Bounds x="457" y="308" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="432" y="344" width="85" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1pj72fw_di" bpmnElement="SequenceFlow_1pj72fw">
+        <di:waypoint xsi:type="dc:Point" x="475" y="308" />
         <di:waypoint xsi:type="dc:Point" x="475" y="277" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1563" y="581.1817056243242" width="88" height="36" />
+          <dc:Bounds x="490" y="292.5" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1wax44p_di" bpmnElement="SequenceFlow_1wax44p">
-        <di:waypoint xsi:type="dc:Point" x="1507" y="690" />
-        <di:waypoint xsi:type="dc:Point" x="1804" y="594" />
-        <di:waypoint xsi:type="dc:Point" x="1804" y="307" />
-        <di:waypoint xsi:type="dc:Point" x="743" y="307" />
-        <di:waypoint xsi:type="dc:Point" x="743" y="277" />
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_04ceksx_di" bpmnElement="IntermediateThrowEvent_1urs7gm">
+        <dc:Bounds x="746" y="308" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1671" y="596.5" width="81" height="24" />
+          <dc:Bounds x="720" y="344" width="88" height="24" />
         </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1nlqlwn_di" bpmnElement="SequenceFlow_1nlqlwn">
-        <di:waypoint xsi:type="dc:Point" x="1510" y="693" />
-        <di:waypoint xsi:type="dc:Point" x="1904" y="635" />
-        <di:waypoint xsi:type="dc:Point" x="1904" y="307" />
-        <di:waypoint xsi:type="dc:Point" x="175" y="307" />
-        <di:waypoint xsi:type="dc:Point" x="175" y="387" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1lmijmb_di" bpmnElement="SequenceFlow_1lmijmb">
+        <di:waypoint xsi:type="dc:Point" x="764" y="308" />
+        <di:waypoint xsi:type="dc:Point" x="764" y="277" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1762" y="612.956397371246" width="80" height="24" />
+          <dc:Bounds x="779" y="292.5" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1c022sy_di" bpmnElement="SequenceFlow_1c022sy">
-        <di:waypoint xsi:type="dc:Point" x="1499" y="682" />
-        <di:waypoint xsi:type="dc:Point" x="1657" y="478" />
-        <di:waypoint xsi:type="dc:Point" x="1657" y="373" />
-        <di:waypoint xsi:type="dc:Point" x="1538" y="373" />
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0rq7l0k_di" bpmnElement="IntermediateThrowEvent_0wx980v">
+        <dc:Bounds x="878" y="308" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1672" y="425.5" width="0" height="0" />
+          <dc:Bounds x="861" y="344" width="69" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_010ynjs_di" bpmnElement="SequenceFlow_010ynjs">
+        <di:waypoint xsi:type="dc:Point" x="896" y="262" />
+        <di:waypoint xsi:type="dc:Point" x="896" y="308" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="902" y="275" width="18" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_0lpduhk_di" bpmnElement="IntermediateThrowEvent_1khl6dg">
+        <dc:Bounds x="171" y="566" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="157" y="601.2375249500998" width="64" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1c2pwwh_di" bpmnElement="IntermediateThrowEvent_11rri8p">
+        <dc:Bounds x="299" y="566" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="282" y="602" width="69" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0vz2acu_di" bpmnElement="IntermediateThrowEvent_0frizqo">
+        <dc:Bounds x="608" y="566" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="591" y="602" width="69" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0tybfsi_di" bpmnElement="IntermediateThrowEvent_1gmhr39">
+        <dc:Bounds x="878" y="566" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="861" y="602" width="69" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1k86ayn_di" bpmnElement="IntermediateThrowEvent_1m2d0qt">
+        <dc:Bounds x="457" y="566" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="449" y="602" width="51" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_0apaw6k_di" bpmnElement="IntermediateThrowEvent_0p4hkug">
+        <dc:Bounds x="746" y="566" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="733" y="602" width="62" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1qsxbp4_di" bpmnElement="SequenceFlow_1qsxbp4">
+        <di:waypoint xsi:type="dc:Point" x="317" y="499" />
+        <di:waypoint xsi:type="dc:Point" x="317" y="566" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="323" y="522.5" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0qmpjgv_di" bpmnElement="SequenceFlow_0qmpjgv">
+        <di:waypoint xsi:type="dc:Point" x="189" y="566" />
+        <di:waypoint xsi:type="dc:Point" x="189" y="541" />
+        <di:waypoint xsi:type="dc:Point" x="189" y="541" />
+        <di:waypoint xsi:type="dc:Point" x="189" y="514" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="204" y="541" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0tld38t_di" bpmnElement="SequenceFlow_0tld38t">
+        <di:waypoint xsi:type="dc:Point" x="475" y="566" />
+        <di:waypoint xsi:type="dc:Point" x="475" y="540" />
+        <di:waypoint xsi:type="dc:Point" x="475" y="540" />
+        <di:waypoint xsi:type="dc:Point" x="475" y="514" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="490" y="540" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_15bl7wd_di" bpmnElement="SequenceFlow_15bl7wd">
+        <di:waypoint xsi:type="dc:Point" x="626" y="499" />
+        <di:waypoint xsi:type="dc:Point" x="626" y="566" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="632" y="522.5" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_08dyt3l_di" bpmnElement="SequenceFlow_08dyt3l">
+        <di:waypoint xsi:type="dc:Point" x="764" y="566" />
+        <di:waypoint xsi:type="dc:Point" x="764" y="540" />
+        <di:waypoint xsi:type="dc:Point" x="764" y="540" />
+        <di:waypoint xsi:type="dc:Point" x="764" y="514" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="779" y="540" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1m84lq5_di" bpmnElement="SequenceFlow_1m84lq5">
+        <di:waypoint xsi:type="dc:Point" x="896" y="499" />
+        <di:waypoint xsi:type="dc:Point" x="896" y="566" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="902" y="522.5" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_0v6yl7l_di" bpmnElement="IntermediateThrowEvent_1s7fnzf">
+        <dc:Bounds x="227" y="819" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="203" y="854.0179640718563" width="84" height="36" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0jr8fuh_di" bpmnElement="IntermediateThrowEvent_1p2yktm">
+        <dc:Bounds x="602" y="819" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="585" y="855" width="69" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_15k8xfs_di" bpmnElement="IntermediateThrowEvent_17j7yap">
+        <dc:Bounds x="744" y="819" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="730" y="855" width="63" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1kue0lc_di" bpmnElement="IntermediateThrowEvent_1gjzx99">
+        <dc:Bounds x="883" y="819" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="866" y="855" width="69" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1hldqvv_di" bpmnElement="SequenceFlow_1hldqvv">
+        <di:waypoint xsi:type="dc:Point" x="245" y="819" />
+        <di:waypoint xsi:type="dc:Point" x="245" y="765" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="260" y="792" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0fog99f_di" bpmnElement="SequenceFlow_0fog99f">
+        <di:waypoint xsi:type="dc:Point" x="620" y="750" />
+        <di:waypoint xsi:type="dc:Point" x="620" y="819" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="626" y="784.5" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ye8oij_di" bpmnElement="SequenceFlow_0ye8oij">
+        <di:waypoint xsi:type="dc:Point" x="762" y="819" />
+        <di:waypoint xsi:type="dc:Point" x="762" y="765" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="777" y="792" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_12g63pl_di" bpmnElement="SequenceFlow_12g63pl">
+        <di:waypoint xsi:type="dc:Point" x="901" y="750" />
+        <di:waypoint xsi:type="dc:Point" x="901" y="819" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="907" y="784.5" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1ad2ab4_di" bpmnElement="IntermediateThrowEvent_03lb8ti">
+        <dc:Bounds x="171" y="1083" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="162" y="1118.566866267465" width="54" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1bj88jr_di" bpmnElement="IntermediateThrowEvent_1umr8ik">
+        <dc:Bounds x="299" y="1083" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="282" y="1118.566866267465" width="69" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1a795jb_di" bpmnElement="IntermediateThrowEvent_044oajb">
+        <dc:Bounds x="447" y="1083" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="428" y="1119" width="74" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0l74cfl_di" bpmnElement="IntermediateThrowEvent_1c1s0hp">
+        <dc:Bounds x="608" y="1083" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="591" y="1119" width="69" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1vgxxf3_di" bpmnElement="IntermediateThrowEvent_11i6md0">
+        <dc:Bounds x="750" y="1083" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="725" y="1119" width="85" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_08t3cq7_di" bpmnElement="IntermediateThrowEvent_1d8c9i0">
+        <dc:Bounds x="889" y="1083" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="872" y="1119" width="69" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_08kn9ok_di" bpmnElement="SequenceFlow_08kn9ok">
+        <di:waypoint xsi:type="dc:Point" x="189" y="1083" />
+        <di:waypoint xsi:type="dc:Point" x="189" y="1023" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="204" y="1043" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0l83v2k_di" bpmnElement="SequenceFlow_0l83v2k">
+        <di:waypoint xsi:type="dc:Point" x="317" y="1008" />
+        <di:waypoint xsi:type="dc:Point" x="317" y="1083" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="323" y="1035.5" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_02uiht9_di" bpmnElement="SequenceFlow_02uiht9">
+        <di:waypoint xsi:type="dc:Point" x="465" y="1083" />
+        <di:waypoint xsi:type="dc:Point" x="465" y="1023" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="480" y="1043" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_07fhkt4_di" bpmnElement="SequenceFlow_07fhkt4">
+        <di:waypoint xsi:type="dc:Point" x="626" y="1008" />
+        <di:waypoint xsi:type="dc:Point" x="626" y="1083" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="632" y="1035.5" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_11p8elx_di" bpmnElement="SequenceFlow_11p8elx">
+        <di:waypoint xsi:type="dc:Point" x="768" y="1083" />
+        <di:waypoint xsi:type="dc:Point" x="768" y="1023" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="783" y="1043" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0p94lgv_di" bpmnElement="SequenceFlow_0p94lgv">
+        <di:waypoint xsi:type="dc:Point" x="907" y="1008" />
+        <di:waypoint xsi:type="dc:Point" x="907" y="1083" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="913" y="1035.5" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1dqbqqx_di" bpmnElement="SequenceFlow_1dqbqqx">
+        <di:waypoint xsi:type="dc:Point" x="181" y="1320" />
+        <di:waypoint xsi:type="dc:Point" x="182" y="1280" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="182" y="1285" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_11t1f0p_di" bpmnElement="IntermediateThrowEvent_0xv558x">
+        <dc:Bounds x="163" y="1320" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="145" y="1355.045908183633" width="72" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_0rgn1jk_di" bpmnElement="IntermediateThrowEvent_0hljxy3">
+        <dc:Bounds x="1051" y="492" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1034" y="528" width="69" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1nplvhi_di" bpmnElement="SequenceFlow_1nplvhi">
+        <di:waypoint xsi:type="dc:Point" x="1087" y="510" />
+        <di:waypoint xsi:type="dc:Point" x="1132" y="510" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1110" y="485" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0tqrgop_di" bpmnElement="SequenceFlow_0tqrgop">
+        <di:waypoint xsi:type="dc:Point" x="1462" y="491" />
+        <di:waypoint xsi:type="dc:Point" x="1523" y="299" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1493" y="380" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_126nlmw_di" bpmnElement="SequenceFlow_126nlmw">
+        <di:waypoint xsi:type="dc:Point" x="1466" y="495" />
+        <di:waypoint xsi:type="dc:Point" x="1569" y="327" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1518" y="396" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0mw3mwl_di" bpmnElement="SequenceFlow_0mw3mwl">
+        <di:waypoint xsi:type="dc:Point" x="1469" y="498" />
+        <di:waypoint xsi:type="dc:Point" x="1614" y="360" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1542" y="414" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_13md9cw_di" bpmnElement="SequenceFlow_13md9cw">
+        <di:waypoint xsi:type="dc:Point" x="1472" y="501" />
+        <di:waypoint xsi:type="dc:Point" x="1652" y="403" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1562" y="437" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0xylem3_di" bpmnElement="SequenceFlow_0xylem3">
+        <di:waypoint xsi:type="dc:Point" x="1476" y="505" />
+        <di:waypoint xsi:type="dc:Point" x="1682" y="451" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1579" y="463" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1c5mxd5_di" bpmnElement="SequenceFlow_1c5mxd5">
+        <di:waypoint xsi:type="dc:Point" x="1481" y="510" />
+        <di:waypoint xsi:type="dc:Point" x="1697" y="510" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1589" y="495" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0u8hiu2_di" bpmnElement="SequenceFlow_0u8hiu2">
+        <di:waypoint xsi:type="dc:Point" x="1477" y="514" />
+        <di:waypoint xsi:type="dc:Point" x="1682" y="559" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1580" y="521.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0fs7ay9_di" bpmnElement="SequenceFlow_0fs7ay9">
+        <di:waypoint xsi:type="dc:Point" x="1473" y="518" />
+        <di:waypoint xsi:type="dc:Point" x="1652" y="610" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1563" y="549" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_00qwx4v_di" bpmnElement="SequenceFlow_00qwx4v">
+        <di:waypoint xsi:type="dc:Point" x="1469" y="522" />
+        <di:waypoint xsi:type="dc:Point" x="1615" y="661" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1542" y="576.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_14s8ji9_di" bpmnElement="SequenceFlow_14s8ji9">
+        <di:waypoint xsi:type="dc:Point" x="1466" y="525" />
+        <di:waypoint xsi:type="dc:Point" x="1570" y="692" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1518" y="593.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0kricor_di" bpmnElement="SequenceFlow_0kricor">
+        <di:waypoint xsi:type="dc:Point" x="1462" y="529" />
+        <di:waypoint xsi:type="dc:Point" x="1524" y="722" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1493" y="610.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_11fq8y0_di" bpmnElement="IntermediateThrowEvent_08j8zjs">
+        <dc:Bounds x="1511" y="265" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1486" y="233.41716566866268" width="85" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0s02puh_di" bpmnElement="IntermediateThrowEvent_0tj8iiy">
+        <dc:Bounds x="1561" y="294" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1561" y="259.4171656686627" width="88" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0jpplot_di" bpmnElement="IntermediateThrowEvent_0oeqjo1">
+        <dc:Bounds x="1609" y="330" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1625" y="306.4171656686627" width="64" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_002ei8c_di" bpmnElement="IntermediateThrowEvent_1939dn7">
+        <dc:Bounds x="1650" y="377" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1689" y="354.4171656686627" width="51" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0mfh44i_di" bpmnElement="IntermediateThrowEvent_1rn3nlo">
+        <dc:Bounds x="1681" y="429" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1724" y="427.4171656686627" width="62" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0nuhjay_di" bpmnElement="IntermediateThrowEvent_0weaigg">
+        <dc:Bounds x="1697" y="493" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1744" y="492.4171656686626" width="84" height="36" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_178560e_di" bpmnElement="IntermediateThrowEvent_1q8mns4">
+        <dc:Bounds x="1681" y="546" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1730" y="558.2894211576846" width="63" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1iiwg3y_di" bpmnElement="IntermediateThrowEvent_16kgzdv">
+        <dc:Bounds x="1650" y="601" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1698" y="607.2894211576846" width="54" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0q4aaqn_di" bpmnElement="IntermediateThrowEvent_18v3win">
+        <dc:Bounds x="1609" y="656" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1654" y="679.2894211576846" width="74" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0x5j21r_di" bpmnElement="IntermediateThrowEvent_0kypyu0">
+        <dc:Bounds x="1562" y="689" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1595" y="727.2894211576846" width="85" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_130x96w_di" bpmnElement="IntermediateThrowEvent_024m4nk">
+        <dc:Bounds x="1511" y="721" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1507" y="763.2894211576846" width="72" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_178fxkj_di" bpmnElement="SequenceFlow_178fxkj">
+        <di:waypoint xsi:type="dc:Point" x="971" y="90" />
+        <di:waypoint xsi:type="dc:Point" x="982" y="90" />
+        <di:waypoint xsi:type="dc:Point" x="982" y="156" />
+        <di:waypoint xsi:type="dc:Point" x="103" y="156" />
+        <di:waypoint xsi:type="dc:Point" x="103" y="237" />
+        <di:waypoint xsi:type="dc:Point" x="131" y="237" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="543" y="141" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0d7vlr8_di" bpmnElement="Task_155eyrq">
+        <dc:Bounds x="871" y="50" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0a0lfh8_di" bpmnElement="SequenceFlow_0a0lfh8">
+        <di:waypoint xsi:type="dc:Point" x="320" y="1576" />
+        <di:waypoint xsi:type="dc:Point" x="353" y="1576" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="337" y="1561" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0r0o5yt_di" bpmnElement="SequenceFlow_0r0o5yt">
+        <di:waypoint xsi:type="dc:Point" x="453" y="1576" />
+        <di:waypoint xsi:type="dc:Point" x="490" y="1576" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="472" y="1561" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0slcwxc_di" bpmnElement="SequenceFlow_0slcwxc">
+        <di:waypoint xsi:type="dc:Point" x="590" y="1576" />
+        <di:waypoint xsi:type="dc:Point" x="621" y="1576" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="606" y="1561" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1gdinh5_di" bpmnElement="Task_07rej8l">
+        <dc:Bounds x="220" y="1536" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0l1xjdz_di" bpmnElement="Task_16v4gow">
+        <dc:Bounds x="490" y="1536" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1e4qhkx_di" bpmnElement="Task_18twhln">
+        <dc:Bounds x="353" y="1536" width="100" height="80" />
+      </bpmndi:BPMNShape>
     </bpmndi:BPMNPlane>
   </bpmndi:BPMNDiagram>
 </bpmn2:definitions>
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/VnfConfigUpdate.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/VnfConfigUpdate.bpmn
new file mode 100644
index 0000000..5915b9b
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/VnfConfigUpdate.bpmn
@@ -0,0 +1,1631 @@
+<?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="_F0omAMXGEeW834CKd-K10Q" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
+  <bpmn2:process id="VnfConfigUpdate" name="VnfConfigUpdate" isExecutable="true">
+    <bpmn2:scriptTask id="ScriptTask_1" name="Send Synch Response" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_5</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0y0jt4l</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def uvfm = new VnfConfigUpdate()
+uvfm.sendSynchResponse(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="Task_1rxiqe1" targetRef="ExclusiveGateway_045e1uz" />
+    <bpmn2:scriptTask id="PreProcessRequest" name="Pre-Process Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_4</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_5</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def uvfm = new VnfConfigUpdate()
+uvfm.preProcessRequest(execution)
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_5" name="" sourceRef="PreProcessRequest" targetRef="ScriptTask_1" />
+    <bpmn2:callActivity id="CallActivity_1" name="Completion Handler" calledElement="CompleteMsoProcess">
+      <bpmn2:extensionElements>
+        <camunda:in source="CompletionHandlerRequest" target="CompleteMsoProcessRequest" />
+        <camunda:in source="mso-request-id" target="mso-request-id" />
+        <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_17</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_14</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_14" name="" sourceRef="CallActivity_1" targetRef="ScriptTask_4" />
+    <bpmn2:endEvent id="EndEvent_1" name="TheEnd">
+      <bpmn2:incoming>SequenceFlow_6</bpmn2:incoming>
+      <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_5" />
+    </bpmn2:endEvent>
+    <bpmn2:scriptTask id="ScriptTask_4" name="Set Success Indicator" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_14</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[// The following variable is checked by the unit test
+execution.setVariable("VnfConfigUpdateSuccessIndicator", true)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="ScriptTask_4" targetRef="EndEvent_1" />
+    <bpmn2:scriptTask id="ScriptTask_10" name="Completion Handler (prep)" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_3</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_07uuj2d</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_17</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def uvfm = new VnfConfigUpdate()
+uvfm.completionHandlerPrep(execution, 'CompletionHandlerRequest')
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_17" name="" sourceRef="ScriptTask_10" targetRef="CallActivity_1" />
+    <bpmn2:subProcess id="SubProcess_1" name="Error Handler" triggeredByEvent="true">
+      <bpmn2:startEvent id="StartEvent_3" name="Catch All Errors">
+        <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition id="ErrorEventDefinition_1" />
+      </bpmn2:startEvent>
+      <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_3" targetRef="Task_1tx7e9s" />
+      <bpmn2:scriptTask id="ScriptTask_3" name="Fallout Handler (prep)" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_0xt2xvx</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_7</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def uvfm = new VnfConfigUpdate()
+uvfm.falloutHandlerPrep(execution, 'FalloutHandlerRequest')
+]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_7" sourceRef="ScriptTask_3" targetRef="CallActivity_2" />
+      <bpmn2:callActivity id="CallActivity_2" name="Fallout Handler" calledElement="FalloutHandler">
+        <bpmn2:extensionElements>
+          <camunda:in source="FalloutHandlerRequest" target="FalloutHandlerRequest" />
+          <camunda:in source="mso-request-id" target="mso-request-id" />
+          <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
+          <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        </bpmn2:extensionElements>
+        <bpmn2:incoming>SequenceFlow_7</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_19</bpmn2:outgoing>
+      </bpmn2:callActivity>
+      <bpmn2:endEvent id="EndEvent_2">
+        <bpmn2:incoming>SequenceFlow_19</bpmn2:incoming>
+        <bpmn2:terminateEventDefinition id="TerminateEventDefinition_1" />
+      </bpmn2:endEvent>
+      <bpmn2:sequenceFlow id="SequenceFlow_19" name="" sourceRef="CallActivity_2" targetRef="EndEvent_2" />
+      <bpmn2:sequenceFlow id="SequenceFlow_1vxpbd0" sourceRef="Task_1tx7e9s" targetRef="Task_02avn81" />
+      <bpmn2:sequenceFlow id="SequenceFlow_03ayqeh" sourceRef="Task_02avn81" targetRef="Task_0b707rs" />
+      <bpmn2:sequenceFlow id="SequenceFlow_0xt2xvx" sourceRef="Task_0b707rs" targetRef="ScriptTask_3" />
+      <bpmn2:scriptTask id="Task_1tx7e9s" name="PreProcess Rollback" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1vxpbd0</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def uvfm = new VnfInPlaceUpdate()
+uvfm.preProcessRollback(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:scriptTask id="Task_0b707rs" name="PostProcess Rollback" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_03ayqeh</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_0xt2xvx</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def uvfm = new VnfInPlaceUpdate()
+uvfm.postProcessRollback(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:callActivity id="Task_02avn81" name="Rollback Processing" calledElement="RollbackVnf">
+        <bpmn2:extensionElements>
+          <camunda:in source="msoRequestId" target="msoRequestId" />
+          <camunda:in source="vnfId" target="vnfId" />
+          <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+          <camunda:in source="rollbackSetClosedLoopDisabledFlag" target="rollbackSetClosedLoopDisabledFlag" />
+          <camunda:in source="rollbackSetVnfInMaintenanceFlag" target="rollbackSetVnfInMaintenanceFlag" />
+          <camunda:in source="rollbackVnfStop" target="rollbackVnfStop" />
+          <camunda:in source="rollbackVnfLock" target="rollbackVnfLock" />
+          <camunda:in source="errorCode" target="errorCode" />
+          <camunda:in source="rollbackQuiesceTraffic" target="rollbackQuiesceTraffic" />
+          <camunda:out source="rollbackSuccessful" target="rollbackSuccessful" />
+        </bpmn2:extensionElements>
+        <bpmn2:incoming>SequenceFlow_1vxpbd0</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_03ayqeh</bpmn2:outgoing>
+      </bpmn2:callActivity>
+    </bpmn2:subProcess>
+    <bpmn2:endEvent id="EndEvent_3">
+      <bpmn2:incoming>SequenceFlow_12</bpmn2:incoming>
+      <bpmn2:terminateEventDefinition id="TerminateEventDefinition_2" />
+    </bpmn2:endEvent>
+    <bpmn2:boundaryEvent id="BoundaryEvent_1" name="" attachedToRef="SubProcess_1">
+      <bpmn2:outgoing>SequenceFlow_12</bpmn2:outgoing>
+      <bpmn2:errorEventDefinition id="ErrorEventDefinition_2" />
+    </bpmn2:boundaryEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_12" name="" sourceRef="BoundaryEvent_1" targetRef="EndEvent_3" />
+    <bpmn2:startEvent id="StartEvent_1" name="Start">
+      <bpmn2:outgoing>SequenceFlow_4</bpmn2:outgoing>
+    </bpmn2:startEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_4" name="" sourceRef="StartEvent_1" targetRef="PreProcessRequest" />
+    <bpmn2:sequenceFlow id="SequenceFlow_3" name="no" sourceRef="ExclusiveGateway_18j1ow5" targetRef="ScriptTask_10" />
+    <bpmn2:sequenceFlow id="SequenceFlow_053qjfy" sourceRef="Task_1opcb4j" targetRef="Task_0vy2zge" />
+    <bpmn2:scriptTask id="Task_1opcb4j" name="Query A&#38;AI for VNF" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0y0jt4l</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_053qjfy</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def uvfm = new VnfConfigUpdate()
+uvfm.queryAAIForVnf(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_0y0jt4l" sourceRef="ScriptTask_1" targetRef="Task_1opcb4j" />
+    <bpmn2:scriptTask id="Task_1rxiqe1" name="Check If VNF Is In Maintenance in A&#38;AI" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_16mo99z</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_09lrk4q</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def uvfm = new VnfConfigUpdate()
+uvfm.checkIfVnfInMaintInAAI(execution)
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_0usxnlk" sourceRef="Task_0vy2zge" targetRef="ExclusiveGateway_0q323wc" />
+    <bpmn2:scriptTask id="Task_0ap39ka" name="Set VNF inMaintenance Flag in A&#38;AI" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0baosqi</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_1eezqx8</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0k3fx7p</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def uvfm = new VnfConfigUpdate()
+uvfm.setVnfInMaintFlagInAAI(execution, true)
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="Task_1drglpt" name="Unset VNF In Maintenance Flag in A&#38;AI" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_16ff86u</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_08m0j98</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_12mfil6</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def uvfm = new VnfConfigUpdate()
+uvfm.setVnfInMaintFlagInAAI(execution, false)
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="Task_0vy2zge" name="Check If Physical Servers Are Locked in A&#38;AI" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_053qjfy</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_179tyul</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0usxnlk</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def uvfm = new VnfConfigUpdate()
+uvfm.checkIfPserversInMaintInAAI(execution)
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_0q323wc" name="Error on PServers Check?" default="SequenceFlow_16mo99z">
+      <bpmn2:incoming>SequenceFlow_0usxnlk</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_16mo99z</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_06ev8or</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_16mo99z" name="no" sourceRef="ExclusiveGateway_0q323wc" targetRef="Task_1rxiqe1" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_045e1uz" name="Error On inMaintenance Check?" default="SequenceFlow_0baosqi">
+      <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0baosqi</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_1cdfjed</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_0baosqi" name="no" sourceRef="ExclusiveGateway_045e1uz" targetRef="Task_0ap39ka" />
+    <bpmn2:callActivity id="Task_0q5cdit" name="Rainy Day Handler" calledElement="RainyDayHandler">
+      <bpmn2:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:in source="serviceType" target="serviceType" />
+        <camunda:in source="nfRole" target="vnfType" />
+        <camunda:in source="currentActivity" target="currentActivity" />
+        <camunda:in source="workStep" target="workStep" />
+        <camunda:in source="failedActivity" target="failedActivity" />
+        <camunda:in source="errorCode" target="errorCode" />
+        <camunda:in source="errorText" target="errorText" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="handlingCode" target="disposition" />
+        <camunda:in source="requestorId" target="requestorId" />
+        <camunda:out source="taskId" target="taskId" />
+        <camunda:in source="vnfName" target="vnfName" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_0nob5cp</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0v0u7mf</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_0v0u7mf" sourceRef="Task_0q5cdit" targetRef="ExclusiveGateway_0xlxgl0" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0vpd06n" name="Abort" sourceRef="ExclusiveGateway_0xlxgl0" targetRef="Task_1tg549h">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("disposition") == "Abort"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_1qr8msw" name="Rollback" sourceRef="ExclusiveGateway_0xlxgl0" targetRef="Task_0zbogrm">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("disposition") == "Rollback"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_0ud5uwa" name="Eror on inMaintenance Set?" default="SequenceFlow_06ajc11">
+      <bpmn2:incoming>SequenceFlow_0k3fx7p</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_17g62fl</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_06ajc11</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_0k3fx7p" sourceRef="Task_0ap39ka" targetRef="ExclusiveGateway_0ud5uwa" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_1gn5lab" name="Error on Health PostCheck?" default="SequenceFlow_08m0j98">
+      <bpmn2:incoming>SequenceFlow_1c79909</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1urpp94</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_08m0j98</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_0l2z6wc" name="Erorr on inMaintenance Unset?" default="SequenceFlow_0u6ho2p">
+      <bpmn2:incoming>SequenceFlow_12mfil6</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0u6ho2p</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0k3zxpd</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_12mfil6" sourceRef="Task_1drglpt" targetRef="ExclusiveGateway_0l2z6wc" />
+    <bpmn2:scriptTask id="Task_1tg549h" name="Abort Processing" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0vpd06n</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_1c022sy</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_05omwbu</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_18lemf9</bpmn2:incoming>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def uvfm = new VnfConfigUpdate()
+uvfm.abortProcessing(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_0xlxgl0" name="Check Disposition">
+      <bpmn2:incoming>SequenceFlow_0v0u7mf</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1qr8msw</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_05gpym3</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0vpd06n</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0rlmex7</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_0y82zzx" name="Next Step?&#10;&#10;" default="SequenceFlow_1c022sy">
+      <bpmn2:incoming>SequenceFlow_05gpym3</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_19myx3o</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1c022sy</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0ueoglv</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_15fqlwe</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0yuj0l5</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_1abb030</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0ls3ej5</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_1ar6ikk</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0t53vux</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_11ck4qe</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_16d2ln4</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_1quapjx</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_101n488</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_05gpym3" name="Skip" sourceRef="ExclusiveGateway_0xlxgl0" targetRef="ExclusiveGateway_0y82zzx">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("disposition") == "Skip" ]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_1c022sy" sourceRef="ExclusiveGateway_0y82zzx" targetRef="Task_1tg549h" />
+    <bpmn2:sequenceFlow id="SequenceFlow_06ev8or" name="yes" sourceRef="ExclusiveGateway_0q323wc" targetRef="IntermediateThrowEvent_0zmqbae">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0zmqbae" name="To Rainy Day Handling">
+      <bpmn2:incoming>SequenceFlow_06ev8or</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To Rainy Day Handling" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0nob5cp" sourceRef="IntermediateThrowEvent_0z0t7rn" targetRef="Task_0q5cdit" />
+    <bpmn2:sequenceFlow id="SequenceFlow_076leae" sourceRef="Task_0e313zv" targetRef="ExclusiveGateway_1rglbmr" />
+    <bpmn2:scriptTask id="Task_0e313zv" name="Check If VF Closed Loop Disabled in A&#38;AI" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0zzwdwf</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_06ajc11</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_076leae</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def uvfm = new VnfConfigUpdate()
+uvfm.checkIfClosedLoopDisabledInAAI(execution)
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_1rglbmr" name="Error on isClosedLoopDisabled Check?" default="SequenceFlow_0du9273">
+      <bpmn2:incoming>SequenceFlow_076leae</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0du9273</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0zh8r6j</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_0du9273" name="no&#10;&#10;" sourceRef="ExclusiveGateway_1rglbmr" targetRef="Task_0n1d5f2" />
+    <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_0z0t7rn" name="To Rainy Day Handling" camunda:asyncBefore="true">
+      <bpmn2:outgoing>SequenceFlow_0nob5cp</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="To Rainy Day Handling" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1qkzlba" name="To Rainy Day Handling">
+      <bpmn2:incoming>SequenceFlow_1cdfjed</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To Rainy Day Handling" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1cdfjed" name="yes" sourceRef="ExclusiveGateway_045e1uz" targetRef="IntermediateThrowEvent_1qkzlba">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0rnlvmz" name="To Rainy Day Handling">
+      <bpmn2:incoming>SequenceFlow_17g62fl</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To Rainy Day Handling" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_17g62fl" name="yes" sourceRef="ExclusiveGateway_0ud5uwa" targetRef="IntermediateThrowEvent_0rnlvmz">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0v69raz" name="To Rainy Day Handling">
+      <bpmn2:incoming>SequenceFlow_0zh8r6j</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To Rainy Day Handling" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0zh8r6j" name="yes&#10;&#10;" sourceRef="ExclusiveGateway_1rglbmr" targetRef="IntermediateThrowEvent_0v69raz">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_15hlkuq" name="To inMaintenanceCheck">
+      <bpmn2:outgoing>SequenceFlow_09lrk4q</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="To inMaintenanceCheck" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_09lrk4q" sourceRef="IntermediateThrowEvent_15hlkuq" targetRef="Task_1rxiqe1" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1eezqx8" sourceRef="IntermediateThrowEvent_1lrkrsn" targetRef="Task_0ap39ka" />
+    <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_1lrkrsn" name="To InMaintenance Set">
+      <bpmn2:outgoing>SequenceFlow_1eezqx8</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="To InMaintenance Set" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_1wdxgjm" name="To check if Closed Loop Disabled">
+      <bpmn2:outgoing>SequenceFlow_0zzwdwf</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="To check if Closed Loop Disabled" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0zzwdwf" sourceRef="IntermediateThrowEvent_1wdxgjm" targetRef="Task_0e313zv" />
+    <bpmn2:sequenceFlow id="SequenceFlow_06ajc11" name="no" sourceRef="ExclusiveGateway_0ud5uwa" targetRef="Task_0e313zv" />
+    <bpmn2:sequenceFlow id="SequenceFlow_179z9vl" sourceRef="Task_0n1d5f2" targetRef="ExclusiveGateway_148eo7w" />
+    <bpmn2:scriptTask id="Task_0n1d5f2" name="Set VF Is Closed Loop Disabled Flag in A&#38;AI" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0du9273</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_032tm9y</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_179z9vl</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def uvfm = new VnfConfigUpdate()
+uvfm.setClosedLoopDisabledInAAI(execution, true)
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_032tm9y" sourceRef="IntermediateThrowEvent_1552q1o" targetRef="Task_0n1d5f2" />
+    <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_1552q1o" name="To set Closed Loop Disabled">
+      <bpmn2:outgoing>SequenceFlow_032tm9y</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="To set Closed Loop Disabled" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_148eo7w" name="Error on Set IsClosedLoopDisabled Flag in A&#38;AI?" default="SequenceFlow_1cjiv6i">
+      <bpmn2:incoming>SequenceFlow_179z9vl</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1cjiv6i</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_1q3oxtf</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_1cjiv6i" name="no&#10;&#10;" sourceRef="ExclusiveGateway_148eo7w" targetRef="Task_1hdg951" />
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_16r1jxm" name="To Rainy Day Handling">
+      <bpmn2:incoming>SequenceFlow_1q3oxtf</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To Rainy Day Handling" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1q3oxtf" name="yes" sourceRef="ExclusiveGateway_148eo7w" targetRef="IntermediateThrowEvent_16r1jxm">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_02hirbh" name="To ConfigModify">
+      <bpmn2:outgoing>SequenceFlow_1wqinjh</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="To ConfigModify" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1urpp94" name="yes" sourceRef="ExclusiveGateway_1gn5lab" targetRef="IntermediateThrowEvent_0vf0a28">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0vf0a28" name="To Rainy Day Handling">
+      <bpmn2:incoming>SequenceFlow_1urpp94</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To Rainy Day Handling" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_0pk24h2" name="To Health PreCheck">
+      <bpmn2:outgoing>SequenceFlow_1colra4</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="To Health PreCheck" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_18j1ow5" name="Error on Unset Closed Loop Disabled?" default="SequenceFlow_3">
+      <bpmn2:incoming>SequenceFlow_1tzax6l</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_3</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0w8mkkn</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_0u6ho2p" name="no" sourceRef="ExclusiveGateway_0l2z6wc" targetRef="Task_0y1h8go" />
+    <bpmn2:scriptTask id="Task_0y1h8go" name="Unset VF Is Closed Loop DisabledFlag in A&#38;AI" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0u6ho2p</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_09xxorv</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1tzax6l</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def uvfm = new VnfConfigUpdate()
+uvfm.setClosedLoopDisabledInAAI(execution, false)
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_1tzax6l" sourceRef="Task_0y1h8go" targetRef="ExclusiveGateway_18j1ow5" />
+    <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_0pmevcz" name="To unset inMaintenance">
+      <bpmn2:outgoing>SequenceFlow_16ff86u</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="To unset inMaintenance" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_16ff86u" sourceRef="IntermediateThrowEvent_0pmevcz" targetRef="Task_1drglpt" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0k3zxpd" name="yes" sourceRef="ExclusiveGateway_0l2z6wc" targetRef="IntermediateThrowEvent_1awckg7">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1awckg7" name="To Rainy Day Handling">
+      <bpmn2:incoming>SequenceFlow_0k3zxpd</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To Rainy Day Handling" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_1b3smly" name="To unset Closed Loop Disabled">
+      <bpmn2:outgoing>SequenceFlow_09xxorv</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="To unset Closed Loop Disabled" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_09xxorv" sourceRef="IntermediateThrowEvent_1b3smly" targetRef="Task_0y1h8go" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0w8mkkn" name="yes" sourceRef="ExclusiveGateway_18j1ow5" targetRef="IntermediateThrowEvent_1cw8gsw">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1cw8gsw" name="To Rainy Day Handling">
+      <bpmn2:incoming>SequenceFlow_0w8mkkn</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To Rainy Day Handling" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_0x846wp" name="To Completion Handler Prep">
+      <bpmn2:outgoing>SequenceFlow_07uuj2d</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="To Completion Handler Prep" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_07uuj2d" sourceRef="IntermediateThrowEvent_0x846wp" targetRef="ScriptTask_10" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0ueoglv" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_0rz6jh4">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[(execution.getVariable("disposition") == "Skip" && execution.getVariable("workStep") == "checkIfPserversInMaintInAAI") ||
+(execution.getVariable("disposition") == "Retry" && execution.getVariable("workStep") == "checkIfVnfInMaintInAAI")]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_15fqlwe" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_1wip9vc">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[(execution.getVariable("disposition") == "Skip" && execution.getVariable("workStep") == "checkIfVnfInMaintInAAI") ||
+(execution.getVariable("disposition") == "Retry" && execution.getVariable("workStep") == "setVnfInMaintFlagInAAI")]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_0yuj0l5" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_1hki8xj">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[(execution.getVariable("disposition") == "Skip" && execution.getVariable("workStep") == "setVnfInMaintFlagInAAI") ||
+(execution.getVariable("disposition") == "Retry" && execution.getVariable("workStep") == "checkClosedLoopDisabledFlagInAAI")]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_1abb030" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_1gfnt9b">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[(execution.getVariable("disposition") == "Skip" && execution.getVariable("workStep") == "checkClosedLoopDisabledFlagInAAI") ||
+(execution.getVariable("disposition") == "Retry" && execution.getVariable("workStep") == "setClosedLoopDisabledFlagInAAI")]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_0ls3ej5" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_1gzhs1a">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[(execution.getVariable("disposition") == "Skip" && execution.getVariable("workStep") == "setClosedLoopDisabledFlagInAAI") ||
+(execution.getVariable("disposition") == "Retry" && execution.getVariable("workStep") == "HealthCheck0")]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_1ar6ikk" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_1p9i2bi">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[(execution.getVariable("disposition") == "Skip" && execution.getVariable("workStep") == "ConfigModify") ||
+(execution.getVariable("disposition") == "Retry" && execution.getVariable("workStep") == "HealthCheck1")]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_0t53vux" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_1cp0hkt">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[(execution.getVariable("disposition") == "Skip" && execution.getVariable("workStep") == "HealthCheck1") ||
+(execution.getVariable("disposition") == "Retry" && execution.getVariable("workStep") == "unsetVnfInMaintFlagInAAI")]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_11ck4qe" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_184w0i8">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[(execution.getVariable("disposition") == "Skip" && execution.getVariable("workStep") == "unsetVnfInMaintFlagInAAI") ||
+(execution.getVariable("disposition") == "Retry" && execution.getVariable("workStep") == "unsetClosedLoopDisabledFlagInAAI")]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_16d2ln4" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_1u9f9kp">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[(execution.getVariable("disposition") == "Skip" && execution.getVariable("workStep") == "unsetClosedLoopDisabledFlagInAAI") ||
+(execution.getVariable("disposition") == "Retry" && execution.getVariable("workStep") == "completionHandlerPrep")]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0rz6jh4" name="To inMaintenanceCheck">
+      <bpmn2:incoming>SequenceFlow_0ueoglv</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To inMaintenanceCheck" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1wip9vc" name="To InMaintenance Set">
+      <bpmn2:incoming>SequenceFlow_15fqlwe</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To InMaintenance Set" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1hki8xj" name="To check if Closed Loop Disabled">
+      <bpmn2:incoming>SequenceFlow_0yuj0l5</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To check if Closed Loop Disabled" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1gfnt9b" name="To set Closed Loop Disabled">
+      <bpmn2:incoming>SequenceFlow_1abb030</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To set Closed Loop Disabled" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1gzhs1a" name="To Health PreCheck">
+      <bpmn2:incoming>SequenceFlow_0ls3ej5</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To Health PreCheck" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0385ons" name="To ConfigModify">
+      <bpmn2:incoming>SequenceFlow_1quapjx</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To ConfigModify" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1quapjx" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_0385ons">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[(execution.getVariable("disposition") == "Skip" && execution.getVariable("workStep") == "HealthCheck0") ||
+(execution.getVariable("disposition") == "Retry" && execution.getVariable("workStep") == "ConfigModify")]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1p9i2bi" name="To Health PostCheck">
+      <bpmn2:incoming>SequenceFlow_1ar6ikk</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To Health PostCheck" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1cp0hkt" name="To unset inMaintenance">
+      <bpmn2:incoming>SequenceFlow_0t53vux</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To unset inMaintenance" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_184w0i8" name="To unset Closed Loop Disabled">
+      <bpmn2:incoming>SequenceFlow_11ck4qe</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To unset Closed Loop Disabled" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1u9f9kp" name="To Completion Handler Prep">
+      <bpmn2:incoming>SequenceFlow_16d2ln4</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To Completion Handler Prep" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_18wrvcy" name="To check if Physical Servers Are Locked">
+      <bpmn2:outgoing>SequenceFlow_179tyul</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="To check if Physical Servers Are Locked" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_179tyul" sourceRef="IntermediateThrowEvent_18wrvcy" targetRef="Task_0vy2zge" />
+    <bpmn2:sequenceFlow id="SequenceFlow_101n488" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_17k1fmk">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("disposition") == "Retry" && execution.getVariable("workStep") == "checkIfPserversInMaintInAAI"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_17k1fmk" name="To check if Physical Servers Are Locked">
+      <bpmn2:incoming>SequenceFlow_101n488</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To check if Physical Servers Are Locked" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1colra4" sourceRef="IntermediateThrowEvent_0pk24h2" targetRef="Task_1hdg951" />
+    <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_0fhmhsk" name="To Health PostCheck">
+      <bpmn2:outgoing>SequenceFlow_16igl7b</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="To Health PostCheck" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_16igl7b" sourceRef="IntermediateThrowEvent_0fhmhsk" targetRef="Task_1ca5ctq" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1c79909" sourceRef="Task_1ca5ctq" targetRef="ExclusiveGateway_1gn5lab" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_16eos6z" name="Error on Health PreCheck?" default="SequenceFlow_188a7lk">
+      <bpmn2:incoming>SequenceFlow_0wfzjs1</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_188a7lk</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_12konw1</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_1nettij" name="Error on ConfigModify?" default="SequenceFlow_0q1skau">
+      <bpmn2:incoming>SequenceFlow_0lpreg4</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0q1skau</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_1s3pbww</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_0wfzjs1" sourceRef="Task_1hdg951" targetRef="ExclusiveGateway_16eos6z" />
+    <bpmn2:sequenceFlow id="SequenceFlow_188a7lk" name="no" sourceRef="ExclusiveGateway_16eos6z" targetRef="Task_1fj63ov" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0lpreg4" sourceRef="Task_1fj63ov" targetRef="ExclusiveGateway_1nettij" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0q1skau" name="no" sourceRef="ExclusiveGateway_1nettij" targetRef="Task_1ca5ctq" />
+    <bpmn2:sequenceFlow id="SequenceFlow_08m0j98" name="no" sourceRef="ExclusiveGateway_1gn5lab" targetRef="Task_1drglpt" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1wqinjh" sourceRef="IntermediateThrowEvent_02hirbh" targetRef="Task_1fj63ov" />
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0s8cdpt" name="To Rainy Day Handling">
+      <bpmn2:incoming>SequenceFlow_12konw1</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To Rainy Day Handling" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_12konw1" name="yes" sourceRef="ExclusiveGateway_16eos6z" targetRef="IntermediateThrowEvent_0s8cdpt">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0e2ibog" name="To Rainy Day Handling">
+      <bpmn2:incoming>SequenceFlow_1s3pbww</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To Rainy Day Handling" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1s3pbww" name="yes" sourceRef="ExclusiveGateway_1nettij" targetRef="IntermediateThrowEvent_0e2ibog">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:callActivity id="Task_1hdg951" name="Call APP-C Health PreCheck" calledElement="AppCClient">
+      <bpmn2:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="actionHealthCheck" target="action" />
+        <camunda:in source="healthCheckIndex0" target="healthCheckIndex" />
+        <camunda:in source="payload" target="payload" />
+        <camunda:in source="vnfId" target="vnfId" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:out source="errorCode" target="errorCode" />
+        <camunda:out source="errorText" target="errorText" />
+        <camunda:out source="workStep" target="workStep" />
+        <camunda:out source="failedActivity" target="failedActivity" />
+        <camunda:in source="vnfName" target="vnfName" />
+        <camunda:in source="vnfHostIpAddress" target="vnfHostIpAddress" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1cjiv6i</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_1colra4</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0wfzjs1</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:callActivity id="Task_1ca5ctq" name="Call APP-C Health PostCheck" calledElement="AppCClient">
+      <bpmn2:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="actionHealthCheck" target="action" />
+        <camunda:in source="healthCheckIndex1" target="healthCheckIndex" />
+        <camunda:in source="payload" target="payload" />
+        <camunda:in source="vnfId" target="vnfId" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:out source="errorCode" target="errorCode" />
+        <camunda:out source="errorText" target="errorText" />
+        <camunda:out source="workStep" target="workStep" />
+        <camunda:out source="failedActivity" target="failedActivity" />
+        <camunda:in source="vnfName" target="vnfName" />
+        <camunda:in source="vnfHostIpAddress" target="vnfHostIpAddress" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_16igl7b</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_0q1skau</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1c79909</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:callActivity id="Task_1fj63ov" name="Call APP-C ConfigModify" calledElement="AppCClient">
+      <bpmn2:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="actionConfigModify" target="action" />
+        <camunda:in source="payload" target="payload" />
+        <camunda:in source="vnfId" target="vnfId" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:out source="errorCode" target="errorCode" />
+        <camunda:out source="errorText" target="errorText" />
+        <camunda:out source="workStep" target="workStep" />
+        <camunda:out source="failedActivity" target="failedActivity" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_188a7lk</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_1wqinjh</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0lpreg4</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_0rlmex7" name="Retry" sourceRef="ExclusiveGateway_0xlxgl0" targetRef="Task_0em349i">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("disposition") == "Retry"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:scriptTask id="Task_0em349i" name="Increment Retry Count" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0rlmex7</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1xwgemy</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def uvfm = new VnfConfigUpdate()
+uvfm.incrementRetryCount(execution)
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_0yu25qy" name="Retries Left?" default="SequenceFlow_05omwbu">
+      <bpmn2:incoming>SequenceFlow_1nm4wr1</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_19myx3o</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_05omwbu</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_19myx3o" name="yes" sourceRef="ExclusiveGateway_0yu25qy" targetRef="ExclusiveGateway_0y82zzx">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[String retryVariableName = execution.getVariable('retryCountVariableName')
+
+execution.getVariable(retryVariableName) < execution.getVariable("maxRetryCount")]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_05omwbu" name="no" sourceRef="ExclusiveGateway_0yu25qy" targetRef="Task_1tg549h" />
+    <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_0u8jlsq" name="RetryTimer">
+      <bpmn2:incoming>SequenceFlow_1xwgemy</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1nm4wr1</bpmn2:outgoing>
+      <bpmn2:timerEventDefinition>
+        <bpmn2:timeDuration xsi:type="bpmn2:tFormalExpression">PT1M</bpmn2:timeDuration>
+      </bpmn2:timerEventDefinition>
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1xwgemy" sourceRef="Task_0em349i" targetRef="IntermediateThrowEvent_0u8jlsq" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1nm4wr1" sourceRef="IntermediateThrowEvent_0u8jlsq" targetRef="ExclusiveGateway_0yu25qy" />
+    <bpmn2:callActivity id="Task_0zbogrm" name="Rollback Processing" calledElement="RollbackVnf">
+      <bpmn2:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="vnfId" target="vnfId" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:in source="rollbackSetClosedLoopDisabledFlag" target="rollbackSetClosedLoopDisabledFlag" />
+        <camunda:in source="rollbackSetVnfInMaintenanceFlag" target="rollbackSetVnfInMaintenanceFlag" />
+        <camunda:in source="rollbackVnfStop" target="rollbackVnfStop" />
+        <camunda:in source="rollbackVnfLock" target="rollbackVnfLock" />
+        <camunda:in source="errorCode" target="errorCode" />
+        <camunda:out source="rollbackSuccessful" target="rollbackSuccessful" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1qr8msw</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_18lemf9</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_18lemf9" sourceRef="Task_0zbogrm" targetRef="Task_1tg549h" />
+  </bpmn2:process>
+  <bpmn2:error id="Error_1" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="VnfConfigUpdate">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_50" bpmnElement="StartEvent_1">
+        <dc:Bounds x="97" y="72" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="103" y="113" width="23" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_125" bpmnElement="EndEvent_1">
+        <dc:Bounds x="574" y="734" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="572" y="775" width="39" height="13" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_4" sourceElement="_BPMNShape_StartEvent_50" targetElement="_BPMNShape_ScriptTask_124">
+        <di:waypoint xsi:type="dc:Point" x="133" y="90" />
+        <di:waypoint xsi:type="dc:Point" x="209" y="90" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="171" y="75" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_124" bpmnElement="PreProcessRequest">
+        <dc:Bounds x="209" y="50" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="SequenceFlow_5" sourceElement="_BPMNShape_ScriptTask_124" targetElement="_BPMNShape_ScriptTask_125">
+        <di:waypoint xsi:type="dc:Point" x="309" y="90" />
+        <di:waypoint xsi:type="dc:Point" x="373" y="90" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="341" y="75" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_125" bpmnElement="ScriptTask_1">
+        <dc:Bounds x="373" y="50" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_ScriptTask_125">
+        <di:waypoint xsi:type="dc:Point" x="473" y="237" />
+        <di:waypoint xsi:type="dc:Point" x="513" y="237" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="493" y="222" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_127" bpmnElement="ScriptTask_4">
+        <dc:Bounds x="420" y="712" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_6" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_ScriptTask_127" targetElement="_BPMNShape_EndEvent_125">
+        <di:waypoint xsi:type="dc:Point" x="520" y="752" />
+        <di:waypoint xsi:type="dc:Point" x="554" y="752" />
+        <di:waypoint xsi:type="dc:Point" x="554" y="752" />
+        <di:waypoint xsi:type="dc:Point" x="574" y="752" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="569" y="752" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_133" bpmnElement="ScriptTask_10">
+        <dc:Bounds x="131" y="712" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_CallActivity_27" bpmnElement="CallActivity_1">
+        <dc:Bounds x="274" y="712" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_17" bpmnElement="SequenceFlow_17" sourceElement="_BPMNShape_ScriptTask_133" targetElement="_BPMNShape_CallActivity_27">
+        <di:waypoint xsi:type="dc:Point" x="231" y="752" />
+        <di:waypoint xsi:type="dc:Point" x="253" y="752" />
+        <di:waypoint xsi:type="dc:Point" x="253" y="752" />
+        <di:waypoint xsi:type="dc:Point" x="274" y="752" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="268" y="752" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_SubProcess_17" bpmnElement="SubProcess_1" isExpanded="true">
+        <dc:Bounds x="109" y="1075" width="1139" height="244" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_52" bpmnElement="StartEvent_3">
+        <dc:Bounds x="173" y="1169" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="152" y="1210" width="78" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_136" bpmnElement="ScriptTask_3">
+        <dc:Bounds x="795" y="1147" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_52" targetElement="_BPMNShape_ScriptTask_136">
+        <di:waypoint xsi:type="dc:Point" x="209" y="1187" />
+        <di:waypoint xsi:type="dc:Point" x="265" y="1187" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="237" y="1172" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_7" bpmnElement="SequenceFlow_7" sourceElement="_BPMNShape_ScriptTask_136" targetElement="_BPMNShape_CallActivity_28">
+        <di:waypoint xsi:type="dc:Point" x="895" y="1187" />
+        <di:waypoint xsi:type="dc:Point" x="963" y="1187" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="911" y="1187" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_126" bpmnElement="EndEvent_2">
+        <dc:Bounds x="1119" y="1169" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1137" y="1210" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_BoundaryEvent_43" bpmnElement="BoundaryEvent_1">
+        <dc:Bounds x="1230" y="1170" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1248" y="1211" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_127" bpmnElement="EndEvent_3">
+        <dc:Bounds x="1333" y="1169" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1351" y="1210" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_12" bpmnElement="SequenceFlow_12" sourceElement="_BPMNShape_BoundaryEvent_43" targetElement="_BPMNShape_EndEvent_127">
+        <di:waypoint xsi:type="dc:Point" x="1266" y="1188" />
+        <di:waypoint xsi:type="dc:Point" x="1333" y="1187" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1300" y="1172.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_CallActivity_28" bpmnElement="CallActivity_2">
+        <dc:Bounds x="963" y="1147" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_14" bpmnElement="SequenceFlow_14" sourceElement="_BPMNShape_CallActivity_27" targetElement="_BPMNShape_ScriptTask_127">
+        <di:waypoint xsi:type="dc:Point" x="374" y="752" />
+        <di:waypoint xsi:type="dc:Point" x="397" y="752" />
+        <di:waypoint xsi:type="dc:Point" x="397" y="752" />
+        <di:waypoint xsi:type="dc:Point" x="420" y="752" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="412" y="752" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_19" bpmnElement="SequenceFlow_19" sourceElement="_BPMNShape_CallActivity_28" targetElement="_BPMNShape_EndEvent_126">
+        <di:waypoint xsi:type="dc:Point" x="1063" y="1187" />
+        <di:waypoint xsi:type="dc:Point" x="1119" y="1187" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="956" y="1247" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_3" targetElement="_BPMNShape_ScriptTask_133">
+        <di:waypoint xsi:type="dc:Point" x="1227" y="484" />
+        <di:waypoint xsi:type="dc:Point" x="1293" y="484" />
+        <di:waypoint xsi:type="dc:Point" x="1293" y="662" />
+        <di:waypoint xsi:type="dc:Point" x="97" y="662" />
+        <di:waypoint xsi:type="dc:Point" x="97" y="752" />
+        <di:waypoint xsi:type="dc:Point" x="131" y="752" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1251" y="459" width="12" height="13" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_053qjfy_di" bpmnElement="SequenceFlow_053qjfy">
+        <di:waypoint xsi:type="dc:Point" x="642" y="90" />
+        <di:waypoint xsi:type="dc:Point" x="982" y="90" />
+        <di:waypoint xsi:type="dc:Point" x="982" y="156" />
+        <di:waypoint xsi:type="dc:Point" x="103" y="156" />
+        <di:waypoint xsi:type="dc:Point" x="103" y="237" />
+        <di:waypoint xsi:type="dc:Point" x="131" y="237" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="543" y="141" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_08xzuox_di" bpmnElement="Task_1opcb4j">
+        <dc:Bounds x="542" y="50" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0y0jt4l_di" bpmnElement="SequenceFlow_0y0jt4l">
+        <di:waypoint xsi:type="dc:Point" x="473" y="90" />
+        <di:waypoint xsi:type="dc:Point" x="542" y="90" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="508" y="75" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_19pf9z8_di" bpmnElement="Task_1rxiqe1">
+        <dc:Bounds x="373" y="197" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0usxnlk_di" bpmnElement="SequenceFlow_0usxnlk">
+        <di:waypoint xsi:type="dc:Point" x="231" y="237" />
+        <di:waypoint xsi:type="dc:Point" x="279" y="237" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="255" y="222" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0wa4zya_di" bpmnElement="Task_0ap39ka">
+        <dc:Bounds x="608" y="197" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0sgm9bu_di" bpmnElement="Task_1drglpt">
+        <dc:Bounds x="826" y="444" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_16jtt5t_di" bpmnElement="Task_0vy2zge">
+        <dc:Bounds x="131" y="197" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0q323wc_di" bpmnElement="ExclusiveGateway_0q323wc" isMarkerVisible="true">
+        <dc:Bounds x="279" y="212" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="260" y="173" width="87" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_16mo99z_di" bpmnElement="SequenceFlow_16mo99z">
+        <di:waypoint xsi:type="dc:Point" x="329" y="237" />
+        <di:waypoint xsi:type="dc:Point" x="373" y="237" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="345" y="213" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_045e1uz_di" bpmnElement="ExclusiveGateway_045e1uz" isMarkerVisible="true">
+        <dc:Bounds x="513" y="212" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="501" y="163" width="73" height="36" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0baosqi_di" bpmnElement="SequenceFlow_0baosqi">
+        <di:waypoint xsi:type="dc:Point" x="563" y="237" />
+        <di:waypoint xsi:type="dc:Point" x="608" y="237" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="579" y="214" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_1k5n5d1_di" bpmnElement="Task_0q5cdit">
+        <dc:Bounds x="1491" y="390" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0v0u7mf_di" bpmnElement="SequenceFlow_0v0u7mf">
+        <di:waypoint xsi:type="dc:Point" x="1591" y="430" />
+        <di:waypoint xsi:type="dc:Point" x="1673" y="430" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1632" y="415" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0vpd06n_di" bpmnElement="SequenceFlow_0vpd06n">
+        <di:waypoint xsi:type="dc:Point" x="1698" y="405" />
+        <di:waypoint xsi:type="dc:Point" x="1698" y="312" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1704" y="351" width="27" height="13" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1qr8msw_di" bpmnElement="SequenceFlow_1qr8msw">
+        <di:waypoint xsi:type="dc:Point" x="1698" y="455" />
+        <di:waypoint xsi:type="dc:Point" x="1698" y="482" />
+        <di:waypoint xsi:type="dc:Point" x="1698" y="482" />
+        <di:waypoint xsi:type="dc:Point" x="1698" y="524" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1677" y="473" width="42" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0ud5uwa_di" bpmnElement="ExclusiveGateway_0ud5uwa" isMarkerVisible="true">
+        <dc:Bounds x="735" y="212" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="731" y="166" width="73" height="36" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0k3fx7p_di" bpmnElement="SequenceFlow_0k3fx7p">
+        <di:waypoint xsi:type="dc:Point" x="708" y="237" />
+        <di:waypoint xsi:type="dc:Point" x="735" y="237" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="722" y="222" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1gn5lab_di" bpmnElement="ExclusiveGateway_1gn5lab" isMarkerVisible="true">
+        <dc:Bounds x="735" y="459" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="721" y="419" width="77" height="25" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0l2z6wc_di" bpmnElement="ExclusiveGateway_0l2z6wc" isMarkerVisible="true">
+        <dc:Bounds x="963" y="459" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="951" y="412" width="73" height="37" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_12mfil6_di" bpmnElement="SequenceFlow_12mfil6">
+        <di:waypoint xsi:type="dc:Point" x="926" y="484" />
+        <di:waypoint xsi:type="dc:Point" x="963" y="484" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="945" y="469" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1lb0lk5_di" bpmnElement="Task_1tg549h">
+        <dc:Bounds x="1648" y="232" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1gmvi7n_di" bpmnElement="ExclusiveGateway_0xlxgl0" isMarkerVisible="true">
+        <dc:Bounds x="1673" y="405" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1654" y="387" width="87" height="13" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0y82zzx_di" bpmnElement="ExclusiveGateway_0y82zzx" isMarkerVisible="true">
+        <dc:Bounds x="1967" y="405" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1927" y="397" width="54" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_05gpym3_di" bpmnElement="SequenceFlow_05gpym3">
+        <di:waypoint xsi:type="dc:Point" x="1723" y="430" />
+        <di:waypoint xsi:type="dc:Point" x="1967" y="430" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1813" y="436" width="21" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1c022sy_di" bpmnElement="SequenceFlow_1c022sy">
+        <di:waypoint xsi:type="dc:Point" x="1992" y="405" />
+        <di:waypoint xsi:type="dc:Point" x="1992" y="272" />
+        <di:waypoint xsi:type="dc:Point" x="1748" y="272" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2007" y="338.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_06ev8or_di" bpmnElement="SequenceFlow_06ev8or">
+        <di:waypoint xsi:type="dc:Point" x="304" y="262" />
+        <di:waypoint xsi:type="dc:Point" x="304" y="288" />
+        <di:waypoint xsi:type="dc:Point" x="304" y="288" />
+        <di:waypoint xsi:type="dc:Point" x="304" y="308" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="314" y="273" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0o6fb4f_di" bpmnElement="IntermediateThrowEvent_0zmqbae">
+        <dc:Bounds x="286" y="308" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="269" y="343.609" width="69" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0nob5cp_di" bpmnElement="SequenceFlow_0nob5cp">
+        <di:waypoint xsi:type="dc:Point" x="1405" y="430" />
+        <di:waypoint xsi:type="dc:Point" x="1491" y="430" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1448" y="415" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_076leae_di" bpmnElement="SequenceFlow_076leae">
+        <di:waypoint xsi:type="dc:Point" x="926" y="237" />
+        <di:waypoint xsi:type="dc:Point" x="955" y="237" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="941" y="222" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0cbpm7l_di" bpmnElement="Task_0e313zv">
+        <dc:Bounds x="826" y="197" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1rglbmr_di" bpmnElement="ExclusiveGateway_1rglbmr" isMarkerVisible="true">
+        <dc:Bounds x="955.192" y="212" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="936" y="164" width="88" height="36" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0du9273_di" bpmnElement="SequenceFlow_0du9273">
+        <di:waypoint xsi:type="dc:Point" x="1005" y="237" />
+        <di:waypoint xsi:type="dc:Point" x="1046" y="237" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1020" y="212" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1p06jf5_di" bpmnElement="IntermediateThrowEvent_0z0t7rn">
+        <dc:Bounds x="1369" y="412" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1354" y="458" width="66" height="25" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0xwlxk9_di" bpmnElement="IntermediateThrowEvent_1qkzlba">
+        <dc:Bounds x="520" y="308" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="503" y="344" width="69" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1cdfjed_di" bpmnElement="SequenceFlow_1cdfjed">
+        <di:waypoint xsi:type="dc:Point" x="538" y="262" />
+        <di:waypoint xsi:type="dc:Point" x="538" y="308" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="544" y="275" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_113xxsl_di" bpmnElement="IntermediateThrowEvent_0rnlvmz">
+        <dc:Bounds x="742" y="308" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="725" y="344" width="69" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_17g62fl_di" bpmnElement="SequenceFlow_17g62fl">
+        <di:waypoint xsi:type="dc:Point" x="760" y="262" />
+        <di:waypoint xsi:type="dc:Point" x="760" y="308" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="766" y="275" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0iyegh1_di" bpmnElement="IntermediateThrowEvent_0v69raz">
+        <dc:Bounds x="962" y="308" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="945" y="343.609" width="69" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0zh8r6j_di" bpmnElement="SequenceFlow_0zh8r6j">
+        <di:waypoint xsi:type="dc:Point" x="980" y="262" />
+        <di:waypoint xsi:type="dc:Point" x="980" y="308" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="986" y="285" width="17" height="13" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_07pur50_di" bpmnElement="IntermediateThrowEvent_15hlkuq">
+        <dc:Bounds x="405" y="308" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="381" y="344" width="83" height="36" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_09lrk4q_di" bpmnElement="SequenceFlow_09lrk4q">
+        <di:waypoint xsi:type="dc:Point" x="423" y="308" />
+        <di:waypoint xsi:type="dc:Point" x="423" y="277" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="438" y="292.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1eezqx8_di" bpmnElement="SequenceFlow_1eezqx8">
+        <di:waypoint xsi:type="dc:Point" x="658" y="308" />
+        <di:waypoint xsi:type="dc:Point" x="658" y="277" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="673" y="292.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1pog9t5_di" bpmnElement="IntermediateThrowEvent_1lrkrsn">
+        <dc:Bounds x="640" y="308" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="614" y="343.609" width="88" height="25" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1rtf0em_di" bpmnElement="IntermediateThrowEvent_1wdxgjm">
+        <dc:Bounds x="858" y="308" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="844" y="344" width="64" height="37" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0zzwdwf_di" bpmnElement="SequenceFlow_0zzwdwf">
+        <di:waypoint xsi:type="dc:Point" x="876" y="308" />
+        <di:waypoint xsi:type="dc:Point" x="876" y="277" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="891" y="292.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_06ajc11_di" bpmnElement="SequenceFlow_06ajc11">
+        <di:waypoint xsi:type="dc:Point" x="785" y="237" />
+        <di:waypoint xsi:type="dc:Point" x="826" y="237" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="800" y="212" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_179z9vl_di" bpmnElement="SequenceFlow_179z9vl">
+        <di:waypoint xsi:type="dc:Point" x="1146" y="237" />
+        <di:waypoint xsi:type="dc:Point" x="1184" y="237" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1165" y="222" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1iio503_di" bpmnElement="Task_0n1d5f2">
+        <dc:Bounds x="1046" y="197" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_032tm9y_di" bpmnElement="SequenceFlow_032tm9y">
+        <di:waypoint xsi:type="dc:Point" x="1096" y="308" />
+        <di:waypoint xsi:type="dc:Point" x="1096" y="277" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1111" y="292.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_0jhmy9d_di" bpmnElement="IntermediateThrowEvent_1552q1o">
+        <dc:Bounds x="1078" y="308" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1061" y="344" width="70" height="25" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_148eo7w_di" bpmnElement="ExclusiveGateway_148eo7w" isMarkerVisible="true">
+        <dc:Bounds x="1184.192" y="212" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1167" y="149" width="83" height="48" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1cjiv6i_di" bpmnElement="SequenceFlow_1cjiv6i">
+        <di:waypoint xsi:type="dc:Point" x="1234" y="237" />
+        <di:waypoint xsi:type="dc:Point" x="1285" y="237" />
+        <di:waypoint xsi:type="dc:Point" x="1285" y="401" />
+        <di:waypoint xsi:type="dc:Point" x="105" y="401" />
+        <di:waypoint xsi:type="dc:Point" x="105" y="484" />
+        <di:waypoint xsi:type="dc:Point" x="131" y="484" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1249" y="211" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1qtnv6e_di" bpmnElement="IntermediateThrowEvent_16r1jxm">
+        <dc:Bounds x="1191" y="299" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1174" y="334.609" width="69" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1q3oxtf_di" bpmnElement="SequenceFlow_1q3oxtf">
+        <di:waypoint xsi:type="dc:Point" x="1209" y="262" />
+        <di:waypoint xsi:type="dc:Point" x="1209" y="299" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1215" y="270.5" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1ogs7t2_di" bpmnElement="IntermediateThrowEvent_02hirbh">
+        <dc:Bounds x="405" y="577" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="383" y="613" width="79" height="13" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1urpp94_di" bpmnElement="SequenceFlow_1urpp94">
+        <di:waypoint xsi:type="dc:Point" x="760" y="509" />
+        <di:waypoint xsi:type="dc:Point" x="760" y="577" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="772" y="528.3097560975609" width="17" height="13" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1vi3wf9_di" bpmnElement="IntermediateThrowEvent_0vf0a28">
+        <dc:Bounds x="742" y="577" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="726" y="613" width="68" height="25" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1bsxf5o_di" bpmnElement="IntermediateThrowEvent_0pk24h2">
+        <dc:Bounds x="163" y="577" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="156" y="613" width="50" height="25" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_18j1ow5_di" bpmnElement="ExclusiveGateway_18j1ow5" isMarkerVisible="true">
+        <dc:Bounds x="1177" y="459" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1172" y="407" width="75" height="37" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0u6ho2p_di" bpmnElement="SequenceFlow_0u6ho2p">
+        <di:waypoint xsi:type="dc:Point" x="1013" y="484" />
+        <di:waypoint xsi:type="dc:Point" x="1043" y="484" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1022" y="459" width="13" height="13" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_08r89q9_di" bpmnElement="Task_0y1h8go">
+        <dc:Bounds x="1043" y="444" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1tzax6l_di" bpmnElement="SequenceFlow_1tzax6l">
+        <di:waypoint xsi:type="dc:Point" x="1143" y="484" />
+        <di:waypoint xsi:type="dc:Point" x="1177" y="484" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1333" y="455" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_06j33fe_di" bpmnElement="IntermediateThrowEvent_0pmevcz">
+        <dc:Bounds x="858" y="570" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="841" y="606" width="70" height="25" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_16ff86u_di" bpmnElement="SequenceFlow_16ff86u">
+        <di:waypoint xsi:type="dc:Point" x="876" y="570" />
+        <di:waypoint xsi:type="dc:Point" x="876" y="524" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="891" y="537" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0k3zxpd_di" bpmnElement="SequenceFlow_0k3zxpd">
+        <di:waypoint xsi:type="dc:Point" x="988" y="509" />
+        <di:waypoint xsi:type="dc:Point" x="988" y="570" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="994" y="540" width="17" height="13" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_105mp22_di" bpmnElement="IntermediateThrowEvent_1awckg7">
+        <dc:Bounds x="970" y="570" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="954" y="606" width="68" height="25" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_0kglv4e_di" bpmnElement="IntermediateThrowEvent_1b3smly">
+        <dc:Bounds x="1075" y="570" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1052" y="606" width="81" height="25" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_09xxorv_di" bpmnElement="SequenceFlow_09xxorv">
+        <di:waypoint xsi:type="dc:Point" x="1093" y="570" />
+        <di:waypoint xsi:type="dc:Point" x="1093" y="524" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1108" y="537" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0w8mkkn_di" bpmnElement="SequenceFlow_0w8mkkn">
+        <di:waypoint xsi:type="dc:Point" x="1202" y="509" />
+        <di:waypoint xsi:type="dc:Point" x="1202" y="570" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1208" y="540" width="17" height="13" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0jwgx1d_di" bpmnElement="IntermediateThrowEvent_1cw8gsw">
+        <dc:Bounds x="1184" y="570" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1168" y="606" width="68" height="25" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_0zw87jy_di" bpmnElement="IntermediateThrowEvent_0x846wp">
+        <dc:Bounds x="163" y="847" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="144" y="883" width="73" height="25" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_07uuj2d_di" bpmnElement="SequenceFlow_07uuj2d">
+        <di:waypoint xsi:type="dc:Point" x="181" y="847" />
+        <di:waypoint xsi:type="dc:Point" x="181" y="821" />
+        <di:waypoint xsi:type="dc:Point" x="181" y="821" />
+        <di:waypoint xsi:type="dc:Point" x="181" y="792" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="197" y="821" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ueoglv_di" bpmnElement="SequenceFlow_0ueoglv">
+        <di:waypoint xsi:type="dc:Point" x="1999" y="412" />
+        <di:waypoint xsi:type="dc:Point" x="2079" y="197" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2039" y="290" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_15fqlwe_di" bpmnElement="SequenceFlow_15fqlwe">
+        <di:waypoint xsi:type="dc:Point" x="2002" y="415" />
+        <di:waypoint xsi:type="dc:Point" x="2127" y="232" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2066" y="309" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0yuj0l5_di" bpmnElement="SequenceFlow_0yuj0l5">
+        <di:waypoint xsi:type="dc:Point" x="2006" y="419" />
+        <di:waypoint xsi:type="dc:Point" x="2172" y="283" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2089" y="336" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1abb030_di" bpmnElement="SequenceFlow_1abb030">
+        <di:waypoint xsi:type="dc:Point" x="2010" y="423" />
+        <di:waypoint xsi:type="dc:Point" x="2203" y="349" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2107" y="371" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ls3ej5_di" bpmnElement="SequenceFlow_0ls3ej5">
+        <di:waypoint xsi:type="dc:Point" x="2016" y="429" />
+        <di:waypoint xsi:type="dc:Point" x="2221" y="429" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2119" y="414" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ar6ikk_di" bpmnElement="SequenceFlow_1ar6ikk">
+        <di:waypoint xsi:type="dc:Point" x="2006" y="441" />
+        <di:waypoint xsi:type="dc:Point" x="2172" y="565" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2089" y="488" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0t53vux_di" bpmnElement="SequenceFlow_0t53vux">
+        <di:waypoint xsi:type="dc:Point" x="2003" y="444" />
+        <di:waypoint xsi:type="dc:Point" x="2128" y="605" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2066" y="510" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_11ck4qe_di" bpmnElement="SequenceFlow_11ck4qe">
+        <di:waypoint xsi:type="dc:Point" x="1999" y="448" />
+        <di:waypoint xsi:type="dc:Point" x="2078" y="644" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2039" y="531" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_16d2ln4_di" bpmnElement="SequenceFlow_16d2ln4">
+        <di:waypoint xsi:type="dc:Point" x="1996" y="451" />
+        <di:waypoint xsi:type="dc:Point" x="2033" y="670" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2015" y="546" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_17syve1_di" bpmnElement="IntermediateThrowEvent_0rz6jh4">
+        <dc:Bounds x="2067" y="163" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2073" y="123" width="84" height="36" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0nv8aic_di" bpmnElement="IntermediateThrowEvent_1wip9vc">
+        <dc:Bounds x="2120" y="200" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2169" y="196" width="89" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1g4pmwc_di" bpmnElement="IntermediateThrowEvent_1hki8xj">
+        <dc:Bounds x="2168" y="254" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2208" y="223" width="64" height="36" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1ypnogn_di" bpmnElement="IntermediateThrowEvent_1gfnt9b">
+        <dc:Bounds x="2202" y="326" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2248" y="312" width="71" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1i9ttzs_di" bpmnElement="IntermediateThrowEvent_1gzhs1a">
+        <dc:Bounds x="2221" y="412" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2273" y="409" width="51" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0840e02_di" bpmnElement="IntermediateThrowEvent_0385ons">
+        <dc:Bounds x="2202" y="486" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2250" y="484" width="78" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1quapjx_di" bpmnElement="SequenceFlow_1quapjx">
+        <di:waypoint xsi:type="dc:Point" x="2011" y="436" />
+        <di:waypoint xsi:type="dc:Point" x="2204" y="498" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2108" y="452" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1xq4kx8_di" bpmnElement="IntermediateThrowEvent_1p9i2bi">
+        <dc:Bounds x="2168" y="558" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2227" y="559" width="54" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1vcx5cz_di" bpmnElement="IntermediateThrowEvent_1cp0hkt">
+        <dc:Bounds x="2120" y="601" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2154" y="625" width="70" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1y8fmlw_di" bpmnElement="IntermediateThrowEvent_184w0i8">
+        <dc:Bounds x="2067" y="642" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2107" y="679" width="82" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_024zi9r_di" bpmnElement="IntermediateThrowEvent_1u9f9kp">
+        <dc:Bounds x="2016" y="670" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2021" y="711" width="72" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_08x53cb_di" bpmnElement="IntermediateThrowEvent_18wrvcy">
+        <dc:Bounds x="158" y="308" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="134" y="343.09862671660426" width="83" height="37" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_179tyul_di" bpmnElement="SequenceFlow_179tyul">
+        <di:waypoint xsi:type="dc:Point" x="180" y="309" />
+        <di:waypoint xsi:type="dc:Point" x="181" y="277" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="181" y="278" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_101n488_di" bpmnElement="SequenceFlow_101n488">
+        <di:waypoint xsi:type="dc:Point" x="1996" y="409" />
+        <di:waypoint xsi:type="dc:Point" x="2033" y="177" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2015" y="278" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1fnxvhb_di" bpmnElement="IntermediateThrowEvent_17k1fmk">
+        <dc:Bounds x="2016" y="141" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1991" y="91" width="86" height="36" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1colra4_di" bpmnElement="SequenceFlow_1colra4">
+        <di:waypoint xsi:type="dc:Point" x="181" y="577" />
+        <di:waypoint xsi:type="dc:Point" x="181" y="524" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="196" y="550.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_174wgan_di" bpmnElement="IntermediateThrowEvent_0fhmhsk">
+        <dc:Bounds x="640" y="577" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="631" y="613" width="53" height="25" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_16igl7b_di" bpmnElement="SequenceFlow_16igl7b">
+        <di:waypoint xsi:type="dc:Point" x="658" y="577" />
+        <di:waypoint xsi:type="dc:Point" x="658" y="524" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="673" y="550.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1c79909_di" bpmnElement="SequenceFlow_1c79909">
+        <di:waypoint xsi:type="dc:Point" x="708" y="484" />
+        <di:waypoint xsi:type="dc:Point" x="735" y="484" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="722" y="469" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_16eos6z_di" bpmnElement="ExclusiveGateway_16eos6z" isMarkerVisible="true">
+        <dc:Bounds x="279" y="459" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="265" y="422" width="77" height="25" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1nettij_di" bpmnElement="ExclusiveGateway_1nettij" isMarkerVisible="true">
+        <dc:Bounds x="513" y="459" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="502" y="417" width="71" height="25" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0wfzjs1_di" bpmnElement="SequenceFlow_0wfzjs1">
+        <di:waypoint xsi:type="dc:Point" x="231" y="484" />
+        <di:waypoint xsi:type="dc:Point" x="279" y="484" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="255" y="469" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_188a7lk_di" bpmnElement="SequenceFlow_188a7lk">
+        <di:waypoint xsi:type="dc:Point" x="329" y="484" />
+        <di:waypoint xsi:type="dc:Point" x="373" y="484" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="345" y="459" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0lpreg4_di" bpmnElement="SequenceFlow_0lpreg4">
+        <di:waypoint xsi:type="dc:Point" x="473" y="484" />
+        <di:waypoint xsi:type="dc:Point" x="513" y="484" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="493" y="469" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0q1skau_di" bpmnElement="SequenceFlow_0q1skau">
+        <di:waypoint xsi:type="dc:Point" x="563" y="484" />
+        <di:waypoint xsi:type="dc:Point" x="608" y="484" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="580" y="459" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_08m0j98_di" bpmnElement="SequenceFlow_08m0j98">
+        <di:waypoint xsi:type="dc:Point" x="785" y="484" />
+        <di:waypoint xsi:type="dc:Point" x="826" y="484" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="799" y="459" width="13" height="13" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1wqinjh_di" bpmnElement="SequenceFlow_1wqinjh">
+        <di:waypoint xsi:type="dc:Point" x="423" y="577" />
+        <di:waypoint xsi:type="dc:Point" x="423" y="524" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="438" y="550.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0jgks05_di" bpmnElement="IntermediateThrowEvent_0s8cdpt">
+        <dc:Bounds x="286" y="577" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="269" y="613" width="69" height="25" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_12konw1_di" bpmnElement="SequenceFlow_12konw1">
+        <di:waypoint xsi:type="dc:Point" x="304" y="509" />
+        <di:waypoint xsi:type="dc:Point" x="304" y="577" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="310" y="532.5983606557377" width="18" height="13" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1jys13n_di" bpmnElement="IntermediateThrowEvent_0e2ibog">
+        <dc:Bounds x="520" y="577" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="503" y="613" width="69" height="25" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1s3pbww_di" bpmnElement="SequenceFlow_1s3pbww">
+        <di:waypoint xsi:type="dc:Point" x="538" y="509" />
+        <di:waypoint xsi:type="dc:Point" x="538" y="577" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="544" y="533" width="18" height="13" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_0iywyn3_di" bpmnElement="Task_1hdg951">
+        <dc:Bounds x="131" y="444" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0pzya8j_di" bpmnElement="Task_1ca5ctq">
+        <dc:Bounds x="608" y="444" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0ck1c9r_di" bpmnElement="Task_1fj63ov">
+        <dc:Bounds x="373" y="444" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0rlmex7_di" bpmnElement="SequenceFlow_0rlmex7">
+        <di:waypoint xsi:type="dc:Point" x="1712" y="441" />
+        <di:waypoint xsi:type="dc:Point" x="1823" y="528" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1778" y="468.1344841912912" width="27" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0dqs9kj_di" bpmnElement="Task_0em349i">
+        <dc:Bounds x="1823" y="489" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0yu25qy_di" bpmnElement="ExclusiveGateway_0yu25qy" isMarkerVisible="true">
+        <dc:Bounds x="1909" y="626" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1903" y="676" width="62" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_19myx3o_di" bpmnElement="SequenceFlow_19myx3o">
+        <di:waypoint xsi:type="dc:Point" x="1959" y="651" />
+        <di:waypoint xsi:type="dc:Point" x="1968" y="651" />
+        <di:waypoint xsi:type="dc:Point" x="1968" y="431" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1975" y="589.1802690904609" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_05omwbu_di" bpmnElement="SequenceFlow_05omwbu">
+        <di:waypoint xsi:type="dc:Point" x="1934" y="626" />
+        <di:waypoint xsi:type="dc:Point" x="1934" y="170" />
+        <di:waypoint xsi:type="dc:Point" x="1698" y="170" />
+        <di:waypoint xsi:type="dc:Point" x="1698" y="232" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1938" y="581.649978474545" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_0e4c19r_di" bpmnElement="IntermediateThrowEvent_0u8jlsq">
+        <dc:Bounds x="1855" y="601" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1790" y="613" width="55" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1xwgemy_di" bpmnElement="SequenceFlow_1xwgemy">
+        <di:waypoint xsi:type="dc:Point" x="1873" y="569" />
+        <di:waypoint xsi:type="dc:Point" x="1873" y="601" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1888" y="575" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1nm4wr1_di" bpmnElement="SequenceFlow_1nm4wr1">
+        <di:waypoint xsi:type="dc:Point" x="1873" y="637" />
+        <di:waypoint xsi:type="dc:Point" x="1873" y="651" />
+        <di:waypoint xsi:type="dc:Point" x="1909" y="651" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1888" y="644" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_0b2drei_di" bpmnElement="Task_0zbogrm">
+        <dc:Bounds x="1648" y="524" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_18lemf9_di" bpmnElement="SequenceFlow_18lemf9">
+        <di:waypoint xsi:type="dc:Point" x="1648" y="564" />
+        <di:waypoint xsi:type="dc:Point" x="1617" y="564" />
+        <di:waypoint xsi:type="dc:Point" x="1617" y="272" />
+        <di:waypoint xsi:type="dc:Point" x="1648" y="272" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1632" y="418" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1vxpbd0_di" bpmnElement="SequenceFlow_1vxpbd0">
+        <di:waypoint xsi:type="dc:Point" x="365" y="1187" />
+        <di:waypoint xsi:type="dc:Point" x="431" y="1187" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="398" y="1172" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_03ayqeh_di" bpmnElement="SequenceFlow_03ayqeh">
+        <di:waypoint xsi:type="dc:Point" x="531" y="1187" />
+        <di:waypoint xsi:type="dc:Point" x="614" y="1187" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="573" y="1172" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0xt2xvx_di" bpmnElement="SequenceFlow_0xt2xvx">
+        <di:waypoint xsi:type="dc:Point" x="714" y="1187" />
+        <di:waypoint xsi:type="dc:Point" x="795" y="1187" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="755" y="1172" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1w171si_di" bpmnElement="Task_1tx7e9s">
+        <dc:Bounds x="265" y="1147" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0c9vk4v_di" bpmnElement="Task_0b707rs">
+        <dc:Bounds x="614" y="1147" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_02c6e2e_di" bpmnElement="Task_02avn81">
+        <dc:Bounds x="431" y="1147" width="100" height="80" />
+      </bpmndi:BPMNShape>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn2:definitions>
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/process/VnfInPlaceUpdate.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/VnfInPlaceUpdate.bpmn
new file mode 100644
index 0000000..b6361aa
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/process/VnfInPlaceUpdate.bpmn
@@ -0,0 +1,2290 @@
+<?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="_F0omAMXGEeW834CKd-K10Q" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
+  <bpmn2:process id="VnfInPlaceUpdate" name="VnfInPlaceUpdate" isExecutable="true">
+    <bpmn2:scriptTask id="ScriptTask_1" name="Send Synch Response" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_5</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0y0jt4l</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def uvfm = new VnfInPlaceUpdate()
+uvfm.sendSynchResponse(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="Task_1rxiqe1" targetRef="ExclusiveGateway_045e1uz" />
+    <bpmn2:scriptTask id="PreProcessRequest" name="Pre-Process Request" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_4</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_5</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def uvfm = new VnfInPlaceUpdate()
+uvfm.preProcessRequest(execution)
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_5" name="" sourceRef="PreProcessRequest" targetRef="ScriptTask_1" />
+    <bpmn2:callActivity id="CallActivity_1" name="Completion Handler" calledElement="CompleteMsoProcess">
+      <bpmn2:extensionElements>
+        <camunda:in source="CompletionHandlerRequest" target="CompleteMsoProcessRequest" />
+        <camunda:in source="mso-request-id" target="mso-request-id" />
+        <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_17</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_14</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_14" name="" sourceRef="CallActivity_1" targetRef="ScriptTask_4" />
+    <bpmn2:endEvent id="EndEvent_1" name="TheEnd">
+      <bpmn2:incoming>SequenceFlow_6</bpmn2:incoming>
+      <bpmn2:terminateEventDefinition id="_TerminateEventDefinition_5" />
+    </bpmn2:endEvent>
+    <bpmn2:scriptTask id="ScriptTask_4" name="Set Success Indicator" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_14</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[// The following variable is checked by the unit test
+execution.setVariable("VnfInPlaceUpdateSuccessIndicator", true)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="ScriptTask_4" targetRef="EndEvent_1" />
+    <bpmn2:scriptTask id="ScriptTask_10" name="Completion Handler (prep)" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_3</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_07uuj2d</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_17</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def uvfm = new VnfInPlaceUpdate()
+uvfm.completionHandlerPrep(execution, 'CompletionHandlerRequest')
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_17" name="" sourceRef="ScriptTask_10" targetRef="CallActivity_1" />
+    <bpmn2:subProcess id="SubProcess_1" name="Error Handler" triggeredByEvent="true">
+      <bpmn2:startEvent id="StartEvent_3" name="Catch All Errors">
+        <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition id="ErrorEventDefinition_1" />
+      </bpmn2:startEvent>
+      <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_3" targetRef="Task_0ilgwhw" />
+      <bpmn2:scriptTask id="ScriptTask_3" name="Fallout Handler (prep)" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_0ib8gb8</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_7</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def uvfm = new VnfInPlaceUpdate()
+uvfm.falloutHandlerPrep(execution, 'FalloutHandlerRequest')
+]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_7" sourceRef="ScriptTask_3" targetRef="CallActivity_2" />
+      <bpmn2:callActivity id="CallActivity_2" name="Fallout Handler" calledElement="FalloutHandler">
+        <bpmn2:extensionElements>
+          <camunda:in source="FalloutHandlerRequest" target="FalloutHandlerRequest" />
+          <camunda:in source="mso-request-id" target="mso-request-id" />
+          <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
+          <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        </bpmn2:extensionElements>
+        <bpmn2:incoming>SequenceFlow_7</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_19</bpmn2:outgoing>
+      </bpmn2:callActivity>
+      <bpmn2:endEvent id="EndEvent_2">
+        <bpmn2:incoming>SequenceFlow_19</bpmn2:incoming>
+        <bpmn2:terminateEventDefinition id="TerminateEventDefinition_1" />
+      </bpmn2:endEvent>
+      <bpmn2:sequenceFlow id="SequenceFlow_19" name="" sourceRef="CallActivity_2" targetRef="EndEvent_2" />
+      <bpmn2:sequenceFlow id="SequenceFlow_1qnzi6i" sourceRef="Task_13sybx8" targetRef="Task_1mt62gu" />
+      <bpmn2:callActivity id="Task_13sybx8" name="Rollback Processing" calledElement="RollbackVnf">
+        <bpmn2:extensionElements>
+          <camunda:in source="msoRequestId" target="msoRequestId" />
+          <camunda:in source="vnfId" target="vnfId" />
+          <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+          <camunda:in source="rollbackSetClosedLoopDisabledFlag" target="rollbackSetClosedLoopDisabledFlag" />
+          <camunda:in source="rollbackSetVnfInMaintenanceFlag" target="rollbackSetVnfInMaintenanceFlag" />
+          <camunda:in source="rollbackVnfStop" target="rollbackVnfStop" />
+          <camunda:in source="rollbackVnfLock" target="rollbackVnfLock" />
+          <camunda:in source="errorCode" target="errorCode" />
+          <camunda:out source="rollbackSuccessful" target="rollbackSuccessful" />
+          <camunda:in source="payload" target="payload" />
+          <camunda:in source="vnfName" target="vnfName" />
+          <camunda:in source="rollbackQuiesceTraffic" target="rollbackQuiesceTraffic" />
+        </bpmn2:extensionElements>
+        <bpmn2:incoming>SequenceFlow_0hvg70o</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1qnzi6i</bpmn2:outgoing>
+      </bpmn2:callActivity>
+      <bpmn2:sequenceFlow id="SequenceFlow_0hvg70o" sourceRef="Task_0ilgwhw" targetRef="Task_13sybx8" />
+      <bpmn2:scriptTask id="Task_0ilgwhw" name="PreProcess Rollback" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_0hvg70o</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def uvfm = new VnfInPlaceUpdate()
+uvfm.preProcessRollback(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_0ib8gb8" sourceRef="Task_1mt62gu" targetRef="ScriptTask_3" />
+      <bpmn2:scriptTask id="Task_1mt62gu" name="PostProcess Rollback" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_1qnzi6i</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_0ib8gb8</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def uvfm = new VnfInPlaceUpdate()
+uvfm.postProcessRollback(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+    </bpmn2:subProcess>
+    <bpmn2:endEvent id="EndEvent_3">
+      <bpmn2:incoming>SequenceFlow_12</bpmn2:incoming>
+      <bpmn2:terminateEventDefinition id="TerminateEventDefinition_2" />
+    </bpmn2:endEvent>
+    <bpmn2:boundaryEvent id="BoundaryEvent_1" name="" attachedToRef="SubProcess_1">
+      <bpmn2:outgoing>SequenceFlow_12</bpmn2:outgoing>
+      <bpmn2:errorEventDefinition id="ErrorEventDefinition_2" />
+    </bpmn2:boundaryEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_12" name="" sourceRef="BoundaryEvent_1" targetRef="EndEvent_3" />
+    <bpmn2:startEvent id="StartEvent_1" name="Start">
+      <bpmn2:outgoing>SequenceFlow_4</bpmn2:outgoing>
+    </bpmn2:startEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_4" name="" sourceRef="StartEvent_1" targetRef="PreProcessRequest" />
+    <bpmn2:sequenceFlow id="SequenceFlow_3" name="no" sourceRef="ExclusiveGateway_18j1ow5" targetRef="ScriptTask_10" />
+    <bpmn2:sequenceFlow id="SequenceFlow_053qjfy" sourceRef="Task_1opcb4j" targetRef="Task_0vy2zge" />
+    <bpmn2:scriptTask id="Task_1opcb4j" name="Query A&#38;AI for VNF" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0y0jt4l</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_053qjfy</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def uvfm = new VnfInPlaceUpdate()
+uvfm.queryAAIForVnf(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_0y0jt4l" sourceRef="ScriptTask_1" targetRef="Task_1opcb4j" />
+    <bpmn2:scriptTask id="Task_1rxiqe1" name="Check If VNF Is In Maintenance in A&#38;AI" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_16mo99z</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_09lrk4q</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def uvfm = new VnfInPlaceUpdate()
+uvfm.checkIfVnfInMaintInAAI(execution)
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_0usxnlk" sourceRef="Task_0vy2zge" targetRef="ExclusiveGateway_0q323wc" />
+    <bpmn2:scriptTask id="Task_0ap39ka" name="Set VNF inMaintenance Flag in A&#38;AI" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0baosqi</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_1eezqx8</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0k3fx7p</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def uvfm = new VnfInPlaceUpdate()
+uvfm.setVnfInMaintFlagInAAI(execution, true)
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="Task_1drglpt" name="Unset VNF In Maintenance Flag in A&#38;AI" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1nr9o85</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_16ff86u</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_12mfil6</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def uvfm = new VnfInPlaceUpdate()
+uvfm.setVnfInMaintFlagInAAI(execution, false)
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="Task_0vy2zge" name="Check If Physical Servers Are Locked in A&#38;AI" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_053qjfy</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_179tyul</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0usxnlk</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def uvfm = new VnfInPlaceUpdate()
+uvfm.checkIfPserversInMaintInAAI(execution)
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_0xx8y1s" sourceRef="Task_1dtbnuy" targetRef="ExclusiveGateway_1slvyx2" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0a6pdza" sourceRef="Task_1fj63ov" targetRef="ExclusiveGateway_1ichg7h" />
+    <bpmn2:sequenceFlow id="SequenceFlow_13h26h9" sourceRef="Task_1cfkcss" targetRef="ExclusiveGateway_1etgtgi" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1uno5rs" sourceRef="Task_1hdg951" targetRef="ExclusiveGateway_02tj4dw" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1c79909" sourceRef="Task_1ca5ctq" targetRef="ExclusiveGateway_1gn5lab" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1xfbwpi" sourceRef="Task_1sove95" targetRef="ExclusiveGateway_123vjyo" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_0q323wc" name="Error on PServers Check?" default="SequenceFlow_16mo99z">
+      <bpmn2:incoming>SequenceFlow_0usxnlk</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_16mo99z</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_06ev8or</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_16mo99z" name="no" sourceRef="ExclusiveGateway_0q323wc" targetRef="Task_1rxiqe1" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_045e1uz" name="Error On inMaintenance Check?" default="SequenceFlow_0baosqi">
+      <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0baosqi</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_1cdfjed</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_0baosqi" name="no" sourceRef="ExclusiveGateway_045e1uz" targetRef="Task_0ap39ka" />
+    <bpmn2:callActivity id="Task_0q5cdit" name="Rainy Day Handler" calledElement="RainyDayHandler">
+      <bpmn2:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:in source="serviceType" target="serviceType" />
+        <camunda:in source="nfRole" target="vnfType" />
+        <camunda:in source="currentActivity" target="currentActivity" />
+        <camunda:in source="workStep" target="workStep" />
+        <camunda:in source="failedActivity" target="failedActivity" />
+        <camunda:in source="errorCode" target="errorCode" />
+        <camunda:in source="errorText" target="errorText" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="handlingCode" target="disposition" />
+        <camunda:in source="requestorId" target="requestorId" />
+        <camunda:out source="taskId" target="taskId" />
+        <camunda:in source="vnfName" target="vnfName" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_0nob5cp</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0v0u7mf</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_0v0u7mf" sourceRef="Task_0q5cdit" targetRef="ExclusiveGateway_0xlxgl0" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0vpd06n" name="Abort" sourceRef="ExclusiveGateway_0xlxgl0" targetRef="Task_1tg549h">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("disposition") == "Abort"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_1qr8msw" name="Rollback" sourceRef="ExclusiveGateway_0xlxgl0" targetRef="Task_0zbogrm">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("disposition") == "Rollback"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_0ud5uwa" name="Eror on inMaintenance Set?" default="SequenceFlow_06ajc11">
+      <bpmn2:incoming>SequenceFlow_0k3fx7p</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_17g62fl</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_06ajc11</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_0k3fx7p" sourceRef="Task_0ap39ka" targetRef="ExclusiveGateway_0ud5uwa" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0qy68ib" name="no" sourceRef="ExclusiveGateway_1slvyx2" targetRef="Task_1fj63ov" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_1ichg7h" name="Error on Upgrade PreCheck?" default="SequenceFlow_0q0qan8">
+      <bpmn2:incoming>SequenceFlow_0a6pdza</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0q0qan8</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_02mk8vs</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_0q0qan8" name="no" sourceRef="ExclusiveGateway_1ichg7h" targetRef="Task_1cfkcss" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_1etgtgi" name="Error on Quiesce Traffic?" default="SequenceFlow_1c0vdki">
+      <bpmn2:incoming>SequenceFlow_13h26h9</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1c0vdki</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_11o5j55</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_1c0vdki" name="no" sourceRef="ExclusiveGateway_1etgtgi" targetRef="Task_0eae8go" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_02tj4dw" name="Error on Upgrade Software?" default="SequenceFlow_162mm0m">
+      <bpmn2:incoming>SequenceFlow_1uno5rs</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_162mm0m</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_1gagrha</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_162mm0m" name="no" sourceRef="ExclusiveGateway_02tj4dw" targetRef="Task_1ca5ctq" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_1gn5lab" name="Error on Post Health Check?" default="SequenceFlow_1c2xyhk">
+      <bpmn2:incoming>SequenceFlow_1c79909</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1urpp94</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_1c2xyhk</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_0l2z6wc" name="Erorr on inMaintenance Unset?" default="SequenceFlow_0u6ho2p">
+      <bpmn2:incoming>SequenceFlow_12mfil6</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0u6ho2p</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0k3zxpd</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_12mfil6" sourceRef="Task_1drglpt" targetRef="ExclusiveGateway_0l2z6wc" />
+    <bpmn2:scriptTask id="Task_1tg549h" name="Abort Processing" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0vpd06n</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_1c022sy</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_0h64c4o</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_0syfgbo</bpmn2:incoming>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def uvfm = new VnfInPlaceUpdate()
+uvfm.abortProcessing(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_0xlxgl0" name="Check Disposition">
+      <bpmn2:incoming>SequenceFlow_0v0u7mf</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1qr8msw</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_05gpym3</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0vpd06n</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_1ijc733</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_0y82zzx" name="Next Step?&#10;&#10;" default="SequenceFlow_1c022sy">
+      <bpmn2:incoming>SequenceFlow_05gpym3</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_1kntfys</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1nlqlwn</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_1c022sy</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0ueoglv</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_15fqlwe</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0yuj0l5</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_1abb030</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0ls3ej5</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_1ar6ikk</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_171iq7e</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_1553o9f</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0dmxwel</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_1id2p8y</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0t53vux</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_11ck4qe</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_16d2ln4</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_1quapjx</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_101n488</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_021ah63</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_05gpym3" name="Skip" sourceRef="ExclusiveGateway_0xlxgl0" targetRef="ExclusiveGateway_0y82zzx">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("disposition") == "Skip"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_19ba94v" sourceRef="Task_0eae8go" targetRef="ExclusiveGateway_19an3h2" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1nlqlwn" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_0ee7wot">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[(execution.getVariable("disposition") == "Skip" && execution.getVariable("workStep") == "QuiesceTraffic") ||
+(execution.getVariable("disposition") == "Retry" && execution.getVariable("workStep") == "Snapshot")]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_1c022sy" sourceRef="ExclusiveGateway_0y82zzx" targetRef="Task_1tg549h" />
+    <bpmn2:sequenceFlow id="SequenceFlow_06ev8or" name="yes" sourceRef="ExclusiveGateway_0q323wc" targetRef="IntermediateThrowEvent_0zmqbae">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0zmqbae" name="To Rainy Day Handling">
+      <bpmn2:incoming>SequenceFlow_06ev8or</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To Rainy Day Handling" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0nob5cp" sourceRef="IntermediateThrowEvent_0z0t7rn" targetRef="Task_0q5cdit" />
+    <bpmn2:sequenceFlow id="SequenceFlow_076leae" sourceRef="Task_0e313zv" targetRef="ExclusiveGateway_1rglbmr" />
+    <bpmn2:scriptTask id="Task_0e313zv" name="Check If VF Closed Loop Disabled in A&#38;AI" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0zzwdwf</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_06ajc11</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_076leae</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def uvfm = new VnfInPlaceUpdate()
+uvfm.checkIfClosedLoopDisabledInAAI(execution)
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_1rglbmr" name="Error on isClosedLoopDisabled Check?" default="SequenceFlow_0du9273">
+      <bpmn2:incoming>SequenceFlow_076leae</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0du9273</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0zh8r6j</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_0du9273" name="no&#10;&#10;" sourceRef="ExclusiveGateway_1rglbmr" targetRef="Task_0n1d5f2" />
+    <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_0z0t7rn" name="To Rainy Day Handling" camunda:asyncBefore="true">
+      <bpmn2:outgoing>SequenceFlow_0nob5cp</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="To Rainy Day Handling" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1qkzlba" name="To Rainy Day Handling">
+      <bpmn2:incoming>SequenceFlow_1cdfjed</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To Rainy Day Handling" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1cdfjed" name="yes" sourceRef="ExclusiveGateway_045e1uz" targetRef="IntermediateThrowEvent_1qkzlba">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0rnlvmz" name="To Rainy Day Handling">
+      <bpmn2:incoming>SequenceFlow_17g62fl</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To Rainy Day Handling" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_17g62fl" name="yes" sourceRef="ExclusiveGateway_0ud5uwa" targetRef="IntermediateThrowEvent_0rnlvmz">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0v69raz" name="To Rainy Day Handling">
+      <bpmn2:incoming>SequenceFlow_0zh8r6j</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To Rainy Day Handling" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0zh8r6j" name="yes&#10;&#10;" sourceRef="ExclusiveGateway_1rglbmr" targetRef="IntermediateThrowEvent_0v69raz">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_15hlkuq" name="To inMaintenanceCheck">
+      <bpmn2:outgoing>SequenceFlow_09lrk4q</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="To inMaintenanceCheck" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_09lrk4q" sourceRef="IntermediateThrowEvent_15hlkuq" targetRef="Task_1rxiqe1" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1eezqx8" sourceRef="IntermediateThrowEvent_1lrkrsn" targetRef="Task_0ap39ka" />
+    <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_1lrkrsn" name="To InMaintenance Set">
+      <bpmn2:outgoing>SequenceFlow_1eezqx8</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="To InMaintenance Set" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_1wdxgjm" name="To check if Closed Loop Disabled">
+      <bpmn2:outgoing>SequenceFlow_0zzwdwf</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="To check if Closed Loop Disabled" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0zzwdwf" sourceRef="IntermediateThrowEvent_1wdxgjm" targetRef="Task_0e313zv" />
+    <bpmn2:sequenceFlow id="SequenceFlow_06ajc11" name="no" sourceRef="ExclusiveGateway_0ud5uwa" targetRef="Task_0e313zv" />
+    <bpmn2:sequenceFlow id="SequenceFlow_179z9vl" sourceRef="Task_0n1d5f2" targetRef="ExclusiveGateway_148eo7w" />
+    <bpmn2:scriptTask id="Task_0n1d5f2" name="Set VF Is Closed Loop Disabled Flag in A&#38;AI" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0du9273</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_032tm9y</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_179z9vl</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def uvfm = new VnfInPlaceUpdate()
+uvfm.setClosedLoopDisabledInAAI(execution, true)
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_032tm9y" sourceRef="IntermediateThrowEvent_1552q1o" targetRef="Task_0n1d5f2" />
+    <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_1552q1o" name="To set Closed Loop Disabled">
+      <bpmn2:outgoing>SequenceFlow_032tm9y</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="To set Closed Loop Disabled" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_148eo7w" name="Error on Set IsClosedLoopDisabled Flag in A&#38;AI?" default="SequenceFlow_1cjiv6i">
+      <bpmn2:incoming>SequenceFlow_179z9vl</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1cjiv6i</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_1q3oxtf</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_1cjiv6i" name="no&#10;&#10;" sourceRef="ExclusiveGateway_148eo7w" targetRef="Task_1dtbnuy" />
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_16r1jxm" name="To Rainy Day Handling">
+      <bpmn2:incoming>SequenceFlow_1q3oxtf</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To Rainy Day Handling" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1q3oxtf" name="yes" sourceRef="ExclusiveGateway_148eo7w" targetRef="IntermediateThrowEvent_16r1jxm">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1agn6fn" name="To Rainy Day Handling">
+      <bpmn2:incoming>SequenceFlow_1j81s6b</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To Rainy Day Handling" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1j81s6b" name="yes" sourceRef="ExclusiveGateway_1slvyx2" targetRef="IntermediateThrowEvent_1agn6fn">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_02hirbh" name="To Upgrade PreCheck">
+      <bpmn2:outgoing>SequenceFlow_16t9vai</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="To Upgrade PreCheck" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_16t9vai" sourceRef="IntermediateThrowEvent_02hirbh" targetRef="Task_1fj63ov" />
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0pnzq4y" name="To Rainy Day Handling">
+      <bpmn2:incoming>SequenceFlow_02mk8vs</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To Rainy Day Handling" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_02mk8vs" name="yes" sourceRef="ExclusiveGateway_1ichg7h" targetRef="IntermediateThrowEvent_0pnzq4y">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_1s7qalx" name="To Quiesce Traffic">
+      <bpmn2:outgoing>SequenceFlow_1urt6le</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="To Quiesce Traffic" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1urt6le" sourceRef="IntermediateThrowEvent_1s7qalx" targetRef="Task_1cfkcss" />
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0l0rp9y" name="To Rainy Day Handling">
+      <bpmn2:incoming>SequenceFlow_11o5j55</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To Rainy Day Handling" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_11o5j55" name="yes" sourceRef="ExclusiveGateway_1etgtgi" targetRef="IntermediateThrowEvent_0l0rp9y">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_19an3h2" name="Error on SnapShot?" default="SequenceFlow_1fuaq5k">
+      <bpmn2:incoming>SequenceFlow_19ba94v</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1fuaq5k</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_04gth9f</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_1fuaq5k" name="no" sourceRef="ExclusiveGateway_19an3h2" targetRef="Task_1mdr1nd" />
+    <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_0a1s69h" name="To SnapShot">
+      <bpmn2:outgoing>SequenceFlow_0if6xj4</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="To SnapShot" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0if6xj4" sourceRef="IntermediateThrowEvent_0a1s69h" targetRef="Task_0eae8go" />
+    <bpmn2:sequenceFlow id="SequenceFlow_04gth9f" name="yes" sourceRef="ExclusiveGateway_19an3h2" targetRef="IntermediateThrowEvent_11vs7u4">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_11vs7u4" name="To Rainy Day Handling">
+      <bpmn2:incoming>SequenceFlow_04gth9f</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To Rainy Day Handling" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1v59be9" sourceRef="IntermediateThrowEvent_162mb2a" targetRef="Task_1mdr1nd" />
+    <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_162mb2a" name="To Upgrade Backup">
+      <bpmn2:outgoing>SequenceFlow_1v59be9</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="To Upgrade Backup" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_0ssvndw" name="Error on UpgradeBackup?" default="SequenceFlow_0txgesu">
+      <bpmn2:incoming>SequenceFlow_04rprct</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1uceq96</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0txgesu</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_04rprct" sourceRef="Task_1mdr1nd" targetRef="ExclusiveGateway_0ssvndw" />
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1yfd3sz" name="To Rainy Day Handling">
+      <bpmn2:incoming>SequenceFlow_1uceq96</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To Rainy Day Handling" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1uceq96" name="yes" sourceRef="ExclusiveGateway_0ssvndw" targetRef="IntermediateThrowEvent_1yfd3sz">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_0txgesu" name="no" sourceRef="ExclusiveGateway_0ssvndw" targetRef="Task_1hdg951" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0trguug" sourceRef="Task_0h2nq31" targetRef="ExclusiveGateway_1ozuicc" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_1ozuicc" name="Error on Resume Traffic?" default="SequenceFlow_1q3bwlt">
+      <bpmn2:incoming>SequenceFlow_0trguug</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1q3bwlt</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_1xg6pwh</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_1q3bwlt" name="no" sourceRef="ExclusiveGateway_1ozuicc" targetRef="Task_1sove95" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_123vjyo" name="Error on VNF Unlock?" default="SequenceFlow_1nr9o85">
+      <bpmn2:incoming>SequenceFlow_1xfbwpi</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1nr9o85</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0ttowkv</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_1nr9o85" name="no" sourceRef="ExclusiveGateway_123vjyo" targetRef="Task_1drglpt" />
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1nij04n" name="To Rainy Day Handling">
+      <bpmn2:incoming>SequenceFlow_1gagrha</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To Rainy Day Handling" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1gagrha" name="yes" sourceRef="ExclusiveGateway_02tj4dw" targetRef="IntermediateThrowEvent_1nij04n">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_16igl7b" sourceRef="IntermediateThrowEvent_0fhmhsk" targetRef="Task_1ca5ctq" />
+    <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_0fhmhsk" name="To Upgrade PostCheck">
+      <bpmn2:outgoing>SequenceFlow_16igl7b</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="To Upgrade PostCheck" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1urpp94" name="yes" sourceRef="ExclusiveGateway_1gn5lab" targetRef="IntermediateThrowEvent_0vf0a28">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0vf0a28" name="To Rainy Day Handling">
+      <bpmn2:incoming>SequenceFlow_1urpp94</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To Rainy Day Handling" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1c2xyhk" name="no" sourceRef="ExclusiveGateway_1gn5lab" targetRef="Task_0h2nq31" />
+    <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_0pxvl24" name="To Resume Traffic">
+      <bpmn2:outgoing>SequenceFlow_0yja56j</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="To Resume Traffic" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0yja56j" sourceRef="IntermediateThrowEvent_0pxvl24" targetRef="Task_0h2nq31" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1xg6pwh" name="yes" sourceRef="ExclusiveGateway_1ozuicc" targetRef="IntermediateThrowEvent_1vjqksl">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1vjqksl" name="To Rainy Day Handling">
+      <bpmn2:incoming>SequenceFlow_1xg6pwh</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To Rainy Day Handling" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_1vwqesb" name="To VNF Unlock">
+      <bpmn2:outgoing>SequenceFlow_1hwtq9x</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="To VNF Unlock" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1hwtq9x" sourceRef="IntermediateThrowEvent_1vwqesb" targetRef="Task_1sove95" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0ttowkv" name="yes" sourceRef="ExclusiveGateway_123vjyo" targetRef="IntermediateThrowEvent_0m9jtv2">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0m9jtv2" name="To Rainy Day Handling">
+      <bpmn2:incoming>SequenceFlow_0ttowkv</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To Rainy Day Handling" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_0pk24h2" name="To Upgrade Software">
+      <bpmn2:outgoing>SequenceFlow_1colra4</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="To Upgrade Software" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1colra4" sourceRef="IntermediateThrowEvent_0pk24h2" targetRef="Task_1hdg951" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_18j1ow5" name="Error on Unset Closed Loop Disabled?" default="SequenceFlow_3">
+      <bpmn2:incoming>SequenceFlow_1tzax6l</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_3</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0w8mkkn</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_0u6ho2p" name="no" sourceRef="ExclusiveGateway_0l2z6wc" targetRef="Task_0y1h8go" />
+    <bpmn2:scriptTask id="Task_0y1h8go" name="Unset VF Is Closed Loop DisabledFlag in A&#38;AI" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0u6ho2p</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_09xxorv</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1tzax6l</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def uvfm = new VnfInPlaceUpdate()
+uvfm.setClosedLoopDisabledInAAI(execution, false)
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_1tzax6l" sourceRef="Task_0y1h8go" targetRef="ExclusiveGateway_18j1ow5" />
+    <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_0pmevcz" name="To unset inMaintenance">
+      <bpmn2:outgoing>SequenceFlow_16ff86u</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="To unset inMaintenance" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_16ff86u" sourceRef="IntermediateThrowEvent_0pmevcz" targetRef="Task_1drglpt" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0k3zxpd" name="yes" sourceRef="ExclusiveGateway_0l2z6wc" targetRef="IntermediateThrowEvent_1awckg7">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1awckg7" name="To Rainy Day Handling">
+      <bpmn2:incoming>SequenceFlow_0k3zxpd</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To Rainy Day Handling" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_1b3smly" name="To unset Closed Loop Disabled">
+      <bpmn2:outgoing>SequenceFlow_09xxorv</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="To unset Closed Loop Disabled" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_09xxorv" sourceRef="IntermediateThrowEvent_1b3smly" targetRef="Task_0y1h8go" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0w8mkkn" name="yes" sourceRef="ExclusiveGateway_18j1ow5" targetRef="IntermediateThrowEvent_1cw8gsw">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("errorCode") != "0"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1cw8gsw" name="To Rainy Day Handling">
+      <bpmn2:incoming>SequenceFlow_0w8mkkn</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To Rainy Day Handling" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_0x846wp" name="To Completion Handler Prep">
+      <bpmn2:outgoing>SequenceFlow_07uuj2d</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="To Completion Handler Prep" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_07uuj2d" sourceRef="IntermediateThrowEvent_0x846wp" targetRef="ScriptTask_10" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0ueoglv" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_0rz6jh4">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[(execution.getVariable("disposition") == "Skip" && execution.getVariable("workStep") == "checkIfPserversInMaintInAAI") ||
+(execution.getVariable("disposition") == "Retry" && execution.getVariable("workStep") == "checkIfVnfInMaintInAAI")]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_15fqlwe" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_1wip9vc">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[(execution.getVariable("disposition") == "Skip" && execution.getVariable("workStep") == "checkIfVnfInMaintInAAI") ||
+(execution.getVariable("disposition") == "Retry" && execution.getVariable("workStep") == "setVnfInMaintFlagInAAI")]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_0yuj0l5" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_1hki8xj">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[(execution.getVariable("disposition") == "Skip" && execution.getVariable("workStep") == "setVnfInMaintFlagInAAI") ||
+(execution.getVariable("disposition") == "Retry" && execution.getVariable("workStep") == "checkClosedLoopDisabledFlagInAAI")]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_1abb030" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_1gfnt9b">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[(execution.getVariable("disposition") == "Skip" && execution.getVariable("workStep") == "checkClosedLoopDisabledFlagInAAI") ||
+(execution.getVariable("disposition") == "Retry" && execution.getVariable("workStep") == "setClosedLoopDisabledFlagInAAI")]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_0ls3ej5" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_1gzhs1a">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[(execution.getVariable("disposition") == "Skip" && execution.getVariable("workStep") == "setClosedLoopDisabledFlagInAAI") ||
+(execution.getVariable("disposition") == "Retry" && execution.getVariable("workStep") == "Lock")]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_1ar6ikk" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_1p9i2bi">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[(execution.getVariable("disposition") == "Skip" && execution.getVariable("workStep") == "UpgradePreCheck") ||
+(execution.getVariable("disposition") == "Retry" && execution.getVariable("workStep") == "QuiesceTraffic")]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_171iq7e" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_0rp1ax0">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[(execution.getVariable("disposition") == "Skip" && execution.getVariable("workStep") == "Snapshot") ||
+(execution.getVariable("disposition") == "Retry" && execution.getVariable("workStep") == "UpgradeBackup")]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_1553o9f" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_01ngkx2">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[(execution.getVariable("disposition") == "Skip" && execution.getVariable("workStep") == "UpgradeBackup") ||
+(execution.getVariable("disposition") == "Retry" && execution.getVariable("workStep") == "UpgradeSoftware")]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_0dmxwel" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_0lbd0cs">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[(execution.getVariable("disposition") == "Skip" && execution.getVariable("workStep") == "UpgradePostCheck") ||
+(execution.getVariable("disposition") == "Retry" && execution.getVariable("workStep") == "ResumeTraffic")]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_1id2p8y" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_1ycbds3">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[(execution.getVariable("disposition") == "Skip" && execution.getVariable("workStep") == "ResumeTraffic") ||
+(execution.getVariable("disposition") == "Retry" && execution.getVariable("workStep") == "Unlock")]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_0t53vux" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_1cp0hkt">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[(execution.getVariable("disposition") == "Skip" && execution.getVariable("workStep") == "Unlock") ||
+(execution.getVariable("disposition") == "Retry" && execution.getVariable("workStep") == "unsetVnfInMaintFlagInAAI")]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_11ck4qe" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_184w0i8">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[(execution.getVariable("disposition") == "Skip" && execution.getVariable("workStep") == "unsetVnfInMaintFlagInAAI") ||
+(execution.getVariable("disposition") == "Retry" && execution.getVariable("workStep") == "unsetClosedLoopDisabledFlagInAAI")]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_16d2ln4" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_1u9f9kp">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[(execution.getVariable("disposition") == "Skip" && execution.getVariable("workStep") == "unsetClosedLoopDisabledFlagInAAI") ||
+(execution.getVariable("disposition") == "Retry" && execution.getVariable("workStep") == "completionHandlerPrep")]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0rz6jh4" name="To inMaintenanceCheck">
+      <bpmn2:incoming>SequenceFlow_0ueoglv</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To inMaintenanceCheck" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1wip9vc" name="To InMaintenance Set">
+      <bpmn2:incoming>SequenceFlow_15fqlwe</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To InMaintenance Set" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1hki8xj" name="To check if Closed Loop Disabled">
+      <bpmn2:incoming>SequenceFlow_0yuj0l5</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To check if Closed Loop Disabled" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1gfnt9b" name="To set Closed Loop Disabled">
+      <bpmn2:incoming>SequenceFlow_1abb030</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To set Closed Loop Disabled" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1gzhs1a" name="To VNF Lock">
+      <bpmn2:incoming>SequenceFlow_0ls3ej5</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To VNF Lock" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0385ons" name="To Upgrade PreCheck">
+      <bpmn2:incoming>SequenceFlow_1quapjx</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To Upgrade PreCheck" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1quapjx" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_0385ons">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[(execution.getVariable("disposition") == "Skip" && execution.getVariable("workStep") == "Lock") ||
+(execution.getVariable("disposition") == "Retry" && execution.getVariable("workStep") == "UpgradePreCheck")]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1p9i2bi" name="To Quiesce Traffic">
+      <bpmn2:incoming>SequenceFlow_1ar6ikk</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To Quiesce Traffic" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0ee7wot" name="To SnapShot">
+      <bpmn2:incoming>SequenceFlow_1nlqlwn</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To SnapShot" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0rp1ax0" name="To Upgrade Backup">
+      <bpmn2:incoming>SequenceFlow_171iq7e</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To Upgrade Backup" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_01ngkx2" name="To Upgrade Software">
+      <bpmn2:incoming>SequenceFlow_1553o9f</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To Upgrade Software" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_0lbd0cs" name="To Resume Traffic">
+      <bpmn2:incoming>SequenceFlow_0dmxwel</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To Resume Traffic" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1ycbds3" name="To VNF Unlock">
+      <bpmn2:incoming>SequenceFlow_1id2p8y</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To VNF Unlock" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1cp0hkt" name="To unset inMaintenance">
+      <bpmn2:incoming>SequenceFlow_0t53vux</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To unset inMaintenance" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_184w0i8" name="To unset Closed Loop Disabled">
+      <bpmn2:incoming>SequenceFlow_11ck4qe</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To unset Closed Loop Disabled" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1u9f9kp" name="To Completion Handler Prep">
+      <bpmn2:incoming>SequenceFlow_16d2ln4</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To Completion Handler Prep" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_18wrvcy" name="To check if Physical Servers Are Locked">
+      <bpmn2:outgoing>SequenceFlow_179tyul</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="To check if Physical Servers Are Locked" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_179tyul" sourceRef="IntermediateThrowEvent_18wrvcy" targetRef="Task_0vy2zge" />
+    <bpmn2:sequenceFlow id="SequenceFlow_101n488" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_17k1fmk">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("disposition") == "Retry" && execution.getVariable("workStep") == "checkIfPserversInMaintInAAI"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_17k1fmk" name="To check if Physical Servers Are Locked">
+      <bpmn2:incoming>SequenceFlow_101n488</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To check if Physical Servers Are Locked" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:intermediateCatchEvent id="IntermediateThrowEvent_1m7fq7a" name="To VNF Lock">
+      <bpmn2:outgoing>SequenceFlow_1ood2pr</bpmn2:outgoing>
+      <bpmn2:linkEventDefinition name="To VNF Lock" />
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_1ood2pr" sourceRef="IntermediateThrowEvent_1m7fq7a" targetRef="Task_1dtbnuy" />
+    <bpmn2:callActivity id="Task_0eae8go" name="Call APP-C SnapShot" calledElement="AppCClient">
+      <bpmn2:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="actionSnapshot" target="action" />
+        <camunda:in source="vnfId" target="vnfId" />
+        <camunda:in source="payload" target="payload" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:out source="errorCode" target="errorCode" />
+        <camunda:out source="errorText" target="errorText" />
+        <camunda:out source="workStep" target="workStep" />
+        <camunda:out source="failedActivity" target="failedActivity" />
+        <camunda:in source="vmIdList" target="vmIdList" />
+        <camunda:in source="aicIdentity" target="identityUrl" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1c0vdki</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_0if6xj4</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_19ba94v</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:callActivity id="Task_1dtbnuy" name="Call APP-C VNF Lock" calledElement="AppCClient">
+      <bpmn2:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="actionLock" target="action" />
+        <camunda:in source="vnfId" target="vnfId" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:out source="errorCode" target="errorCode" />
+        <camunda:out source="errorText" target="errorText" />
+        <camunda:out source="workStep" target="workStep" />
+        <camunda:out source="failedActivity" target="failedActivity" />
+        <camunda:out source="rollbackVnfLock" target="rollbackVnfLock" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1cjiv6i</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_1ood2pr</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0xx8y1s</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:callActivity id="Task_1sove95" name="Call APP-C VNF Unlock" calledElement="AppCClient">
+      <bpmn2:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="actionUnlock" target="action" />
+        <camunda:in source="vnfId" target="vnfId" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:out source="errorCode" target="errorCode" />
+        <camunda:out source="errorText" target="errorText" />
+        <camunda:out source="workStep" target="workStep" />
+        <camunda:out source="failedActivity" target="failedActivity" />
+        <camunda:out source="rollbackVnfLock" target="rollbackVnfLock" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1q3bwlt</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_1hwtq9x</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1xfbwpi</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:callActivity id="Task_1fj63ov" name="Call APP-C UpgradePreCheck" calledElement="AppCClient">
+      <bpmn2:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="actionUpgradePreCheck" target="action" />
+        <camunda:in source="payload" target="payload" />
+        <camunda:in source="vnfId" target="vnfId" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:out source="errorCode" target="errorCode" />
+        <camunda:out source="errorText" target="errorText" />
+        <camunda:out source="workStep" target="workStep" />
+        <camunda:out source="failedActivity" target="failedActivity" />
+        <camunda:in source="vnfName" target="vnfName" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_0qy68ib</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_16t9vai</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0a6pdza</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:callActivity id="Task_1ca5ctq" name="Call APP-C Upgrade PostCheck" calledElement="AppCClient">
+      <bpmn2:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="actionUpgradePostCheck" target="action" />
+        <camunda:in source="payload" target="payload" />
+        <camunda:in source="vnfId" target="vnfId" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:out source="errorCode" target="errorCode" />
+        <camunda:out source="errorText" target="errorText" />
+        <camunda:out source="workStep" target="workStep" />
+        <camunda:out source="failedActivity" target="failedActivity" />
+        <camunda:in source="vnfName" target="vnfName" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_162mm0m</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_16igl7b</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1c79909</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1kbtw2p" name="To Upgrade PostCheck">
+      <bpmn2:incoming>SequenceFlow_021ah63</bpmn2:incoming>
+      <bpmn2:linkEventDefinition name="To Upgrade PostCheck" />
+    </bpmn2:intermediateThrowEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_021ah63" sourceRef="ExclusiveGateway_0y82zzx" targetRef="IntermediateThrowEvent_1kbtw2p">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[(execution.getVariable("disposition") == "Skip" && execution.getVariable("workStep") == "UpgradeSoftware") ||
+(execution.getVariable("disposition") == "Retry" && execution.getVariable("workStep") == "UpgradePostCheck")]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:scriptTask id="ScriptTask_1qr054i" name="Increment Retry Count" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1ijc733</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0ai205d</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def uvfm = new VnfInPlaceUpdate()
+uvfm.incrementRetryCount(execution)
+]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_1g8h3lt" name="Retries Left?" default="SequenceFlow_0h64c4o">
+      <bpmn2:incoming>SequenceFlow_0a2cv6d</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1kntfys</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0h64c4o</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_1bv97n4" name="RetryTimer">
+      <bpmn2:incoming>SequenceFlow_0ai205d</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0a2cv6d</bpmn2:outgoing>
+      <bpmn2:timerEventDefinition>
+        <bpmn2:timeDuration xsi:type="bpmn2:tFormalExpression">PT1M</bpmn2:timeDuration>
+      </bpmn2:timerEventDefinition>
+    </bpmn2:intermediateCatchEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_0ai205d" sourceRef="ScriptTask_1qr054i" targetRef="IntermediateCatchEvent_1bv97n4" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0a2cv6d" sourceRef="IntermediateCatchEvent_1bv97n4" targetRef="ExclusiveGateway_1g8h3lt" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1ijc733" name="Retry" sourceRef="ExclusiveGateway_0xlxgl0" targetRef="ScriptTask_1qr054i">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("disposition") == "Retry"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_1kntfys" name="yes" sourceRef="ExclusiveGateway_1g8h3lt" targetRef="ExclusiveGateway_0y82zzx">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[String retryVariableName = execution.getVariable('retryCountVariableName')
+
+execution.getVariable(retryVariableName) < execution.getVariable("maxRetryCount")]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_0h64c4o" name="no" sourceRef="ExclusiveGateway_1g8h3lt" targetRef="Task_1tg549h" />
+    <bpmn2:callActivity id="Task_0zbogrm" name="Rollback Processing" calledElement="RollbackVnf">
+      <bpmn2:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="vnfId" target="vnfId" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:in source="rollbackSetClosedLoopDisabledFlag" target="rollbackSetClosedLoopDisabledFlag" />
+        <camunda:in source="rollbackSetVnfInMaintenanceFlag" target="rollbackSetVnfInMaintenanceFlag" />
+        <camunda:in source="rollbackVnfStop" target="rollbackVnfStop" />
+        <camunda:in source="rollbackVnfLock" target="rollbackVnfLock" />
+        <camunda:in source="errorCode" target="errorCode" />
+        <camunda:out source="rollbackSuccessful" target="rollbackSuccessful" />
+        <camunda:in source="rollbackQuiesceTraffic" target="rollbackQuiesceTraffic" />
+        <camunda:in source="payload" target="payload" />
+        <camunda:in source="vnfName" target="vnfName" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1qr8msw</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0syfgbo</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_0syfgbo" sourceRef="Task_0zbogrm" targetRef="Task_1tg549h" />
+    <bpmn2:callActivity id="Task_1cfkcss" name="Call APP-C QuiesceTraffic" calledElement="AppCClient">
+      <bpmn2:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="actionQuiesceTraffic" target="action" />
+        <camunda:in source="payload" target="payload" />
+        <camunda:in source="vnfId" target="vnfId" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:out source="errorCode" target="errorCode" />
+        <camunda:out source="errorText" target="errorText" />
+        <camunda:out source="workStep" target="workStep" />
+        <camunda:out source="failedActivity" target="failedActivity" />
+        <camunda:in source="vnfName" target="vnfName" />
+        <camunda:out source="rollbackQuiesceTraffic" target="rollbackQuiesceTraffic" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_0q0qan8</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_1urt6le</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_13h26h9</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:callActivity id="Task_1mdr1nd" name="Call APP-C Upgrade Backup" calledElement="AppCClient">
+      <bpmn2:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="actionUpgradeBackup" target="action" />
+        <camunda:in source="vnfId" target="vnfId" />
+        <camunda:in source="payload" target="payload" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:out source="errorCode" target="errorCode" />
+        <camunda:out source="errorText" target="errorText" />
+        <camunda:out source="workStep" target="workStep" />
+        <camunda:out source="failedActivity" target="failedActivity" />
+        <camunda:in source="vnfName" target="vnfName" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1fuaq5k</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_1v59be9</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_04rprct</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:callActivity id="Task_1hdg951" name="Call APP-C Upgrade Software" calledElement="AppCClient">
+      <bpmn2:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="actionUpgradeSoftware" target="action" />
+        <camunda:in source="payload" target="payload" />
+        <camunda:in source="vnfId" target="vnfId" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:out source="errorCode" target="errorCode" />
+        <camunda:out source="errorText" target="errorText" />
+        <camunda:out source="workStep" target="workStep" />
+        <camunda:out source="failedActivity" target="failedActivity" />
+        <camunda:in source="vnfName" target="vnfName" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_0txgesu</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_1colra4</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1uno5rs</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:callActivity id="Task_0h2nq31" name="Call APP-C Resume Traffic" calledElement="AppCClient">
+      <bpmn2:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="actionResumeTraffic" target="action" />
+        <camunda:in source="payload" target="payload" />
+        <camunda:in source="vnfId" target="vnfId" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:out source="errorCode" target="errorCode" />
+        <camunda:out source="errorText" target="errorText" />
+        <camunda:out source="workStep" target="workStep" />
+        <camunda:out source="failedActivity" target="failedActivity" />
+        <camunda:in source="vnfName" target="vnfName" />
+        <camunda:out source="rollbackQuiesceTraffic" target="rollbackQuiesceTraffic" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_1c2xyhk</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_0yja56j</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0trguug</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_1slvyx2" name="Error on VNF Lock?" default="SequenceFlow_0qy68ib">
+      <bpmn2:incoming>SequenceFlow_0xx8y1s</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1j81s6b</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0qy68ib</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+  </bpmn2:process>
+  <bpmn2:error id="Error_1" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="VnfInPlaceUpdate">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_50" bpmnElement="StartEvent_1">
+        <dc:Bounds x="97" y="72" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="103" y="113" width="23" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_125" bpmnElement="EndEvent_1">
+        <dc:Bounds x="569" y="1073" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="568" y="1114" width="38" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_4" sourceElement="_BPMNShape_StartEvent_50" targetElement="_BPMNShape_ScriptTask_124">
+        <di:waypoint xsi:type="dc:Point" x="133" y="90" />
+        <di:waypoint xsi:type="dc:Point" x="209" y="90" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="171" y="75" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_124" bpmnElement="PreProcessRequest">
+        <dc:Bounds x="209" y="50" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="SequenceFlow_5" sourceElement="_BPMNShape_ScriptTask_124" targetElement="_BPMNShape_ScriptTask_125">
+        <di:waypoint xsi:type="dc:Point" x="309" y="90" />
+        <di:waypoint xsi:type="dc:Point" x="373" y="90" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="341" y="75" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_125" bpmnElement="ScriptTask_1">
+        <dc:Bounds x="373" y="50" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_ScriptTask_125">
+        <di:waypoint xsi:type="dc:Point" x="473" y="237" />
+        <di:waypoint xsi:type="dc:Point" x="513" y="237" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="493" y="222" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_127" bpmnElement="ScriptTask_4">
+        <dc:Bounds x="415" y="1051" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_6" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_ScriptTask_127" targetElement="_BPMNShape_EndEvent_125">
+        <di:waypoint xsi:type="dc:Point" x="515" y="1091" />
+        <di:waypoint xsi:type="dc:Point" x="549" y="1091" />
+        <di:waypoint xsi:type="dc:Point" x="549" y="1091" />
+        <di:waypoint xsi:type="dc:Point" x="569" y="1091" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="564" y="1091" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_133" bpmnElement="ScriptTask_10">
+        <dc:Bounds x="126" y="1051" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_CallActivity_27" bpmnElement="CallActivity_1">
+        <dc:Bounds x="269" y="1051" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_17" bpmnElement="SequenceFlow_17" sourceElement="_BPMNShape_ScriptTask_133" targetElement="_BPMNShape_CallActivity_27">
+        <di:waypoint xsi:type="dc:Point" x="226" y="1091" />
+        <di:waypoint xsi:type="dc:Point" x="248" y="1091" />
+        <di:waypoint xsi:type="dc:Point" x="248" y="1091" />
+        <di:waypoint xsi:type="dc:Point" x="269" y="1091" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="263" y="1091" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_SubProcess_17" bpmnElement="SubProcess_1" isExpanded="true">
+        <dc:Bounds x="103" y="1374" width="836" height="242" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_52" bpmnElement="StartEvent_3">
+        <dc:Bounds x="167" y="1468" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="146" y="1509" width="77" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_136" bpmnElement="ScriptTask_3">
+        <dc:Bounds x="613" y="1446" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_52" targetElement="_BPMNShape_ScriptTask_136">
+        <di:waypoint xsi:type="dc:Point" x="203" y="1486" />
+        <di:waypoint xsi:type="dc:Point" x="233" y="1486" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="218" y="1471" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_7" bpmnElement="SequenceFlow_7" sourceElement="_BPMNShape_ScriptTask_136" targetElement="_BPMNShape_CallActivity_28">
+        <di:waypoint xsi:type="dc:Point" x="713" y="1486" />
+        <di:waypoint xsi:type="dc:Point" x="748" y="1486" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="731" y="1471" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_126" bpmnElement="EndEvent_2">
+        <dc:Bounds x="880" y="1468" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="898" y="1509" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_BoundaryEvent_43" bpmnElement="BoundaryEvent_1">
+        <dc:Bounds x="921" y="1468" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="939" y="1509" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_127" bpmnElement="EndEvent_3">
+        <dc:Bounds x="997" y="1468" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1015" y="1509" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_12" bpmnElement="SequenceFlow_12" sourceElement="_BPMNShape_BoundaryEvent_43" targetElement="_BPMNShape_EndEvent_127">
+        <di:waypoint xsi:type="dc:Point" x="957" y="1486" />
+        <di:waypoint xsi:type="dc:Point" x="997" y="1486" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="977" y="1471" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_CallActivity_28" bpmnElement="CallActivity_2">
+        <dc:Bounds x="748" y="1446" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_14" bpmnElement="SequenceFlow_14" sourceElement="_BPMNShape_CallActivity_27" targetElement="_BPMNShape_ScriptTask_127">
+        <di:waypoint xsi:type="dc:Point" x="369" y="1091" />
+        <di:waypoint xsi:type="dc:Point" x="392" y="1091" />
+        <di:waypoint xsi:type="dc:Point" x="392" y="1091" />
+        <di:waypoint xsi:type="dc:Point" x="415" y="1091" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="407" y="1091" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_19" bpmnElement="SequenceFlow_19" sourceElement="_BPMNShape_CallActivity_28" targetElement="_BPMNShape_EndEvent_126">
+        <di:waypoint xsi:type="dc:Point" x="848" y="1486" />
+        <di:waypoint xsi:type="dc:Point" x="880" y="1486" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="864" y="1471" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_3" targetElement="_BPMNShape_ScriptTask_133">
+        <di:waypoint xsi:type="dc:Point" x="1459" y="800" />
+        <di:waypoint xsi:type="dc:Point" x="1561" y="800" />
+        <di:waypoint xsi:type="dc:Point" x="1561" y="989" />
+        <di:waypoint xsi:type="dc:Point" x="99" y="989" />
+        <di:waypoint xsi:type="dc:Point" x="99" y="1091" />
+        <di:waypoint xsi:type="dc:Point" x="126" y="1091" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1482" y="772.5275881403734" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_053qjfy_di" bpmnElement="SequenceFlow_053qjfy">
+        <di:waypoint xsi:type="dc:Point" x="671" y="90" />
+        <di:waypoint xsi:type="dc:Point" x="982" y="90" />
+        <di:waypoint xsi:type="dc:Point" x="982" y="156" />
+        <di:waypoint xsi:type="dc:Point" x="103" y="156" />
+        <di:waypoint xsi:type="dc:Point" x="103" y="237" />
+        <di:waypoint xsi:type="dc:Point" x="131" y="237" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="543" y="141" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_08xzuox_di" bpmnElement="Task_1opcb4j">
+        <dc:Bounds x="571" y="50" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0y0jt4l_di" bpmnElement="SequenceFlow_0y0jt4l">
+        <di:waypoint xsi:type="dc:Point" x="473" y="90" />
+        <di:waypoint xsi:type="dc:Point" x="571" y="90" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="522" y="75" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_19pf9z8_di" bpmnElement="Task_1rxiqe1">
+        <dc:Bounds x="373" y="197" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0usxnlk_di" bpmnElement="SequenceFlow_0usxnlk">
+        <di:waypoint xsi:type="dc:Point" x="231" y="237" />
+        <di:waypoint xsi:type="dc:Point" x="279" y="237" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="255" y="222" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0wa4zya_di" bpmnElement="Task_0ap39ka">
+        <dc:Bounds x="608" y="197" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0sgm9bu_di" bpmnElement="Task_1drglpt">
+        <dc:Bounds x="1058" y="760" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_16jtt5t_di" bpmnElement="Task_0vy2zge">
+        <dc:Bounds x="131" y="197" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0xx8y1s_di" bpmnElement="SequenceFlow_0xx8y1s">
+        <di:waypoint xsi:type="dc:Point" x="226" y="510" />
+        <di:waypoint xsi:type="dc:Point" x="266" y="510" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="246" y="495" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0a6pdza_di" bpmnElement="SequenceFlow_0a6pdza">
+        <di:waypoint xsi:type="dc:Point" x="464" y="510" />
+        <di:waypoint xsi:type="dc:Point" x="513" y="510" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="489" y="495" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_13h26h9_di" bpmnElement="SequenceFlow_13h26h9">
+        <di:waypoint xsi:type="dc:Point" x="700" y="510" />
+        <di:waypoint xsi:type="dc:Point" x="735" y="510" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="718" y="495" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1uno5rs_di" bpmnElement="SequenceFlow_1uno5rs">
+        <di:waypoint xsi:type="dc:Point" x="223" y="800" />
+        <di:waypoint xsi:type="dc:Point" x="266" y="800" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="245" y="785" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1c79909_di" bpmnElement="SequenceFlow_1c79909">
+        <di:waypoint xsi:type="dc:Point" x="464" y="800" />
+        <di:waypoint xsi:type="dc:Point" x="513" y="800" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="489" y="785" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1xfbwpi_di" bpmnElement="SequenceFlow_1xfbwpi">
+        <di:waypoint xsi:type="dc:Point" x="926" y="800" />
+        <di:waypoint xsi:type="dc:Point" x="955" y="800" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="941" y="785" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0q323wc_di" bpmnElement="ExclusiveGateway_0q323wc" isMarkerVisible="true">
+        <dc:Bounds x="279" y="212" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="260" y="173" width="87" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_16mo99z_di" bpmnElement="SequenceFlow_16mo99z">
+        <di:waypoint xsi:type="dc:Point" x="329" y="237" />
+        <di:waypoint xsi:type="dc:Point" x="373" y="237" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="345" y="213" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_045e1uz_di" bpmnElement="ExclusiveGateway_045e1uz" isMarkerVisible="true">
+        <dc:Bounds x="513" y="212" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="501" y="163" width="73" height="36" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0baosqi_di" bpmnElement="SequenceFlow_0baosqi">
+        <di:waypoint xsi:type="dc:Point" x="563" y="237" />
+        <di:waypoint xsi:type="dc:Point" x="608" y="237" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="579" y="214" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_1k5n5d1_di" bpmnElement="Task_0q5cdit">
+        <dc:Bounds x="1592" y="470" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0v0u7mf_di" bpmnElement="SequenceFlow_0v0u7mf">
+        <di:waypoint xsi:type="dc:Point" x="1692" y="510" />
+        <di:waypoint xsi:type="dc:Point" x="1774" y="510" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1733" y="495" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0vpd06n_di" bpmnElement="SequenceFlow_0vpd06n">
+        <di:waypoint xsi:type="dc:Point" x="1799" y="485" />
+        <di:waypoint xsi:type="dc:Point" x="1799" y="392" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1806" y="430.60504201680675" width="26" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1qr8msw_di" bpmnElement="SequenceFlow_1qr8msw">
+        <di:waypoint xsi:type="dc:Point" x="1799" y="535" />
+        <di:waypoint xsi:type="dc:Point" x="1799" y="562" />
+        <di:waypoint xsi:type="dc:Point" x="1799" y="562" />
+        <di:waypoint xsi:type="dc:Point" x="1799" y="604" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1778" y="553" width="42" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0ud5uwa_di" bpmnElement="ExclusiveGateway_0ud5uwa" isMarkerVisible="true">
+        <dc:Bounds x="735" y="212" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="731" y="166" width="73" height="36" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0k3fx7p_di" bpmnElement="SequenceFlow_0k3fx7p">
+        <di:waypoint xsi:type="dc:Point" x="708" y="237" />
+        <di:waypoint xsi:type="dc:Point" x="735" y="237" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="722" y="222" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0qy68ib_di" bpmnElement="SequenceFlow_0qy68ib">
+        <di:waypoint xsi:type="dc:Point" x="316" y="510" />
+        <di:waypoint xsi:type="dc:Point" x="341" y="510" />
+        <di:waypoint xsi:type="dc:Point" x="341" y="510" />
+        <di:waypoint xsi:type="dc:Point" x="364" y="510" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="333" y="487" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1ichg7h_di" bpmnElement="ExclusiveGateway_1ichg7h" isMarkerVisible="true">
+        <dc:Bounds x="513" y="485" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="495" y="443" width="85" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0q0qan8_di" bpmnElement="SequenceFlow_0q0qan8">
+        <di:waypoint xsi:type="dc:Point" x="563" y="510" />
+        <di:waypoint xsi:type="dc:Point" x="600" y="510" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="573" y="491" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1etgtgi_di" bpmnElement="ExclusiveGateway_1etgtgi" isMarkerVisible="true">
+        <dc:Bounds x="735" y="485" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="716" y="445" width="87" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1c0vdki_di" bpmnElement="SequenceFlow_1c0vdki">
+        <di:waypoint xsi:type="dc:Point" x="785" y="510" />
+        <di:waypoint xsi:type="dc:Point" x="826" y="510" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="804" y="487" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_02tj4dw_di" bpmnElement="ExclusiveGateway_02tj4dw" isMarkerVisible="true">
+        <dc:Bounds x="266" y="775" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="247" y="735" width="88" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_162mm0m_di" bpmnElement="SequenceFlow_162mm0m">
+        <di:waypoint xsi:type="dc:Point" x="316" y="800" />
+        <di:waypoint xsi:type="dc:Point" x="364" y="800" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="333" y="780" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1gn5lab_di" bpmnElement="ExclusiveGateway_1gn5lab" isMarkerVisible="true">
+        <dc:Bounds x="513" y="775" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="502" y="735" width="72" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0l2z6wc_di" bpmnElement="ExclusiveGateway_0l2z6wc" isMarkerVisible="true">
+        <dc:Bounds x="1195" y="775" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1183" y="728" width="73" height="36" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_12mfil6_di" bpmnElement="SequenceFlow_12mfil6">
+        <di:waypoint xsi:type="dc:Point" x="1158" y="800" />
+        <di:waypoint xsi:type="dc:Point" x="1195" y="800" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1178" y="785" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1lb0lk5_di" bpmnElement="Task_1tg549h">
+        <dc:Bounds x="1749" y="312" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1gmvi7n_di" bpmnElement="ExclusiveGateway_0xlxgl0" isMarkerVisible="true">
+        <dc:Bounds x="1774" y="485" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1755" y="467" width="88" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0y82zzx_di" bpmnElement="ExclusiveGateway_0y82zzx" isMarkerVisible="true">
+        <dc:Bounds x="2087" y="485" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2047" y="477" width="54" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_05gpym3_di" bpmnElement="SequenceFlow_05gpym3">
+        <di:waypoint xsi:type="dc:Point" x="1824" y="510" />
+        <di:waypoint xsi:type="dc:Point" x="2087" y="510" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1922" y="516" width="21" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_19ba94v_di" bpmnElement="SequenceFlow_19ba94v">
+        <di:waypoint xsi:type="dc:Point" x="926" y="510" />
+        <di:waypoint xsi:type="dc:Point" x="955" y="510" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="941" y="495" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1nlqlwn_di" bpmnElement="SequenceFlow_1nlqlwn">
+        <di:waypoint xsi:type="dc:Point" x="2137" y="510" />
+        <di:waypoint xsi:type="dc:Point" x="2261" y="510" />
+        <di:waypoint xsi:type="dc:Point" x="2261" y="510" />
+        <di:waypoint xsi:type="dc:Point" x="2385" y="510" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2249" y="459" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1c022sy_di" bpmnElement="SequenceFlow_1c022sy">
+        <di:waypoint xsi:type="dc:Point" x="2112" y="485" />
+        <di:waypoint xsi:type="dc:Point" x="2112" y="352" />
+        <di:waypoint xsi:type="dc:Point" x="1849" y="352" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2127" y="418.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_06ev8or_di" bpmnElement="SequenceFlow_06ev8or">
+        <di:waypoint xsi:type="dc:Point" x="304" y="262" />
+        <di:waypoint xsi:type="dc:Point" x="304" y="288" />
+        <di:waypoint xsi:type="dc:Point" x="304" y="288" />
+        <di:waypoint xsi:type="dc:Point" x="304" y="308" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="314" y="273" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0o6fb4f_di" bpmnElement="IntermediateThrowEvent_0zmqbae">
+        <dc:Bounds x="286" y="308" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="269" y="343.609" width="69" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0nob5cp_di" bpmnElement="SequenceFlow_0nob5cp">
+        <di:waypoint xsi:type="dc:Point" x="1506" y="510" />
+        <di:waypoint xsi:type="dc:Point" x="1592" y="510" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1549" y="495" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_076leae_di" bpmnElement="SequenceFlow_076leae">
+        <di:waypoint xsi:type="dc:Point" x="926" y="237" />
+        <di:waypoint xsi:type="dc:Point" x="955" y="237" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="941" y="222" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0cbpm7l_di" bpmnElement="Task_0e313zv">
+        <dc:Bounds x="826" y="197" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1rglbmr_di" bpmnElement="ExclusiveGateway_1rglbmr" isMarkerVisible="true">
+        <dc:Bounds x="955.192" y="212" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="936" y="164" width="88" height="36" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0du9273_di" bpmnElement="SequenceFlow_0du9273">
+        <di:waypoint xsi:type="dc:Point" x="1005" y="237" />
+        <di:waypoint xsi:type="dc:Point" x="1046" y="237" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1020" y="212" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1p06jf5_di" bpmnElement="IntermediateThrowEvent_0z0t7rn">
+        <dc:Bounds x="1470" y="492" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1455" y="538" width="65" height="25" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0xwlxk9_di" bpmnElement="IntermediateThrowEvent_1qkzlba">
+        <dc:Bounds x="520" y="308" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="503" y="344" width="69" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1cdfjed_di" bpmnElement="SequenceFlow_1cdfjed">
+        <di:waypoint xsi:type="dc:Point" x="538" y="262" />
+        <di:waypoint xsi:type="dc:Point" x="538" y="308" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="544" y="275" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_113xxsl_di" bpmnElement="IntermediateThrowEvent_0rnlvmz">
+        <dc:Bounds x="742" y="308" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="725" y="344" width="69" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_17g62fl_di" bpmnElement="SequenceFlow_17g62fl">
+        <di:waypoint xsi:type="dc:Point" x="760" y="262" />
+        <di:waypoint xsi:type="dc:Point" x="760" y="308" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="766" y="275" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0iyegh1_di" bpmnElement="IntermediateThrowEvent_0v69raz">
+        <dc:Bounds x="962" y="308" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="945" y="343.609" width="69" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0zh8r6j_di" bpmnElement="SequenceFlow_0zh8r6j">
+        <di:waypoint xsi:type="dc:Point" x="980" y="262" />
+        <di:waypoint xsi:type="dc:Point" x="980" y="308" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="986" y="285" width="17" height="13" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_07pur50_di" bpmnElement="IntermediateThrowEvent_15hlkuq">
+        <dc:Bounds x="405" y="308" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="381" y="344" width="83" height="36" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_09lrk4q_di" bpmnElement="SequenceFlow_09lrk4q">
+        <di:waypoint xsi:type="dc:Point" x="423" y="308" />
+        <di:waypoint xsi:type="dc:Point" x="423" y="277" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="438" y="292.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1eezqx8_di" bpmnElement="SequenceFlow_1eezqx8">
+        <di:waypoint xsi:type="dc:Point" x="658" y="308" />
+        <di:waypoint xsi:type="dc:Point" x="658" y="277" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="673" y="292.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1pog9t5_di" bpmnElement="IntermediateThrowEvent_1lrkrsn">
+        <dc:Bounds x="640" y="308" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="614" y="343.609" width="88" height="25" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1rtf0em_di" bpmnElement="IntermediateThrowEvent_1wdxgjm">
+        <dc:Bounds x="858" y="308" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="844" y="344" width="64" height="37" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0zzwdwf_di" bpmnElement="SequenceFlow_0zzwdwf">
+        <di:waypoint xsi:type="dc:Point" x="876" y="308" />
+        <di:waypoint xsi:type="dc:Point" x="876" y="277" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="891" y="292.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_06ajc11_di" bpmnElement="SequenceFlow_06ajc11">
+        <di:waypoint xsi:type="dc:Point" x="785" y="237" />
+        <di:waypoint xsi:type="dc:Point" x="826" y="237" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="800" y="212" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_179z9vl_di" bpmnElement="SequenceFlow_179z9vl">
+        <di:waypoint xsi:type="dc:Point" x="1146" y="237" />
+        <di:waypoint xsi:type="dc:Point" x="1184" y="237" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1165" y="222" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1iio503_di" bpmnElement="Task_0n1d5f2">
+        <dc:Bounds x="1046" y="197" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_032tm9y_di" bpmnElement="SequenceFlow_032tm9y">
+        <di:waypoint xsi:type="dc:Point" x="1096" y="308" />
+        <di:waypoint xsi:type="dc:Point" x="1096" y="277" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1111" y="292.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_0jhmy9d_di" bpmnElement="IntermediateThrowEvent_1552q1o">
+        <dc:Bounds x="1078" y="308" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1061" y="344" width="70" height="25" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_148eo7w_di" bpmnElement="ExclusiveGateway_148eo7w" isMarkerVisible="true">
+        <dc:Bounds x="1184.192" y="212" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1167" y="149" width="83" height="48" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1cjiv6i_di" bpmnElement="SequenceFlow_1cjiv6i">
+        <di:waypoint xsi:type="dc:Point" x="1234" y="237" />
+        <di:waypoint xsi:type="dc:Point" x="1285" y="237" />
+        <di:waypoint xsi:type="dc:Point" x="1285" y="401" />
+        <di:waypoint xsi:type="dc:Point" x="98" y="401" />
+        <di:waypoint xsi:type="dc:Point" x="98" y="510" />
+        <di:waypoint xsi:type="dc:Point" x="126" y="510" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1249" y="211" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1qtnv6e_di" bpmnElement="IntermediateThrowEvent_16r1jxm">
+        <dc:Bounds x="1191" y="299" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1174" y="334.609" width="69" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1q3oxtf_di" bpmnElement="SequenceFlow_1q3oxtf">
+        <di:waypoint xsi:type="dc:Point" x="1209" y="262" />
+        <di:waypoint xsi:type="dc:Point" x="1209" y="299" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1215" y="270.5" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1uscpd8_di" bpmnElement="IntermediateThrowEvent_1agn6fn">
+        <dc:Bounds x="273" y="581" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="256" y="617" width="69" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1j81s6b_di" bpmnElement="SequenceFlow_1j81s6b">
+        <di:waypoint xsi:type="dc:Point" x="291" y="535" />
+        <di:waypoint xsi:type="dc:Point" x="291" y="581" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="297" y="548" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1ogs7t2_di" bpmnElement="IntermediateThrowEvent_02hirbh">
+        <dc:Bounds x="396" y="581" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="384" y="617" width="59" height="25" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_16t9vai_di" bpmnElement="SequenceFlow_16t9vai">
+        <di:waypoint xsi:type="dc:Point" x="414" y="581" />
+        <di:waypoint xsi:type="dc:Point" x="414" y="550" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="429" y="565.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0f6lh1n_di" bpmnElement="IntermediateThrowEvent_0pnzq4y">
+        <dc:Bounds x="520" y="581" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="503" y="617" width="69" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_02mk8vs_di" bpmnElement="SequenceFlow_02mk8vs">
+        <di:waypoint xsi:type="dc:Point" x="538" y="535" />
+        <di:waypoint xsi:type="dc:Point" x="538" y="558" />
+        <di:waypoint xsi:type="dc:Point" x="538" y="558" />
+        <di:waypoint xsi:type="dc:Point" x="538" y="581" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="544" y="558" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_17zqxs1_di" bpmnElement="IntermediateThrowEvent_1s7qalx">
+        <dc:Bounds x="632" y="581" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="607" y="617" width="85" height="13" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1urt6le_di" bpmnElement="SequenceFlow_1urt6le">
+        <di:waypoint xsi:type="dc:Point" x="650" y="581" />
+        <di:waypoint xsi:type="dc:Point" x="650" y="550" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="665" y="565.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_077262y_di" bpmnElement="IntermediateThrowEvent_0l0rp9y">
+        <dc:Bounds x="742" y="581" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="725" y="617" width="69" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_11o5j55_di" bpmnElement="SequenceFlow_11o5j55">
+        <di:waypoint xsi:type="dc:Point" x="760" y="535" />
+        <di:waypoint xsi:type="dc:Point" x="760" y="581" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="766" y="548" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_19an3h2_di" bpmnElement="ExclusiveGateway_19an3h2" isMarkerVisible="true">
+        <dc:Bounds x="955" y="485" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="953" y="441" width="53" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1fuaq5k_di" bpmnElement="SequenceFlow_1fuaq5k">
+        <di:waypoint xsi:type="dc:Point" x="1005" y="510" />
+        <di:waypoint xsi:type="dc:Point" x="1064" y="510" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1030" y="485" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_199cotj_di" bpmnElement="IntermediateThrowEvent_0a1s69h">
+        <dc:Bounds x="858" y="581" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="844" y="617" width="63" height="13" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0if6xj4_di" bpmnElement="SequenceFlow_0if6xj4">
+        <di:waypoint xsi:type="dc:Point" x="876" y="581" />
+        <di:waypoint xsi:type="dc:Point" x="876" y="550" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="891" y="565.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_04gth9f_di" bpmnElement="SequenceFlow_04gth9f">
+        <di:waypoint xsi:type="dc:Point" x="980" y="535" />
+        <di:waypoint xsi:type="dc:Point" x="980" y="581" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="986" y="558" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1ly7m7x_di" bpmnElement="IntermediateThrowEvent_11vs7u4">
+        <dc:Bounds x="962" y="581" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="945" y="617" width="69" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1v59be9_di" bpmnElement="SequenceFlow_1v59be9">
+        <di:waypoint xsi:type="dc:Point" x="1114" y="581" />
+        <di:waypoint xsi:type="dc:Point" x="1114" y="550" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1129" y="565.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_0gvhqjf_di" bpmnElement="IntermediateThrowEvent_162mb2a">
+        <dc:Bounds x="1096" y="581" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1084" y="617" width="60" height="25" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0ssvndw_di" bpmnElement="ExclusiveGateway_0ssvndw" isMarkerVisible="true">
+        <dc:Bounds x="1195.192" y="485" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1177" y="439" width="85" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_04rprct_di" bpmnElement="SequenceFlow_04rprct">
+        <di:waypoint xsi:type="dc:Point" x="1164" y="510" />
+        <di:waypoint xsi:type="dc:Point" x="1195" y="510" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1180" y="495" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_14s9cw9_di" bpmnElement="IntermediateThrowEvent_1yfd3sz">
+        <dc:Bounds x="1202" y="581" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1185" y="617" width="69" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1uceq96_di" bpmnElement="SequenceFlow_1uceq96">
+        <di:waypoint xsi:type="dc:Point" x="1220" y="535" />
+        <di:waypoint xsi:type="dc:Point" x="1220" y="581" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1226" y="548" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0txgesu_di" bpmnElement="SequenceFlow_0txgesu">
+        <di:waypoint xsi:type="dc:Point" x="1245" y="510" />
+        <di:waypoint xsi:type="dc:Point" x="1286" y="510" />
+        <di:waypoint xsi:type="dc:Point" x="1286" y="676" />
+        <di:waypoint xsi:type="dc:Point" x="95" y="676" />
+        <di:waypoint xsi:type="dc:Point" x="95" y="800" />
+        <di:waypoint xsi:type="dc:Point" x="123" y="800" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1259" y="488" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0trguug_di" bpmnElement="SequenceFlow_0trguug">
+        <di:waypoint xsi:type="dc:Point" x="701" y="800" />
+        <di:waypoint xsi:type="dc:Point" x="735" y="800" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="718" y="785" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1ozuicc_di" bpmnElement="ExclusiveGateway_1ozuicc" isMarkerVisible="true">
+        <dc:Bounds x="735.304" y="775" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="716" y="735" width="87" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1q3bwlt_di" bpmnElement="SequenceFlow_1q3bwlt">
+        <di:waypoint xsi:type="dc:Point" x="785.304" y="800" />
+        <di:waypoint xsi:type="dc:Point" x="826" y="800" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="800" y="775" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_123vjyo_di" bpmnElement="ExclusiveGateway_123vjyo" isMarkerVisible="true">
+        <dc:Bounds x="955" y="775" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="946" y="735" width="68" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1nr9o85_di" bpmnElement="SequenceFlow_1nr9o85">
+        <di:waypoint xsi:type="dc:Point" x="1005" y="800" />
+        <di:waypoint xsi:type="dc:Point" x="1037" y="800" />
+        <di:waypoint xsi:type="dc:Point" x="1037" y="800" />
+        <di:waypoint xsi:type="dc:Point" x="1058" y="800" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1024" y="772" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_11ot6vh_di" bpmnElement="IntermediateThrowEvent_1nij04n">
+        <dc:Bounds x="273" y="886" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="256" y="921.6089999999999" width="69" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1gagrha_di" bpmnElement="SequenceFlow_1gagrha">
+        <di:waypoint xsi:type="dc:Point" x="291" y="825" />
+        <di:waypoint xsi:type="dc:Point" x="291" y="886" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="297" y="845.5" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_16igl7b_di" bpmnElement="SequenceFlow_16igl7b">
+        <di:waypoint xsi:type="dc:Point" x="414" y="886" />
+        <di:waypoint xsi:type="dc:Point" x="414" y="840" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="429" y="863" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_174wgan_di" bpmnElement="IntermediateThrowEvent_0fhmhsk">
+        <dc:Bounds x="396" y="886" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="384" y="922" width="59" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1urpp94_di" bpmnElement="SequenceFlow_1urpp94">
+        <di:waypoint xsi:type="dc:Point" x="538" y="825" />
+        <di:waypoint xsi:type="dc:Point" x="538" y="886" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="544" y="855.5" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1vi3wf9_di" bpmnElement="IntermediateThrowEvent_0vf0a28">
+        <dc:Bounds x="520" y="886" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="503" y="922" width="69" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1c2xyhk_di" bpmnElement="SequenceFlow_1c2xyhk">
+        <di:waypoint xsi:type="dc:Point" x="563" y="800" />
+        <di:waypoint xsi:type="dc:Point" x="601" y="800" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="577" y="775" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_165ve6q_di" bpmnElement="IntermediateThrowEvent_0pxvl24">
+        <dc:Bounds x="632" y="886" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="607" y="922" width="85" height="13" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0yja56j_di" bpmnElement="SequenceFlow_0yja56j">
+        <di:waypoint xsi:type="dc:Point" x="650" y="886" />
+        <di:waypoint xsi:type="dc:Point" x="651" y="840" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="651" y="848" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1xg6pwh_di" bpmnElement="SequenceFlow_1xg6pwh">
+        <di:waypoint xsi:type="dc:Point" x="760" y="825" />
+        <di:waypoint xsi:type="dc:Point" x="760" y="886" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="766" y="855.5" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0unfhc9_di" bpmnElement="IntermediateThrowEvent_1vjqksl">
+        <dc:Bounds x="742" y="886" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="725" y="922" width="69" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1om2udh_di" bpmnElement="IntermediateThrowEvent_1vwqesb">
+        <dc:Bounds x="859" y="886" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="842" y="922" width="70" height="13" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1hwtq9x_di" bpmnElement="SequenceFlow_1hwtq9x">
+        <di:waypoint xsi:type="dc:Point" x="877" y="886" />
+        <di:waypoint xsi:type="dc:Point" x="876" y="840" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="877" y="848" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ttowkv_di" bpmnElement="SequenceFlow_0ttowkv">
+        <di:waypoint xsi:type="dc:Point" x="980" y="825" />
+        <di:waypoint xsi:type="dc:Point" x="980" y="886" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="986" y="855.5" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1u04oef_di" bpmnElement="IntermediateThrowEvent_0m9jtv2">
+        <dc:Bounds x="962" y="886" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="945" y="922" width="69" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1bsxf5o_di" bpmnElement="IntermediateThrowEvent_0pk24h2">
+        <dc:Bounds x="155" y="886" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="143" y="922" width="59" height="25" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1colra4_di" bpmnElement="SequenceFlow_1colra4">
+        <di:waypoint xsi:type="dc:Point" x="173" y="886" />
+        <di:waypoint xsi:type="dc:Point" x="173" y="863" />
+        <di:waypoint xsi:type="dc:Point" x="173" y="863" />
+        <di:waypoint xsi:type="dc:Point" x="173" y="840" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="188" y="863" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_18j1ow5_di" bpmnElement="ExclusiveGateway_18j1ow5" isMarkerVisible="true">
+        <dc:Bounds x="1409.304" y="775" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1396" y="724" width="75" height="36" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0u6ho2p_di" bpmnElement="SequenceFlow_0u6ho2p">
+        <di:waypoint xsi:type="dc:Point" x="1245" y="800" />
+        <di:waypoint xsi:type="dc:Point" x="1275" y="800" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1255" y="775" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_08r89q9_di" bpmnElement="Task_0y1h8go">
+        <dc:Bounds x="1275" y="760" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1tzax6l_di" bpmnElement="SequenceFlow_1tzax6l">
+        <di:waypoint xsi:type="dc:Point" x="1375" y="800" />
+        <di:waypoint xsi:type="dc:Point" x="1409" y="800" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1392" y="775" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_06j33fe_di" bpmnElement="IntermediateThrowEvent_0pmevcz">
+        <dc:Bounds x="1090" y="886" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1072" y="922" width="72" height="25" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_16ff86u_di" bpmnElement="SequenceFlow_16ff86u">
+        <di:waypoint xsi:type="dc:Point" x="1108" y="886" />
+        <di:waypoint xsi:type="dc:Point" x="1108" y="840" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1123" y="853" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0k3zxpd_di" bpmnElement="SequenceFlow_0k3zxpd">
+        <di:waypoint xsi:type="dc:Point" x="1220" y="825" />
+        <di:waypoint xsi:type="dc:Point" x="1220" y="886" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1226" y="855.5" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_105mp22_di" bpmnElement="IntermediateThrowEvent_1awckg7">
+        <dc:Bounds x="1202" y="886" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1185" y="922" width="69" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_0kglv4e_di" bpmnElement="IntermediateThrowEvent_1b3smly">
+        <dc:Bounds x="1307" y="886" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1285" y="922" width="79" height="25" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_09xxorv_di" bpmnElement="SequenceFlow_09xxorv">
+        <di:waypoint xsi:type="dc:Point" x="1325" y="886" />
+        <di:waypoint xsi:type="dc:Point" x="1325" y="840" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1340" y="853" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0w8mkkn_di" bpmnElement="SequenceFlow_0w8mkkn">
+        <di:waypoint xsi:type="dc:Point" x="1434" y="825" />
+        <di:waypoint xsi:type="dc:Point" x="1434" y="886" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1440" y="855.5" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0jwgx1d_di" bpmnElement="IntermediateThrowEvent_1cw8gsw">
+        <dc:Bounds x="1416" y="886" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1399" y="922" width="69" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_0zw87jy_di" bpmnElement="IntermediateThrowEvent_0x846wp">
+        <dc:Bounds x="158" y="1186" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="140" y="1221.609" width="72" height="25" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_07uuj2d_di" bpmnElement="SequenceFlow_07uuj2d">
+        <di:waypoint xsi:type="dc:Point" x="176" y="1186" />
+        <di:waypoint xsi:type="dc:Point" x="176" y="1160" />
+        <di:waypoint xsi:type="dc:Point" x="176" y="1160" />
+        <di:waypoint xsi:type="dc:Point" x="176" y="1131" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="191" y="1160" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ueoglv_di" bpmnElement="SequenceFlow_0ueoglv">
+        <di:waypoint xsi:type="dc:Point" x="2117" y="490" />
+        <di:waypoint xsi:type="dc:Point" x="2173" y="264" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2145" y="362" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_15fqlwe_di" bpmnElement="SequenceFlow_15fqlwe">
+        <di:waypoint xsi:type="dc:Point" x="2120" y="493" />
+        <di:waypoint xsi:type="dc:Point" x="2209" y="290" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2165" y="377" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0yuj0l5_di" bpmnElement="SequenceFlow_0yuj0l5">
+        <di:waypoint xsi:type="dc:Point" x="2122" y="495" />
+        <di:waypoint xsi:type="dc:Point" x="2247" y="319" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2185" y="392" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1abb030_di" bpmnElement="SequenceFlow_1abb030">
+        <di:waypoint xsi:type="dc:Point" x="2125" y="498" />
+        <di:waypoint xsi:type="dc:Point" x="2284" y="348" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2205" y="408" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ls3ej5_di" bpmnElement="SequenceFlow_0ls3ej5">
+        <di:waypoint xsi:type="dc:Point" x="2127" y="500" />
+        <di:waypoint xsi:type="dc:Point" x="2313" y="386" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2220" y="428" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ar6ikk_di" bpmnElement="SequenceFlow_1ar6ikk">
+        <di:waypoint xsi:type="dc:Point" x="2133" y="506" />
+        <di:waypoint xsi:type="dc:Point" x="2372" y="460" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2253" y="468" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_171iq7e_di" bpmnElement="SequenceFlow_171iq7e">
+        <di:waypoint xsi:type="dc:Point" x="2134" y="513" />
+        <di:waypoint xsi:type="dc:Point" x="2372" y="553" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2253" y="518" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1553o9f_di" bpmnElement="SequenceFlow_1553o9f">
+        <di:waypoint xsi:type="dc:Point" x="2129" y="518" />
+        <di:waypoint xsi:type="dc:Point" x="2353" y="595" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2241" y="541.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0dmxwel_di" bpmnElement="SequenceFlow_0dmxwel">
+        <di:waypoint xsi:type="dc:Point" x="2125" y="522" />
+        <di:waypoint xsi:type="dc:Point" x="2294" y="685" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2210" y="588.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1id2p8y_di" bpmnElement="SequenceFlow_1id2p8y">
+        <di:waypoint xsi:type="dc:Point" x="2121" y="526" />
+        <di:waypoint xsi:type="dc:Point" x="2247" y="717" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2184" y="607" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0t53vux_di" bpmnElement="SequenceFlow_0t53vux">
+        <di:waypoint xsi:type="dc:Point" x="2119" y="528" />
+        <di:waypoint xsi:type="dc:Point" x="2210" y="737" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2165" y="618" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_11ck4qe_di" bpmnElement="SequenceFlow_11ck4qe">
+        <di:waypoint xsi:type="dc:Point" x="2117" y="530" />
+        <di:waypoint xsi:type="dc:Point" x="2172" y="760" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2145" y="630" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_16d2ln4_di" bpmnElement="SequenceFlow_16d2ln4">
+        <di:waypoint xsi:type="dc:Point" x="2113" y="534" />
+        <di:waypoint xsi:type="dc:Point" x="2128" y="782" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2121" y="643" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_17syve1_di" bpmnElement="IntermediateThrowEvent_0rz6jh4">
+        <dc:Bounds x="2159" y="229" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2165" y="189" width="84" height="36" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0nv8aic_di" bpmnElement="IntermediateThrowEvent_1wip9vc">
+        <dc:Bounds x="2199" y="256" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2213" y="235" width="89" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1g4pmwc_di" bpmnElement="IntermediateThrowEvent_1hki8xj">
+        <dc:Bounds x="2240" y="287" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2280" y="256" width="64" height="36" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1ypnogn_di" bpmnElement="IntermediateThrowEvent_1gfnt9b">
+        <dc:Bounds x="2279" y="319" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2325" y="305" width="71" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1i9ttzs_di" bpmnElement="IntermediateThrowEvent_1gzhs1a">
+        <dc:Bounds x="2311" y="359" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2357" y="356" width="64" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0840e02_di" bpmnElement="IntermediateThrowEvent_0385ons">
+        <dc:Bounds x="2343" y="392" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2393" y="383" width="60" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1quapjx_di" bpmnElement="SequenceFlow_1quapjx">
+        <di:waypoint xsi:type="dc:Point" x="2130" y="503" />
+        <di:waypoint xsi:type="dc:Point" x="2345" y="416" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2239" y="445" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1xq4kx8_di" bpmnElement="IntermediateThrowEvent_1p9i2bi">
+        <dc:Bounds x="2371" y="439" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2412" y="440" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_03b4y60_di" bpmnElement="IntermediateThrowEvent_0ee7wot">
+        <dc:Bounds x="2385" y="493" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2433" y="503" width="62" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1ghdnpx_di" bpmnElement="IntermediateThrowEvent_0rp1ax0">
+        <dc:Bounds x="2371" y="538" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2424" y="544" width="60" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1nls1oo_di" bpmnElement="IntermediateThrowEvent_01ngkx2">
+        <dc:Bounds x="2352" y="582" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2401" y="587" width="60" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0qt249a_di" bpmnElement="IntermediateThrowEvent_0lbd0cs">
+        <dc:Bounds x="2289" y="679" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2337" y="706" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0frwxx8_di" bpmnElement="IntermediateThrowEvent_1ycbds3">
+        <dc:Bounds x="2240" y="713" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2276" y="741" width="74" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1vcx5cz_di" bpmnElement="IntermediateThrowEvent_1cp0hkt">
+        <dc:Bounds x="2199" y="735" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2233" y="759" width="70" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1y8fmlw_di" bpmnElement="IntermediateThrowEvent_184w0i8">
+        <dc:Bounds x="2159" y="759" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2199" y="796" width="82" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_024zi9r_di" bpmnElement="IntermediateThrowEvent_1u9f9kp">
+        <dc:Bounds x="2111" y="782" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2116" y="823" width="72" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_08x53cb_di" bpmnElement="IntermediateThrowEvent_18wrvcy">
+        <dc:Bounds x="158" y="308" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="134" y="343.09862671660426" width="83" height="37" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_179tyul_di" bpmnElement="SequenceFlow_179tyul">
+        <di:waypoint xsi:type="dc:Point" x="180" y="309" />
+        <di:waypoint xsi:type="dc:Point" x="181" y="277" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="181" y="278" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_101n488_di" bpmnElement="SequenceFlow_101n488">
+        <di:waypoint xsi:type="dc:Point" x="2113" y="486" />
+        <di:waypoint xsi:type="dc:Point" x="2127" y="255" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2120" y="356" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_1fnxvhb_di" bpmnElement="IntermediateThrowEvent_17k1fmk">
+        <dc:Bounds x="2111" y="220" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2086" y="170" width="86" height="36" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1g6967r_di" bpmnElement="IntermediateThrowEvent_1m7fq7a">
+        <dc:Bounds x="158" y="582" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="146" y="617.147315855181" width="60" height="13" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ood2pr_di" bpmnElement="SequenceFlow_1ood2pr">
+        <di:waypoint xsi:type="dc:Point" x="176" y="582" />
+        <di:waypoint xsi:type="dc:Point" x="176" y="550" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="191" y="566" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_1y81g09_di" bpmnElement="Task_0eae8go">
+        <dc:Bounds x="826" y="470" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0n20gvh_di" bpmnElement="Task_1dtbnuy">
+        <dc:Bounds x="126" y="470" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_08wyi5l_di" bpmnElement="Task_1sove95">
+        <dc:Bounds x="826" y="760" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1a5n5ff_di" bpmnElement="Task_1fj63ov">
+        <dc:Bounds x="364" y="470" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0mp082m_di" bpmnElement="Task_1ca5ctq">
+        <dc:Bounds x="364" y="760" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_07dp1m8_di" bpmnElement="IntermediateThrowEvent_1kbtw2p">
+        <dc:Bounds x="2324" y="634" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2345" y="668" width="60" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_021ah63_di" bpmnElement="SequenceFlow_021ah63">
+        <di:waypoint xsi:type="dc:Point" x="2127" y="520" />
+        <di:waypoint xsi:type="dc:Point" x="2327" y="643" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2227" y="566.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1qr054i_di" bpmnElement="ScriptTask_1qr054i">
+        <dc:Bounds x="1922" y="559" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1g8h3lt_di" bpmnElement="ExclusiveGateway_1g8h3lt" isMarkerVisible="true">
+        <dc:Bounds x="2008" y="696" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2002" y="746" width="62" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateCatchEvent_1bv97n4_di" bpmnElement="IntermediateCatchEvent_1bv97n4">
+        <dc:Bounds x="1954" y="671" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1889" y="683" width="55" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ai205d_di" bpmnElement="SequenceFlow_0ai205d">
+        <di:waypoint xsi:type="dc:Point" x="1972" y="639" />
+        <di:waypoint xsi:type="dc:Point" x="1972" y="671" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1987" y="645" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0a2cv6d_di" bpmnElement="SequenceFlow_0a2cv6d">
+        <di:waypoint xsi:type="dc:Point" x="1972" y="707" />
+        <di:waypoint xsi:type="dc:Point" x="1972" y="721" />
+        <di:waypoint xsi:type="dc:Point" x="2008" y="721" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1987" y="714" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ijc733_di" bpmnElement="SequenceFlow_1ijc733">
+        <di:waypoint xsi:type="dc:Point" x="1816" y="518" />
+        <di:waypoint xsi:type="dc:Point" x="1922" y="572" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1852" y="550" width="27" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1kntfys_di" bpmnElement="SequenceFlow_1kntfys">
+        <di:waypoint xsi:type="dc:Point" x="2058" y="721" />
+        <di:waypoint xsi:type="dc:Point" x="2085" y="721" />
+        <di:waypoint xsi:type="dc:Point" x="2085" y="510" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2063" y="706" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0h64c4o_di" bpmnElement="SequenceFlow_0h64c4o">
+        <di:waypoint xsi:type="dc:Point" x="2033" y="696" />
+        <di:waypoint xsi:type="dc:Point" x="2033" y="237" />
+        <di:waypoint xsi:type="dc:Point" x="1799" y="237" />
+        <di:waypoint xsi:type="dc:Point" x="1799" y="312" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="2041" y="646" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_1ahvtrx_di" bpmnElement="Task_0zbogrm">
+        <dc:Bounds x="1749" y="604" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0syfgbo_di" bpmnElement="SequenceFlow_0syfgbo">
+        <di:waypoint xsi:type="dc:Point" x="1749" y="644" />
+        <di:waypoint xsi:type="dc:Point" x="1710" y="644" />
+        <di:waypoint xsi:type="dc:Point" x="1710" y="352" />
+        <di:waypoint xsi:type="dc:Point" x="1749" y="352" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1725" y="498" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_0k9fydp_di" bpmnElement="Task_1cfkcss">
+        <dc:Bounds x="600" y="470" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1kw9f96_di" bpmnElement="Task_1mdr1nd">
+        <dc:Bounds x="1064" y="470" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0d1uai9_di" bpmnElement="Task_1hdg951">
+        <dc:Bounds x="123" y="760" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1onqhy5_di" bpmnElement="Task_0h2nq31">
+        <dc:Bounds x="601" y="760" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1slvyx2_di" bpmnElement="ExclusiveGateway_1slvyx2" isMarkerVisible="true">
+        <dc:Bounds x="266" y="485" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="257" y="439" width="68" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1qnzi6i_di" bpmnElement="SequenceFlow_1qnzi6i">
+        <di:waypoint xsi:type="dc:Point" x="458" y="1486" />
+        <di:waypoint xsi:type="dc:Point" x="491" y="1486" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="475" y="1471" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_1ufdbl8_di" bpmnElement="Task_13sybx8">
+        <dc:Bounds x="358" y="1446" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0hvg70o_di" bpmnElement="SequenceFlow_0hvg70o">
+        <di:waypoint xsi:type="dc:Point" x="333" y="1486" />
+        <di:waypoint xsi:type="dc:Point" x="358" y="1486" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="346" y="1471" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1qacr3e_di" bpmnElement="Task_0ilgwhw">
+        <dc:Bounds x="233" y="1446" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ib8gb8_di" bpmnElement="SequenceFlow_0ib8gb8">
+        <di:waypoint xsi:type="dc:Point" x="591" y="1486" />
+        <di:waypoint xsi:type="dc:Point" x="613" y="1486" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="602" y="1471" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_032b6ij_di" bpmnElement="Task_1mt62gu">
+        <dc:Bounds x="491" y="1446" width="100" height="80" />
+      </bpmndi:BPMNShape>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn2:definitions>
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/CreateServiceInstanceV3.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/CreateServiceInstanceV3.bpmn
new file mode 100644
index 0000000..dcb5323
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/CreateServiceInstanceV3.bpmn
@@ -0,0 +1,146 @@
+<?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.8.2">
+  <bpmn:process id="CreateServiceInstanceV3" name="CreateServiceInstanceV3" isExecutable="true">
+    <bpmn:startEvent id="StartEvent_1" name="start">
+      <bpmn:outgoing>SequenceFlow_055igqy</bpmn:outgoing>
+    </bpmn:startEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_055igqy" sourceRef="StartEvent_1" targetRef="ServiceTask_1" />
+    <bpmn:serviceTask id="ServiceTask_1" name="Create Service Instance (AAI)" camunda:class="org.openecomp.mso.bpmn.infrastructure.AAITasks.AAICreateServiceInstance">
+      <bpmn:incoming>SequenceFlow_055igqy</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0n3aqvm</bpmn:outgoing>
+    </bpmn:serviceTask>
+    <bpmn:endEvent id="EndEvent_0czacld" name="end">
+      <bpmn:incoming>SequenceFlow_011vkoq</bpmn:incoming>
+    </bpmn:endEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_0n3aqvm" sourceRef="ServiceTask_1" targetRef="ServiceTask_2" />
+    <bpmn:serviceTask id="ServiceTask_2" name="Create Project (AAI)" camunda:class="org.openecomp.mso.bpmn.infrastructure.AAITasks.AAICreateProject">
+      <bpmn:incoming>SequenceFlow_0n3aqvm</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1knhaka</bpmn:outgoing>
+    </bpmn:serviceTask>
+    <bpmn:sequenceFlow id="SequenceFlow_1knhaka" sourceRef="ServiceTask_2" targetRef="ServiceTask_3" />
+    <bpmn:sequenceFlow id="SequenceFlow_1wvh54c" sourceRef="ServiceTask_3" targetRef="ServiceTask_4" />
+    <bpmn:sequenceFlow id="SequenceFlow_011vkoq" sourceRef="ServiceTask_4" targetRef="EndEvent_0czacld" />
+    <bpmn:serviceTask id="ServiceTask_3" name="Create Owning Entity (AAI)" camunda:class="org.openecomp.mso.bpmn.infrastructure.AAITasks.AAICreateOwningEntity">
+      <bpmn:incoming>SequenceFlow_1knhaka</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1wvh54c</bpmn:outgoing>
+    </bpmn:serviceTask>
+    <bpmn:serviceTask id="ServiceTask_4" name="Create Service Instance (SDNC)" camunda:class="org.openecomp.mso.bpmn.infrastructure.SDNCTasks.SDNCCreateServiceInstance">
+      <bpmn:incoming>SequenceFlow_1wvh54c</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_011vkoq</bpmn:outgoing>
+    </bpmn:serviceTask>
+    <bpmn:subProcess id="SubProcess_0li0k0e" triggeredByEvent="true">
+      <bpmn:sequenceFlow id="SequenceFlow_1hm0qrs" sourceRef="StartEvent_0c0kf3c" targetRef="Task_0g6f9wo" />
+      <bpmn:endEvent id="EndEvent_0vqclsg" name="end">
+        <bpmn:incoming>SequenceFlow_1lli2e6</bpmn:incoming>
+      </bpmn:endEvent>
+      <bpmn:sequenceFlow id="SequenceFlow_1lli2e6" sourceRef="Task_0g6f9wo" targetRef="EndEvent_0vqclsg" />
+      <bpmn:startEvent id="StartEvent_0c0kf3c" name="error">
+        <bpmn:outgoing>SequenceFlow_1hm0qrs</bpmn:outgoing>
+        <bpmn:errorEventDefinition />
+      </bpmn:startEvent>
+      <bpmn:callActivity id="Task_0g6f9wo" name="Rollback" calledElement="CreateServiceInstanceV3Rollback">
+        <bpmn:extensionElements>
+          <camunda:in source="aaiServiceInstanceRollback" target="aaiServiceInstanceRollback" />
+          <camunda:in source="ServiceDecomposition" target="ServiceDecomposition" />
+        </bpmn:extensionElements>
+        <bpmn:incoming>SequenceFlow_1hm0qrs</bpmn:incoming>
+        <bpmn:outgoing>SequenceFlow_1lli2e6</bpmn:outgoing>
+      </bpmn:callActivity>
+    </bpmn:subProcess>
+  </bpmn:process>
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="CreateServiceInstanceV3">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
+        <dc:Bounds x="173" y="102" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="180" y="138" width="22" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_055igqy_di" bpmnElement="SequenceFlow_055igqy">
+        <di:waypoint xsi:type="dc:Point" x="209" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="245" y="120" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="182" y="99" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ServiceTask_131yzgl_di" bpmnElement="ServiceTask_1">
+        <dc:Bounds x="245" y="80" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0czacld_di" bpmnElement="EndEvent_0czacld">
+        <dc:Bounds x="815" y="102" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="824" y="142" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0n3aqvm_di" bpmnElement="SequenceFlow_0n3aqvm">
+        <di:waypoint xsi:type="dc:Point" x="345" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="386" y="120" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="320.5" y="99" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ServiceTask_1n62tc6_di" bpmnElement="ServiceTask_2">
+        <dc:Bounds x="386" y="80" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1knhaka_di" bpmnElement="SequenceFlow_1knhaka">
+        <di:waypoint xsi:type="dc:Point" x="486" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="532" y="120" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="464" y="99" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1wvh54c_di" bpmnElement="SequenceFlow_1wvh54c">
+        <di:waypoint xsi:type="dc:Point" x="632" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="674" y="120" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="608" y="99" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_011vkoq_di" bpmnElement="SequenceFlow_011vkoq">
+        <di:waypoint xsi:type="dc:Point" x="774" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="815" y="120" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="749.5" y="99" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ServiceTask_0ulwzil_di" bpmnElement="ServiceTask_3">
+        <dc:Bounds x="532" y="80" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ServiceTask_1qe7j08_di" bpmnElement="ServiceTask_4">
+        <dc:Bounds x="674" y="80" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="SubProcess_0mrwlu0_di" bpmnElement="SubProcess_0li0k0e" isExpanded="true">
+        <dc:Bounds x="315" y="204" width="350" height="200" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1hm0qrs_di" bpmnElement="SequenceFlow_1hm0qrs">
+        <di:waypoint xsi:type="dc:Point" x="381" y="287" />
+        <di:waypoint xsi:type="dc:Point" x="433" y="287" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="362" y="266" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="EndEvent_0vqclsg_di" bpmnElement="EndEvent_0vqclsg">
+        <dc:Bounds x="571" y="269" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="580" y="309" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1lli2e6_di" bpmnElement="SequenceFlow_1lli2e6">
+        <di:waypoint xsi:type="dc:Point" x="533" y="287" />
+        <di:waypoint xsi:type="dc:Point" x="571" y="287" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="507" y="266" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="StartEvent_070db75_di" bpmnElement="StartEvent_0c0kf3c">
+        <dc:Bounds x="345" y="269" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="351" y="309" width="24" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0lsbpos_di" bpmnElement="Task_0g6f9wo">
+        <dc:Bounds x="433" y="247" width="100" height="80" />
+      </bpmndi:BPMNShape>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn:definitions>
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/CreateServiceInstanceV3Rollback.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/CreateServiceInstanceV3Rollback.bpmn
new file mode 100644
index 0000000..392ebd7
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/CreateServiceInstanceV3Rollback.bpmn
@@ -0,0 +1,97 @@
+<?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.8.2">
+  <bpmn:process id="CreateServiceInstanceV3Rollback" name="CreateServiceInstanceV3Rollback" isExecutable="true">
+    <bpmn:startEvent id="StartEvent_1" name="start">
+      <bpmn:outgoing>SequenceFlow_15a3kpo</bpmn:outgoing>
+    </bpmn:startEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_15a3kpo" sourceRef="StartEvent_1" targetRef="ServiceTask_1" />
+    <bpmn:endEvent id="EndEvent_0646ypz" name="end">
+      <bpmn:incoming>SequenceFlow_0dqe5xo</bpmn:incoming>
+    </bpmn:endEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_0dqe5xo" sourceRef="ServiceTask_1" targetRef="EndEvent_0646ypz" />
+    <bpmn:serviceTask id="ServiceTask_1" name="Rollback AAI Service Instance" camunda:class="org.openecomp.mso.bpmn.infrastructure.DoCreateServiceInstance.RollbackAAIServiceInstance">
+      <bpmn:incoming>SequenceFlow_15a3kpo</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0dqe5xo</bpmn:outgoing>
+    </bpmn:serviceTask>
+    <bpmn:subProcess id="SubProcess_1omnzt2" triggeredByEvent="true">
+      <bpmn:startEvent id="StartEvent_1y39m1e" name="error">
+        <bpmn:outgoing>SequenceFlow_10szwpv</bpmn:outgoing>
+        <bpmn:errorEventDefinition />
+      </bpmn:startEvent>
+      <bpmn:sequenceFlow id="SequenceFlow_10szwpv" sourceRef="StartEvent_1y39m1e" targetRef="ServiceTask_2" />
+      <bpmn:endEvent id="EndEvent_0j0lea1" name="end">
+        <bpmn:incoming>SequenceFlow_05g9m3e</bpmn:incoming>
+      </bpmn:endEvent>
+      <bpmn:sequenceFlow id="SequenceFlow_05g9m3e" sourceRef="ServiceTask_2" targetRef="EndEvent_0j0lea1" />
+      <bpmn:serviceTask id="ServiceTask_2" name="Rollback Error" camunda:class="org.openecomp.mso.bpmn.infrastructure.DoCreateServiceInstance.RollbackError">
+        <bpmn:incoming>SequenceFlow_10szwpv</bpmn:incoming>
+        <bpmn:outgoing>SequenceFlow_05g9m3e</bpmn:outgoing>
+      </bpmn:serviceTask>
+    </bpmn:subProcess>
+  </bpmn:process>
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="CreateServiceInstanceV3Rollback">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
+        <dc:Bounds x="173" y="102" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="180" y="138" width="22" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_15a3kpo_di" bpmnElement="SequenceFlow_15a3kpo">
+        <di:waypoint xsi:type="dc:Point" x="209" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="266" y="120" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="237.5" y="99" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="EndEvent_0646ypz_di" bpmnElement="EndEvent_0646ypz">
+        <dc:Bounds x="427" y="102" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="436" y="142" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0dqe5xo_di" bpmnElement="SequenceFlow_0dqe5xo">
+        <di:waypoint xsi:type="dc:Point" x="366" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="427" y="120" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="396.5" y="99" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ServiceTask_16utus7_di" bpmnElement="ServiceTask_1">
+        <dc:Bounds x="266" y="80" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="SubProcess_17vvj4f_di" bpmnElement="SubProcess_1omnzt2" isExpanded="true">
+        <dc:Bounds x="141" y="199" width="350" height="200" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_08j7gdd_di" bpmnElement="StartEvent_1y39m1e">
+        <dc:Bounds x="172" y="277" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="178" y="317" width="24" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_10szwpv_di" bpmnElement="SequenceFlow_10szwpv">
+        <di:waypoint xsi:type="dc:Point" x="208" y="295" />
+        <di:waypoint xsi:type="dc:Point" x="268" y="295" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="238" y="274" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="EndEvent_0j0lea1_di" bpmnElement="EndEvent_0j0lea1">
+        <dc:Bounds x="423" y="277" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="432" y="317" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_05g9m3e_di" bpmnElement="SequenceFlow_05g9m3e">
+        <di:waypoint xsi:type="dc:Point" x="368" y="295" />
+        <di:waypoint xsi:type="dc:Point" x="423" y="295" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="395.5" y="274" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ServiceTask_074yl77_di" bpmnElement="ServiceTask_2">
+        <dc:Bounds x="268" y="255" width="100" height="80" />
+      </bpmndi:BPMNShape>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn:definitions>
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateServiceInstance.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateServiceInstance.bpmn
index 19fd490..7b2eded 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateServiceInstance.bpmn
+++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateServiceInstance.bpmn
@@ -9,7 +9,7 @@
       <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_3</bpmn2:outgoing>
       <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
-def dcsi = new DoCreateServiceInstance()
+def dcsi = new DoCreateServiceInstance()
 dcsi.getAAICustomerById(execution)]]></bpmn2:script>
     </bpmn2:scriptTask>
     <bpmn2:sequenceFlow id="SequenceFlow_3" name="" sourceRef="getAAICustomerById_scriptTask" targetRef="ExclusiveGateway_09wkav2" />
@@ -17,8 +17,8 @@
       <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing>
       <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
-def dcsi = new DoCreateServiceInstance()
-dcsi.preProcessRequest(execution)
+def dcsi = new DoCreateServiceInstance()
+dcsi.preProcessRequest(execution)
 ]]></bpmn2:script>
     </bpmn2:scriptTask>
     <bpmn2:sequenceFlow id="SequenceFlow_4" name="" sourceRef="callGenericGetService" targetRef="ScriptTask_0i8cqdy" />
@@ -26,14 +26,14 @@
       <bpmn2:incoming>SequenceFlow_156ih25</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_14</bpmn2:outgoing>
       <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
-def dcsi = new DoCreateServiceInstance()
+def dcsi = new DoCreateServiceInstance()
 dcsi.preProcessSDNCAssignRequest(execution)]]></bpmn2:script>
     </bpmn2:scriptTask>
     <bpmn2:scriptTask id="PostProcessSDNCAssignRequest" name="Post Process SDNC Assign Request" scriptFormat="groovy">
       <bpmn2:incoming>SequenceFlow_9</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_10</bpmn2:outgoing>
       <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
-def dcsi = new DoCreateServiceInstance()
+def dcsi = new DoCreateServiceInstance()
 dcsi.postProcessSDNCAssign(execution)]]></bpmn2:script>
     </bpmn2:scriptTask>
     <bpmn2:callActivity id="CallSDNCAdapterServiceTopologyAssign" name="Call SDNC Adapter Service Topology Assign" calledElement="sdncAdapter">
@@ -80,22 +80,21 @@
       </bpmn2:extensionElements>
       <bpmn2:incoming>SequenceFlow_1uw2p9a</bpmn2:incoming>
       <bpmn2:incoming>SequenceFlow_1w01tqs</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_129ih1g</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_1jhzmzn</bpmn2:outgoing>
     </bpmn2:callActivity>
-    <bpmn2:sequenceFlow id="SequenceFlow_129ih1g" sourceRef="callGenericPutService" targetRef="ScriptTask_0q37vn9" />
-    <bpmn2:exclusiveGateway id="ExclusiveGateway_09wkav2" name="sdncVersion is 1610 or serviceInstance name is populated?" default="SequenceFlow_1uw2p9a">
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_09wkav2" name="need to check SI name in AAI?" default="SequenceFlow_1uw2p9a">
       <bpmn2:incoming>SequenceFlow_3</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_11fnnkb</bpmn2:outgoing>
       <bpmn2:outgoing>SequenceFlow_1uw2p9a</bpmn2:outgoing>
     </bpmn2:exclusiveGateway>
     <bpmn2:sequenceFlow id="SequenceFlow_11fnnkb" name="yes" sourceRef="ExclusiveGateway_09wkav2" targetRef="callGenericGetService">
-      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{(execution.getVariable("serviceInstanceName" )  != null && execution.getVariable("serviceInstanceName" )  != "" ) || execution.getVariable("sdncVersion" )   == "1610" }]]></bpmn2:conditionExpression>
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{ execution.getVariable("checkAAI" )   == true }]]></bpmn2:conditionExpression>
     </bpmn2:sequenceFlow>
     <bpmn2:sequenceFlow id="SequenceFlow_1uw2p9a" name="no" sourceRef="ExclusiveGateway_09wkav2" targetRef="callGenericPutService" />
     <bpmn2:subProcess id="SubProcess_06d8lk8" name="Sub-process for Application Errors" triggeredByEvent="true">
       <bpmn2:startEvent id="StartEvent_0yljq9y">
         <bpmn2:outgoing>SequenceFlow_0tgrn11</bpmn2:outgoing>
-        <bpmn2:errorEventDefinition />
+        <bpmn2:errorEventDefinition errorRef="Error_2" />
       </bpmn2:startEvent>
       <bpmn2:endEvent id="EndEvent_117lkk3">
         <bpmn2:incoming>SequenceFlow_1xzgv5k</bpmn2:incoming>
@@ -117,8 +116,8 @@
         <bpmn2:incoming>SequenceFlow_0tgrn11</bpmn2:incoming>
         <bpmn2:outgoing>SequenceFlow_1lqktwf</bpmn2:outgoing>
         <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
-def dcsi = new DoCreateServiceInstance()
-dcsi.preProcessRollback(execution)
+def dcsi = new DoCreateServiceInstance()
+dcsi.preProcessRollback(execution)
 ]]></bpmn2:script>
       </bpmn2:scriptTask>
       <bpmn2:sequenceFlow id="SequenceFlow_1lqktwf" sourceRef="ScriptTask_0ocetux" targetRef="CallActivity_1srx6p6" />
@@ -126,14 +125,14 @@
         <bpmn2:incoming>SequenceFlow_0eumzpf</bpmn2:incoming>
         <bpmn2:outgoing>SequenceFlow_1xzgv5k</bpmn2:outgoing>
         <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
-def dcsi = new DoCreateServiceInstance()
-dcsi.postProcessRollback(execution)
+def dcsi = new DoCreateServiceInstance()
+dcsi.postProcessRollback(execution)
 ]]></bpmn2:script>
       </bpmn2:scriptTask>
       <bpmn2:sequenceFlow id="SequenceFlow_1xzgv5k" sourceRef="ScriptTask_1p0vyip" targetRef="EndEvent_117lkk3" />
     </bpmn2:subProcess>
-    <bpmn2:exclusiveGateway id="ExclusiveGateway_1nk6aol" name="sdncVersion is 1610?" default="SequenceFlow_156ih25">
-      <bpmn2:incoming>SequenceFlow_1dd86x8</bpmn2:incoming>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_1nk6aol" name="sdncVersion is 1610 and not port mirror?" default="SequenceFlow_156ih25">
+      <bpmn2:incoming>SequenceFlow_0w5i6vf</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_156ih25</bpmn2:outgoing>
       <bpmn2:outgoing>SequenceFlow_00v4npo</bpmn2:outgoing>
     </bpmn2:exclusiveGateway>
@@ -142,24 +141,16 @@
       <bpmn2:incoming>SequenceFlow_00v4npo</bpmn2:incoming>
     </bpmn2:endEvent>
     <bpmn2:sequenceFlow id="SequenceFlow_00v4npo" name="yes" sourceRef="ExclusiveGateway_1nk6aol" targetRef="EndEvent_10659gr">
-      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("sdncVersion" ) == "1610"}]]></bpmn2:conditionExpression>
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{!execution.getVariable("sendToSDNC")}]]></bpmn2:conditionExpression>
     </bpmn2:sequenceFlow>
     <bpmn2:scriptTask id="ScriptTask_0i8cqdy" name="Post Process AAI GET" scriptFormat="groovy">
       <bpmn2:incoming>SequenceFlow_4</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_1w01tqs</bpmn2:outgoing>
       <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
-def dcsi = new DoCreateServiceInstance()
+def dcsi = new DoCreateServiceInstance()
 dcsi.postProcessAAIGET(execution)]]></bpmn2:script>
     </bpmn2:scriptTask>
     <bpmn2:sequenceFlow id="SequenceFlow_1w01tqs" sourceRef="ScriptTask_0i8cqdy" targetRef="callGenericPutService" />
-    <bpmn2:scriptTask id="ScriptTask_0q37vn9" name="Post Process AAI PUT" scriptFormat="groovy">
-      <bpmn2:incoming>SequenceFlow_129ih1g</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_1dd86x8</bpmn2:outgoing>
-      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
-def ddsi = new DoCreateServiceInstance()
-ddsi.postProcessAAIPUT(execution)]]></bpmn2:script>
-    </bpmn2:scriptTask>
-    <bpmn2:sequenceFlow id="SequenceFlow_1dd86x8" sourceRef="ScriptTask_0q37vn9" targetRef="ExclusiveGateway_1nk6aol" />
     <bpmn2:callActivity id="CallActivity_1707jgc" name="Call GenericGetService2" calledElement="GenericGetService">
       <bpmn2:extensionElements>
         <camunda:in source="serviceInstanceId" target="GENGS_serviceInstanceId" />
@@ -179,10 +170,53 @@
     <bpmn2:scriptTask id="ScriptTask_1tp0fcx" name="Post Process AAI GET2" scriptFormat="groovy">
       <bpmn2:incoming>SequenceFlow_0tx5frq</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_01q6pl4</bpmn2:outgoing>
-      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
-def dcsi = new DoCreateServiceInstance()
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def dcsi = new DoCreateServiceInstance()
 dcsi.postProcessAAIGET2(execution)]]></bpmn2:script>
     </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="ScriptTask_0q37vn9" name="Post Process AAI PUT" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1jhzmzn</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_16sdyz9</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def ddsi = new DoCreateServiceInstance()
+ddsi.postProcessAAIPUT(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_0k0wn03" sourceRef="Task_0wj9ajs" targetRef="Task_1g8wthf" />
+    <bpmn2:scriptTask id="Task_0wj9ajs" name="Create Project" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_16sdyz9</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0k0wn03</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def dcsi = new DoCreateServiceInstance()
+dcsi.createProject(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="Task_1g8wthf" name="Create Owning Entity" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0k0wn03</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0w5i6vf</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def dcsi = new DoCreateServiceInstance()
+dcsi.createOwningEntity(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_1jhzmzn" sourceRef="callGenericPutService" targetRef="ScriptTask_0q37vn9" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0w5i6vf" sourceRef="Task_1g8wthf" targetRef="ExclusiveGateway_1nk6aol" />
+    <bpmn2:sequenceFlow id="SequenceFlow_16sdyz9" sourceRef="ScriptTask_0q37vn9" targetRef="Task_0wj9ajs" />
+    <bpmn2:subProcess id="SubProcess_1awd8cm" name="Sub-process for UnexpectedErrors" triggeredByEvent="true">
+      <bpmn2:scriptTask id="ScriptTask_1thtxi5" name="Log / Print Unexpected Error" scriptFormat="groovy">
+        <bpmn2:incoming>SequenceFlow_0x48any</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_052o4xc</bpmn2:outgoing>
+        <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def dcsi = new DoCreateServiceInstance()
+dcsi.processJavaException(execution)]]></bpmn2:script>
+      </bpmn2:scriptTask>
+      <bpmn2:startEvent id="StartEvent_0xjnqhv">
+        <bpmn2:outgoing>SequenceFlow_0x48any</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition errorRef="Error_1" />
+      </bpmn2:startEvent>
+      <bpmn2:endEvent id="EndEvent_0eikrc1">
+        <bpmn2:incoming>SequenceFlow_052o4xc</bpmn2:incoming>
+      </bpmn2:endEvent>
+      <bpmn2:sequenceFlow id="SequenceFlow_0x48any" name="" sourceRef="StartEvent_0xjnqhv" targetRef="ScriptTask_1thtxi5" />
+      <bpmn2:sequenceFlow id="SequenceFlow_052o4xc" name="" sourceRef="ScriptTask_1thtxi5" targetRef="EndEvent_0eikrc1" />
+    </bpmn2:subProcess>
   </bpmn2:process>
   <bpmn2:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
   <bpmn2:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" />
@@ -215,9 +249,9 @@
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="_BPMNShape_EndEvent_177" bpmnElement="EndEvent_3">
-        <dc:Bounds x="1115" y="1165" width="36" height="36" />
+        <dc:Bounds x="1122" y="1297" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1133" y="1206" width="0" height="0" />
+          <dc:Bounds x="1095" y="1338" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_10" bpmnElement="SequenceFlow_4">
@@ -228,13 +262,13 @@
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_334" bpmnElement="PreProcessSDNCAssignRequest">
-        <dc:Bounds x="972" y="578" width="100" height="80" />
+        <dc:Bounds x="972" y="810" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_335" bpmnElement="PostProcessSDNCAssignRequest">
-        <dc:Bounds x="972" y="864" width="100" height="80" />
+        <dc:Bounds x="972" y="1054" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="_BPMNShape_CallActivity_74" bpmnElement="CallSDNCAdapterServiceTopologyAssign">
-        <dc:Bounds x="972" y="721" width="100" height="80" />
+        <dc:Bounds x="972" y="930" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_ScriptTask_61" targetElement="_BPMNShape_ScriptTask_62">
         <di:waypoint xsi:type="dc:Point" x="345" y="97" />
@@ -244,28 +278,24 @@
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_8" bpmnElement="SequenceFlow_14" sourceElement="_BPMNShape_ScriptTask_334" targetElement="_BPMNShape_CallActivity_74">
-        <di:waypoint xsi:type="dc:Point" x="1020" y="658" />
-        <di:waypoint xsi:type="dc:Point" x="1020" y="692" />
-        <di:waypoint xsi:type="dc:Point" x="1020" y="692" />
-        <di:waypoint xsi:type="dc:Point" x="1020" y="715" />
+        <di:waypoint xsi:type="dc:Point" x="1020" y="890" />
+        <di:waypoint xsi:type="dc:Point" x="1020" y="930" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1035" y="692" width="0" height="0" />
+          <dc:Bounds x="990" y="910" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_11" bpmnElement="SequenceFlow_9" sourceElement="_BPMNShape_CallActivity_74" targetElement="_BPMNShape_ScriptTask_335">
-        <di:waypoint xsi:type="dc:Point" x="1022" y="801" />
-        <di:waypoint xsi:type="dc:Point" x="1022" y="840" />
-        <di:waypoint xsi:type="dc:Point" x="1022" y="840" />
-        <di:waypoint xsi:type="dc:Point" x="1022" y="864" />
+        <di:waypoint xsi:type="dc:Point" x="1022" y="1010" />
+        <di:waypoint xsi:type="dc:Point" x="1022" y="1054" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1037" y="840" width="0" height="0" />
+          <dc:Bounds x="992" y="1032" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_12" bpmnElement="SequenceFlow_10" sourceElement="_BPMNShape_ScriptTask_335">
-        <di:waypoint xsi:type="dc:Point" x="1024" y="944" />
-        <di:waypoint xsi:type="dc:Point" x="1024" y="994" />
+        <di:waypoint xsi:type="dc:Point" x="1024" y="1134" />
+        <di:waypoint xsi:type="dc:Point" x="1024" y="1162" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1039" y="969" width="0" height="0" />
+          <dc:Bounds x="994" y="1148" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="CallActivity_1md4kyb_di" bpmnElement="callGenericGetService">
@@ -274,17 +304,10 @@
       <bpmndi:BPMNShape id="CallActivity_0khp0qc_di" bpmnElement="callGenericPutService">
         <dc:Bounds x="972" y="206" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_129ih1g_di" bpmnElement="SequenceFlow_129ih1g">
-        <di:waypoint xsi:type="dc:Point" x="1023" y="286" />
-        <di:waypoint xsi:type="dc:Point" x="1022" y="336" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1023" y="296" width="0" height="0" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ExclusiveGateway_09wkav2_di" bpmnElement="ExclusiveGateway_09wkav2" isMarkerVisible="true">
         <dc:Bounds x="565" y="72" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="547" y="7" width="81" height="62" />
+          <dc:Bounds x="547" y="27" width="85" height="24" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_11fnnkb_di" bpmnElement="SequenceFlow_11fnnkb">
@@ -335,31 +358,31 @@
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ExclusiveGateway_1nk6aol_di" bpmnElement="ExclusiveGateway_1nk6aol" isMarkerVisible="true">
-        <dc:Bounds x="997" y="460" width="50" height="50" />
+        <dc:Bounds x="997" y="717" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="903" y="472" width="75" height="24" />
+          <dc:Bounds x="898" y="729" width="86" height="36" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_156ih25_di" bpmnElement="SequenceFlow_156ih25">
-        <di:waypoint xsi:type="dc:Point" x="1022" y="510" />
-        <di:waypoint xsi:type="dc:Point" x="1022" y="545" />
-        <di:waypoint xsi:type="dc:Point" x="1022" y="545" />
-        <di:waypoint xsi:type="dc:Point" x="1022" y="575" />
+        <di:waypoint xsi:type="dc:Point" x="1022" y="767" />
+        <di:waypoint xsi:type="dc:Point" x="1022" y="810" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1039" y="510.8721806797853" width="12" height="12" />
+          <dc:Bounds x="1039" y="770" width="12" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="EndEvent_10659gr_di" bpmnElement="EndEvent_10659gr">
-        <dc:Bounds x="1103" y="467" width="36" height="36" />
+        <dc:Bounds x="1105" y="724" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1121" y="508" width="0" height="0" />
+          <dc:Bounds x="1078" y="765" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_00v4npo_di" bpmnElement="SequenceFlow_00v4npo">
-        <di:waypoint xsi:type="dc:Point" x="1047" y="485" />
-        <di:waypoint xsi:type="dc:Point" x="1103" y="485" />
+        <di:waypoint xsi:type="dc:Point" x="1047" y="742" />
+        <di:waypoint xsi:type="dc:Point" x="1075" y="742" />
+        <di:waypoint xsi:type="dc:Point" x="1075" y="742" />
+        <di:waypoint xsi:type="dc:Point" x="1105" y="742" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1063" y="461" width="18" height="12" />
+          <dc:Bounds x="1050.5" y="718" width="18" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ScriptTask_0i8cqdy_di" bpmnElement="ScriptTask_0i8cqdy">
@@ -374,16 +397,6 @@
           <dc:Bounds x="1036" y="172" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ScriptTask_0q37vn9_di" bpmnElement="ScriptTask_0q37vn9">
-        <dc:Bounds x="972" y="336" width="100" height="80" />
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_1dd86x8_di" bpmnElement="SequenceFlow_1dd86x8">
-        <di:waypoint xsi:type="dc:Point" x="1022" y="416" />
-        <di:waypoint xsi:type="dc:Point" x="1022" y="460" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1037" y="438" width="0" height="0" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ScriptTask_0ocetux_di" bpmnElement="ScriptTask_0ocetux">
         <dc:Bounds x="330" y="586" width="100" height="80" />
       </bpmndi:BPMNShape>
@@ -407,25 +420,96 @@
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="CallActivity_1707jgc_di" bpmnElement="CallActivity_1707jgc">
-        <dc:Bounds x="972" y="994" width="100" height="80" />
+        <dc:Bounds x="972" y="1162" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0tx5frq_di" bpmnElement="SequenceFlow_0tx5frq">
-        <di:waypoint xsi:type="dc:Point" x="1022" y="1074" />
-        <di:waypoint xsi:type="dc:Point" x="1022" y="1143" />
+        <di:waypoint xsi:type="dc:Point" x="1022" y="1242" />
+        <di:waypoint xsi:type="dc:Point" x="1022" y="1275" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1037" y="1108.5" width="0" height="0" />
+          <dc:Bounds x="992" y="1258.5" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_01q6pl4_di" bpmnElement="SequenceFlow_01q6pl4">
-        <di:waypoint xsi:type="dc:Point" x="1072" y="1183" />
-        <di:waypoint xsi:type="dc:Point" x="1115" y="1183" />
+        <di:waypoint xsi:type="dc:Point" x="1072" y="1315" />
+        <di:waypoint xsi:type="dc:Point" x="1094" y="1315" />
+        <di:waypoint xsi:type="dc:Point" x="1094" y="1315" />
+        <di:waypoint xsi:type="dc:Point" x="1122" y="1315" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1094" y="1168" width="0" height="0" />
+          <dc:Bounds x="1064" y="1315" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ScriptTask_1tp0fcx_di" bpmnElement="ScriptTask_1tp0fcx">
-        <dc:Bounds x="972" y="1143" width="100" height="80" />
+        <dc:Bounds x="972" y="1275" width="100" height="80" />
       </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0q37vn9_di" bpmnElement="ScriptTask_0q37vn9">
+        <dc:Bounds x="972" y="336" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0k0wn03_di" bpmnElement="SequenceFlow_0k0wn03">
+        <di:waypoint xsi:type="dc:Point" x="1022" y="541" />
+        <di:waypoint xsi:type="dc:Point" x="1022" y="589" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="992" y="559" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0v8y3ex_di" bpmnElement="Task_0wj9ajs">
+        <dc:Bounds x="972" y="461" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0lndrbk_di" bpmnElement="Task_1g8wthf">
+        <dc:Bounds x="972" y="589" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1jhzmzn_di" bpmnElement="SequenceFlow_1jhzmzn">
+        <di:waypoint xsi:type="dc:Point" x="1022" y="286" />
+        <di:waypoint xsi:type="dc:Point" x="1022" y="336" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1037" y="305" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0w5i6vf_di" bpmnElement="SequenceFlow_0w5i6vf">
+        <di:waypoint xsi:type="dc:Point" x="1022" y="669" />
+        <di:waypoint xsi:type="dc:Point" x="1022" y="717" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1037" y="687" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_16sdyz9_di" bpmnElement="SequenceFlow_16sdyz9">
+        <di:waypoint xsi:type="dc:Point" x="1022" y="416" />
+        <di:waypoint xsi:type="dc:Point" x="1022" y="461" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1037" y="432.5" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="SubProcess_1awd8cm_di" bpmnElement="SubProcess_1awd8cm" isExpanded="true">
+        <dc:Bounds x="98" y="304" width="394" height="188" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1thtxi5_di" bpmnElement="ScriptTask_1thtxi5">
+        <dc:Bounds x="246" y="359" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_0xjnqhv_di" bpmnElement="StartEvent_0xjnqhv">
+        <dc:Bounds x="131" y="381" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="149" y="422" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0eikrc1_di" bpmnElement="EndEvent_0eikrc1">
+        <dc:Bounds x="407" y="381" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="425" y="422" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0x48any_di" bpmnElement="SequenceFlow_0x48any">
+        <di:waypoint xsi:type="dc:Point" x="167" y="399" />
+        <di:waypoint xsi:type="dc:Point" x="246" y="399" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="209" y="399" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_052o4xc_di" bpmnElement="SequenceFlow_052o4xc">
+        <di:waypoint xsi:type="dc:Point" x="346" y="399" />
+        <di:waypoint xsi:type="dc:Point" x="407" y="399" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="381" y="399" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
     </bpmndi:BPMNPlane>
   </bpmndi:BPMNDiagram>
 </bpmn2:definitions>
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateServiceInstanceRollback.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateServiceInstanceRollback.bpmn
index 6c24696..ef5ce35 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateServiceInstanceRollback.bpmn
+++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateServiceInstanceRollback.bpmn
@@ -1,5 +1,5 @@
 <?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.4.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
+<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.8.2" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
   <bpmn2:process id="DoCreateServiceInstanceRollback" name="DoCreateServiceInstanceRollback" isExecutable="true">
     <bpmn2:startEvent id="createSIRollback_startEvent" name="Start Flow">
       <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing>
@@ -35,20 +35,6 @@
       <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:callActivity id="callGenericDeleteService" name="Call AAI GenericDelete Service " calledElement="GenericDeleteService">
-      <bpmn2:extensionElements>
-        <camunda:in source="serviceInstanceId" target="GENDS_serviceInstanceId" />
-        <camunda:in source="subscriptionServiceType" target="GENDS_serviceType" />
-        <camunda:in source="globalSubscriberId" target="GENDS_globalCustomerId" />
-        <camunda:in sourceExpression="service-instance" target="GENDS_type" />
-        <camunda:out source="GENDS_FoundIndicator" target="GENDS_FoundIndicator" />
-        <camunda:in sourceExpression="&#34;&#34;" target="GENGS_serviceType" />
-        <camunda:out source="GENDS_SuccessIndicator" target="GENDS_SuccessIndicator" />
-        <camunda:out source="WorkflowException" target="WorkflowExecption" />
-      </bpmn2:extensionElements>
-      <bpmn2:incoming>SequenceFlow_1x9eh33</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_05wu9i7</bpmn2:outgoing>
-    </bpmn2:callActivity>
     <bpmn2:exclusiveGateway id="ExclusiveGateway_09wkav2" name="RollbackSDNC?" default="SequenceFlow_1uw2p9a">
       <bpmn2:incoming>SequenceFlow_06aasqh</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_11fnnkb</bpmn2:outgoing>
@@ -66,10 +52,6 @@
       <bpmn2:outgoing>SequenceFlow_1x9eh33</bpmn2:outgoing>
     </bpmn2:exclusiveGateway>
     <bpmn2:sequenceFlow id="SequenceFlow_1n7wade" name="no" sourceRef="ExclusiveGateway_0ii31dq" targetRef="PostProcess_ScriptTask" />
-    <bpmn2:sequenceFlow id="SequenceFlow_05wu9i7" sourceRef="callGenericDeleteService" targetRef="PostProcess_ScriptTask" />
-    <bpmn2:sequenceFlow id="SequenceFlow_1x9eh33" name="yes" sourceRef="ExclusiveGateway_0ii31dq" targetRef="callGenericDeleteService">
-      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("rollbackAAI" )  == "true"}]]></bpmn2:conditionExpression>
-    </bpmn2:sequenceFlow>
     <bpmn2:sequenceFlow id="SequenceFlow_0k28xib" sourceRef="CallActivity_0ak0ezb" targetRef="ScriptTask_1uxr0cx" />
     <bpmn2:callActivity id="CallActivity_0ak0ezb" name="Call SDNC Service Topology Deactivate" calledElement="sdncAdapter">
       <bpmn2:extensionElements>
@@ -98,9 +80,9 @@
       <bpmn2:outgoing>SequenceFlow_1rzlaoy</bpmn2:outgoing>
     </bpmn2:exclusiveGateway>
     <bpmn2:scriptTask id="PostProcess_ScriptTask" name="Post Process Request" scriptFormat="groovy">
-      <bpmn2:incoming>SequenceFlow_05wu9i7</bpmn2:incoming>
       <bpmn2:incoming>SequenceFlow_1n7wade</bpmn2:incoming>
       <bpmn2:incoming>SequenceFlow_1rzlaoy</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_0h3wkj4</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_01l4ssl</bpmn2:outgoing>
       <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
 def rbk = new DoCreateServiceInstanceRollback()
@@ -152,6 +134,14 @@
     </bpmn2:callActivity>
     <bpmn2:sequenceFlow id="SequenceFlow_006g9e8" sourceRef="CallActivity_0ppz9nd" targetRef="ScriptTask_1awt1ds" />
     <bpmn2:sequenceFlow id="SequenceFlow_1njogr1" sourceRef="ScriptTask_1awt1ds" targetRef="ExclusiveGateway_0ii31dq" />
+    <bpmn2:serviceTask id="Task_06o1aio" name="AAI Delete Service" camunda:class="org.openecomp.mso.bpmn.infrastructure.aai.AAIDeleteServiceInstance">
+      <bpmn2:incoming>SequenceFlow_1x9eh33</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0h3wkj4</bpmn2:outgoing>
+    </bpmn2:serviceTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_0h3wkj4" sourceRef="Task_06o1aio" targetRef="PostProcess_ScriptTask" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1x9eh33" name="yes" sourceRef="ExclusiveGateway_0ii31dq" targetRef="Task_06o1aio">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("rollbackAAI" )  == "true"}]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
   </bpmn2:process>
   <bpmn2:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
   <bpmn2:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" />
@@ -208,9 +198,6 @@
           <dc:Bounds x="350" y="82" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="CallActivity_1md4kyb_di" bpmnElement="callGenericDeleteService">
-        <dc:Bounds x="1167" y="57" width="100" height="80" />
-      </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ExclusiveGateway_09wkav2_di" bpmnElement="ExclusiveGateway_09wkav2" isMarkerVisible="true">
         <dc:Bounds x="448" y="72" width="50" height="50" />
         <bpmndi:BPMNLabel>
@@ -247,20 +234,6 @@
           <dc:Bounds x="1081" y="124.63709677419354" width="12" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_05wu9i7_di" bpmnElement="SequenceFlow_05wu9i7">
-        <di:waypoint xsi:type="dc:Point" x="1217" y="137" />
-        <di:waypoint xsi:type="dc:Point" x="1217" y="201" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1232" y="169" width="0" height="0" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_1x9eh33_di" bpmnElement="SequenceFlow_1x9eh33">
-        <di:waypoint xsi:type="dc:Point" x="1096" y="97" />
-        <di:waypoint xsi:type="dc:Point" x="1167" y="97" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1126" y="82" width="18" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0k28xib_di" bpmnElement="SequenceFlow_0k28xib">
         <di:waypoint xsi:type="dc:Point" x="639" y="97" />
         <di:waypoint xsi:type="dc:Point" x="671" y="97" />
@@ -374,6 +347,27 @@
           <dc:Bounds x="1034" y="82" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ServiceTask_0e780gv_di" bpmnElement="Task_06o1aio">
+        <dc:Bounds x="1176" y="57" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0h3wkj4_di" bpmnElement="SequenceFlow_0h3wkj4">
+        <di:waypoint xsi:type="dc:Point" x="1276" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="1296" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="1296" y="241" />
+        <di:waypoint xsi:type="dc:Point" x="1276" y="241" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1311" y="163" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1x9eh33_di" bpmnElement="SequenceFlow_1x9eh33">
+        <di:waypoint xsi:type="dc:Point" x="1096" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="1136" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="1136" y="97" />
+        <di:waypoint xsi:type="dc:Point" x="1176" y="97" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1115.9718309859154" y="71" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
     </bpmndi:BPMNPlane>
   </bpmndi:BPMNDiagram>
 </bpmn2:definitions>
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateServiceInstanceRollbackV2.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateServiceInstanceRollbackV2.bpmn
new file mode 100644
index 0000000..7853aa9
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateServiceInstanceRollbackV2.bpmn
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.8.2">
+  <bpmn:process id="DoCreateServiceInstanceRollbackV2" name="DoCreateServiceInstanceRollbackV2" isExecutable="true">
+    <bpmn:startEvent id="StartEvent_1" name="start">
+      <bpmn:outgoing>SequenceFlow_0r35zfs</bpmn:outgoing>
+    </bpmn:startEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_0r35zfs" sourceRef="StartEvent_1" targetRef="ScriptTask_2" />
+    <bpmn:endEvent id="EndEvent_1uwvw04" name="end">
+      <bpmn:incoming>SequenceFlow_1f949uf</bpmn:incoming>
+    </bpmn:endEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_1f949uf" sourceRef="ScriptTask_2" targetRef="EndEvent_1uwvw04" />
+    <bpmn:scriptTask id="ScriptTask_2" name="ServiceInstance Rollback (A&#38;AI)" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0r35zfs</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1f949uf</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def dcsir = new DoCreateServiceInstanceRollbackV2()
+dcsir.aaiServiceInstanceRollback(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:subProcess id="SubProcess_06tpqag" triggeredByEvent="true">
+      <bpmn:startEvent id="StartEvent_1n34l5n" name="error start">
+        <bpmn:outgoing>SequenceFlow_1tnfu1n</bpmn:outgoing>
+        <bpmn:errorEventDefinition />
+      </bpmn:startEvent>
+      <bpmn:sequenceFlow id="SequenceFlow_1tnfu1n" sourceRef="StartEvent_1n34l5n" targetRef="Task_11sf5id" />
+      <bpmn:endEvent id="EndEvent_1ldhg44" name="end">
+        <bpmn:incoming>SequenceFlow_0hi9120</bpmn:incoming>
+      </bpmn:endEvent>
+      <bpmn:sequenceFlow id="SequenceFlow_0hi9120" sourceRef="Task_11sf5id" targetRef="EndEvent_1ldhg44" />
+      <bpmn:scriptTask id="Task_11sf5id" name="Rollback ERROR" scriptFormat="groovy">
+        <bpmn:incoming>SequenceFlow_1tnfu1n</bpmn:incoming>
+        <bpmn:outgoing>SequenceFlow_0hi9120</bpmn:outgoing>
+        <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def dcsir = new DoCreateServiceInstanceRollbackV2()
+dcsir.rollbackError(execution)]]></bpmn:script>
+      </bpmn:scriptTask>
+    </bpmn:subProcess>
+  </bpmn:process>
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateServiceInstanceRollbackV2">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
+        <dc:Bounds x="223" y="102" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="230" y="138" width="22" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0r35zfs_di" bpmnElement="SequenceFlow_0r35zfs">
+        <di:waypoint xsi:type="dc:Point" x="259" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="325" y="120" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="247" y="99" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="EndEvent_1uwvw04_di" bpmnElement="EndEvent_1uwvw04">
+        <dc:Bounds x="490" y="102" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="499" y="142" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1f949uf_di" bpmnElement="SequenceFlow_1f949uf">
+        <di:waypoint xsi:type="dc:Point" x="425" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="490" y="120" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="412.5" y="99" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0kr8b5y_di" bpmnElement="ScriptTask_2">
+        <dc:Bounds x="325" y="80" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="SubProcess_03s2qcr_di" bpmnElement="SubProcess_06tpqag" isExpanded="true">
+        <dc:Bounds x="200" y="216" width="350" height="200" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_1nwdcsr_di" bpmnElement="StartEvent_1n34l5n">
+        <dc:Bounds x="229" y="295" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="223" y="335" width="49" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1tnfu1n_di" bpmnElement="SequenceFlow_1tnfu1n">
+        <di:waypoint xsi:type="dc:Point" x="265" y="313" />
+        <di:waypoint xsi:type="dc:Point" x="318" y="313" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="291.5" y="292" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="EndEvent_1ldhg44_di" bpmnElement="EndEvent_1ldhg44">
+        <dc:Bounds x="453" y="295" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="462" y="335" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0hi9120_di" bpmnElement="SequenceFlow_0hi9120">
+        <di:waypoint xsi:type="dc:Point" x="418" y="313" />
+        <di:waypoint xsi:type="dc:Point" x="453" y="313" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="435.5" y="292" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1w1j8ao_di" bpmnElement="Task_11sf5id">
+        <dc:Bounds x="318" y="273" width="100" height="80" />
+      </bpmndi:BPMNShape>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn:definitions>
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateServiceInstanceV2.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateServiceInstanceV2.bpmn
new file mode 100644
index 0000000..251af54
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateServiceInstanceV2.bpmn
@@ -0,0 +1,197 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.8.2">
+  <bpmn:process id="DoCreateServiceInstanceV2" name="DoCreateServiceInstanceV2" isExecutable="true">
+    <bpmn:startEvent id="StartEvent_1" name="Start">
+      <bpmn:outgoing>SequenceFlow_0g8qp84</bpmn:outgoing>
+    </bpmn:startEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_0651nnp" sourceRef="ScriptTask_1" targetRef="ScriptTask_2" />
+    <bpmn:sequenceFlow id="SequenceFlow_0u0ptz7" sourceRef="ScriptTask_2" targetRef="ScriptTask_3" />
+    <bpmn:exclusiveGateway id="ExclusiveGateway_1" name="Run SDNC Request?">
+      <bpmn:incoming>SequenceFlow_0ekno6w</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1t50vt9</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_0xhy3o1</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:sequenceFlow id="SequenceFlow_0ekno6w" sourceRef="ScriptTask_3" targetRef="ExclusiveGateway_1" />
+    <bpmn:sequenceFlow id="SequenceFlow_1t50vt9" name="Yes" sourceRef="ExclusiveGateway_1" targetRef="ScriptTask_4">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression"><![CDATA[#{execution.getVariable("callSDNC")}]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:endEvent id="EndEvent_2" name="End">
+      <bpmn:incoming>SequenceFlow_0xhy3o1</bpmn:incoming>
+    </bpmn:endEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_0xhy3o1" name="No" sourceRef="ExclusiveGateway_1" targetRef="EndEvent_2" />
+    <bpmn:endEvent id="EndEvent_1" name="End">
+      <bpmn:incoming>SequenceFlow_0eryvle</bpmn:incoming>
+    </bpmn:endEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_0eryvle" sourceRef="ScriptTask_4" targetRef="EndEvent_1" />
+    <bpmn:scriptTask id="ScriptTask_1" name="Create Service Instance (A&#38;AI)" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0g8qp84</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0651nnp</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def dcsi = new DoCreateServiceInstanceV2()
+dcsi.createServiceInstance(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:scriptTask id="ScriptTask_2" name="Create Project (A&#38;AI)" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0651nnp</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0u0ptz7</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def dcsi = new DoCreateServiceInstanceV2()
+dcsi.createProject(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:scriptTask id="ScriptTask_3" name="Create Owning Entity (A&#38;AI)" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0u0ptz7</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0ekno6w</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def dcsi = new DoCreateServiceInstanceV2()
+dcsi.createOwningEntity(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:scriptTask id="ScriptTask_4" name="Create Service Instance (SDNC)" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_1t50vt9</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0eryvle</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def dcsi = new DoCreateServiceInstanceV2()
+dcsi.sdncCreateServiceInstance(execution)]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:subProcess id="SubProcess_0lezgt7" name="Error Handling" triggeredByEvent="true">
+      <bpmn:startEvent id="ErrorEvent_2" name="Error">
+        <bpmn:outgoing>SequenceFlow_0mk8fd7</bpmn:outgoing>
+        <bpmn:errorEventDefinition />
+      </bpmn:startEvent>
+      <bpmn:endEvent id="EndEvent_3" name="End">
+        <bpmn:incoming>SequenceFlow_14mdxgk</bpmn:incoming>
+      </bpmn:endEvent>
+      <bpmn:sequenceFlow id="SequenceFlow_0mk8fd7" sourceRef="ErrorEvent_2" targetRef="SubTask_1" />
+      <bpmn:sequenceFlow id="SequenceFlow_14mdxgk" sourceRef="SubTask_1" targetRef="EndEvent_3" />
+      <bpmn:callActivity id="SubTask_1" name="DoCreate Rollback" calledElement="DoCreateServiceInstanceRollbackV2">
+        <bpmn:extensionElements>
+          <camunda:in source="sdncRollback" target="sdncRollback" />
+          <camunda:in source="aaiServiceInstanceRollback" target="aaiServiceInstanceRollback" />
+          <camunda:in source="ServiceDecomposition" target="ServiceDecomposition" />
+        </bpmn:extensionElements>
+        <bpmn:incoming>SequenceFlow_0mk8fd7</bpmn:incoming>
+        <bpmn:outgoing>SequenceFlow_14mdxgk</bpmn:outgoing>
+      </bpmn:callActivity>
+    </bpmn:subProcess>
+    <bpmn:sequenceFlow id="SequenceFlow_0g8qp84" sourceRef="StartEvent_1" targetRef="ScriptTask_1" />
+  </bpmn:process>
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DoCreateServiceInstanceV2">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
+        <dc:Bounds x="166" y="102" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="173" y="138" width="23" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0651nnp_di" bpmnElement="SequenceFlow_0651nnp">
+        <di:waypoint xsi:type="dc:Point" x="371" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="442" y="120" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="406.5" y="99" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0u0ptz7_di" bpmnElement="SequenceFlow_0u0ptz7">
+        <di:waypoint xsi:type="dc:Point" x="542" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="620" y="120" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="581" y="99" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1hnvq9n_di" bpmnElement="ExclusiveGateway_1" isMarkerVisible="true">
+        <dc:Bounds x="784" y="95" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="773" y="67" width="72" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ekno6w_di" bpmnElement="SequenceFlow_0ekno6w">
+        <di:waypoint xsi:type="dc:Point" x="720" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="784" y="120" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="752" y="99" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1t50vt9_di" bpmnElement="SequenceFlow_1t50vt9">
+        <di:waypoint xsi:type="dc:Point" x="834" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="911" y="120" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="856" y="94" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="EndEvent_1tlnfr4_di" bpmnElement="EndEvent_2">
+        <dc:Bounds x="791" y="196" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="800" y="236" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0xhy3o1_di" bpmnElement="SequenceFlow_0xhy3o1">
+        <di:waypoint xsi:type="dc:Point" x="809" y="145" />
+        <di:waypoint xsi:type="dc:Point" x="809" y="196" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="815" y="165" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="EndEvent_015y2ht_di" bpmnElement="EndEvent_1">
+        <dc:Bounds x="1078" y="102" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1087" y="142" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0eryvle_di" bpmnElement="SequenceFlow_0eryvle">
+        <di:waypoint xsi:type="dc:Point" x="1011" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="1078" y="120" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1044.5" y="99" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1qtzumy_di" bpmnElement="ScriptTask_1">
+        <dc:Bounds x="271" y="80" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_10octqt_di" bpmnElement="ScriptTask_2">
+        <dc:Bounds x="442" y="80" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_140drj4_di" bpmnElement="ScriptTask_3">
+        <dc:Bounds x="620" y="80" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1q37c16_di" bpmnElement="ScriptTask_4">
+        <dc:Bounds x="911" y="80" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="SubProcess_1p4inl6_di" bpmnElement="SubProcess_0lezgt7" isExpanded="true">
+        <dc:Bounds x="368" y="268" width="350" height="200" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_0g6sxcc_di" bpmnElement="ErrorEvent_2">
+        <dc:Bounds x="409" y="335" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="415" y="375" width="25" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_061qhx5_di" bpmnElement="EndEvent_3">
+        <dc:Bounds x="623" y="335" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="632" y="375" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0g8qp84_di" bpmnElement="SequenceFlow_0g8qp84">
+        <di:waypoint xsi:type="dc:Point" x="202" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="271" y="120" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="191.5" y="99" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0mk8fd7_di" bpmnElement="SequenceFlow_0mk8fd7">
+        <di:waypoint xsi:type="dc:Point" x="445" y="353" />
+        <di:waypoint xsi:type="dc:Point" x="482" y="353" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="463.5" y="332" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_14mdxgk_di" bpmnElement="SequenceFlow_14mdxgk">
+        <di:waypoint xsi:type="dc:Point" x="582" y="353" />
+        <di:waypoint xsi:type="dc:Point" x="623" y="353" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="602.5" y="332" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_1jzchuz_di" bpmnElement="SubTask_1">
+        <dc:Bounds x="482" y="313" width="100" height="80" />
+      </bpmndi:BPMNShape>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn:definitions>
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateVfModule.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateVfModule.bpmn
index 5383dc8..e6d25a4 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateVfModule.bpmn
+++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateVfModule.bpmn
@@ -75,7 +75,7 @@
     </bpmn2:callActivity>
     <bpmn2:scriptTask id="PostProcessSDNCAssignRequest" name="PostProcess SDNC Assign  Request" scriptFormat="groovy">
       <bpmn2:incoming>SequenceFlow_20</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_22</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_1nh92s8</bpmn2:outgoing>
       <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
 
 String response = execution.getVariable("DCVFM_assignSDNCAdapterResponse")
@@ -93,7 +93,8 @@
     <bpmn2:sequenceFlow id="SequenceFlow_18" name="" sourceRef="PreProcessSDNCAssignRequest" targetRef="CallSDNCAdapterVDModuleTopologyAssign" />
     <bpmn2:sequenceFlow id="SequenceFlow_20" name="" sourceRef="CallSDNCAdapterVDModuleTopologyAssign" targetRef="PostProcessSDNCAssignRequest" />
     <bpmn2:scriptTask id="PreProcessSDNCGetRequest" name="PreProcess SDNC GET Request" scriptFormat="groovy">
-      <bpmn2:incoming>SequenceFlow_22</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_0p61zug</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_0aegg0r</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_23</bpmn2:outgoing>
       <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
 def doCreateVfModule = new DoCreateVfModule()
@@ -112,7 +113,6 @@
       <bpmn2:incoming>SequenceFlow_23</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_24</bpmn2:outgoing>
     </bpmn2:callActivity>
-    <bpmn2:sequenceFlow id="SequenceFlow_22" name="" sourceRef="PostProcessSDNCAssignRequest" targetRef="PreProcessSDNCGetRequest" />
     <bpmn2:sequenceFlow id="SequenceFlow_23" name="" sourceRef="PreProcessSDNCGetRequest" targetRef="CallSDNCAdapterVFModuleTopologyGET" />
     <bpmn2:sequenceFlow id="SequenceFlow_24" name="" sourceRef="CallSDNCAdapterVFModuleTopologyGET" targetRef="PostProcessSDNCGetRequest" />
     <bpmn2:scriptTask id="PostProcessSDNCGetRequest" name="PostProcess SDNC GET Request" scriptFormat="groovy">
@@ -174,12 +174,9 @@
     </bpmn2:scriptTask>
     <bpmn2:exclusiveGateway id="ExclusiveGateway_5" name="Is volume_group_id specified?" default="SequenceFlow_30">
       <bpmn2:incoming>SequenceFlow_14</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_28</bpmn2:outgoing>
       <bpmn2:outgoing>SequenceFlow_30</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_28</bpmn2:outgoing>
     </bpmn2:exclusiveGateway>
-    <bpmn2:sequenceFlow id="SequenceFlow_28" name="yes" sourceRef="ExclusiveGateway_5" targetRef="PrepareCreateAAIVfModuleVolumeGroupRequest">
-      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCVFM_volumeGroupId") != null && execution.getVariable("DCVFM_volumeGroupId") != "" }]]></bpmn2:conditionExpression>
-    </bpmn2:sequenceFlow>
     <bpmn2:sequenceFlow id="SequenceFlow_30" name="no" sourceRef="ExclusiveGateway_5" targetRef="ExclusiveGateway_6" />
     <bpmn2:sequenceFlow id="SequenceFlow_5" name="" sourceRef="PreProcessUpdateAAIVfModule_1" targetRef="UpdateAAIVfModule_1" />
     <bpmn2:sequenceFlow id="SequenceFlow_10" name="" sourceRef="UpdateAAIVfModule_1" targetRef="PreProcessSDNCActivateRequest" />
@@ -320,7 +317,7 @@
 def doCreateVfModule = new DoCreateVfModule()
 doCreateVfModule.preProcessRequest(execution)]]></bpmn2:script>
     </bpmn2:scriptTask>
-    <bpmn2:sequenceFlow id="SequenceFlow_4" name="" sourceRef="PreProcessRequest" targetRef="ExclusiveGateway_0ffvqla" />
+    <bpmn2:sequenceFlow id="SequenceFlow_4" name="" sourceRef="PreProcessRequest" targetRef="ExclusiveGateway_19933zh" />
     <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_1" name="To DoCreateVfModule">
       <bpmn2:incoming>SequenceFlow_1f53tby</bpmn2:incoming>
       <bpmn2:incoming>SequenceFlow_0270n5c</bpmn2:incoming>
@@ -453,7 +450,8 @@
     </bpmn2:callActivity>
     <bpmn2:sequenceFlow id="SequenceFlow_1f53tby" sourceRef="Task_0kuj2a1" targetRef="IntermediateThrowEvent_1" />
     <bpmn2:exclusiveGateway id="ExclusiveGateway_0ffvqla" name="Is vf_module_name specified?" default="SequenceFlow_0270n5c">
-      <bpmn2:incoming>SequenceFlow_4</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_1y1ttqe</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_0lilmm3</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_0270n5c</bpmn2:outgoing>
       <bpmn2:outgoing>SequenceFlow_05og7iw</bpmn2:outgoing>
     </bpmn2:exclusiveGateway>
@@ -492,6 +490,7 @@
           <camunda:out source="rollbackError" target="rollbackError" />
           <camunda:in source="disableRollback" target="disableRollback" />
           <camunda:in source="sdncVersion" target="sdncVersion" />
+          <camunda:in source="DCVFM_aLaCarte" target="aLaCarte" />
         </bpmn2:extensionElements>
         <bpmn2:incoming>SequenceFlow_1i1q78e</bpmn2:incoming>
         <bpmn2:outgoing>SequenceFlow_0112l2c</bpmn2:outgoing>
@@ -532,6 +531,174 @@
       </bpmn2:scriptTask>
       <bpmn2:sequenceFlow id="SequenceFlow_1pgo10r" sourceRef="Task_1fm09pi" targetRef="EndEvent_0wsdptv" />
     </bpmn2:subProcess>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_0jw7ymg" name="Is 2 Phased Design?" default="SequenceFlow_006rnym">
+      <bpmn2:incoming>SequenceFlow_0cc17yk</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_17cp3tn</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_006rnym</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_28" name="yes" sourceRef="ExclusiveGateway_5" targetRef="PrepareCreateAAIVfModuleVolumeGroupRequest">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCVFM_volumeGroupId") != null && execution.getVariable("DCVFM_volumeGroupId") != "" }]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_19933zh" name="Is aLaCarte?" default="SequenceFlow_1y1ttqe">
+      <bpmn2:incoming>SequenceFlow_4</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1y1ttqe</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_1y8q87e</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_1y1ttqe" name="no" sourceRef="ExclusiveGateway_19933zh" targetRef="ExclusiveGateway_0ffvqla" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_02fd6gx" name="Is already PendingActivation or Assigned?" default="SequenceFlow_0lilmm3">
+      <bpmn2:incoming>SequenceFlow_1sf1091</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0lilmm3</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_15i583d</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_0lilmm3" name="no" sourceRef="ExclusiveGateway_02fd6gx" targetRef="ExclusiveGateway_0ffvqla" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1y8q87e" name="yes" sourceRef="ExclusiveGateway_19933zh" targetRef="Task_14n44kb">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("DCVFM_aLaCarte") == true]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_1sf1091" sourceRef="Task_14n44kb" targetRef="ExclusiveGateway_02fd6gx" />
+    <bpmn2:sequenceFlow id="SequenceFlow_17cp3tn" name="yes" sourceRef="ExclusiveGateway_0jw7ymg" targetRef="Task_0kqh1of">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("DCVFM_twoPhaseDesign") == true]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:endEvent id="EndEvent_0pd6bbj">
+      <bpmn2:incoming>SequenceFlow_00bh7m7</bpmn2:incoming>
+      <bpmn2:terminateEventDefinition />
+    </bpmn2:endEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_15i583d" name="yes" sourceRef="ExclusiveGateway_02fd6gx" targetRef="ExclusiveGateway_1f6x9ii">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("DCVFM_orchestrationStatus") == "PendingActivation" || execution.getVariable("DCVFM_orchestrationStatus") == "Assigned"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_0gsliyw" name="Is aLaCarte?" default="SequenceFlow_1iyt5i4">
+      <bpmn2:incoming>SequenceFlow_1nh92s8</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_16mgvsd</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_1iyt5i4</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_16mgvsd" name="yes" sourceRef="ExclusiveGateway_0gsliyw" targetRef="Task_08tnqe1">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("DCVFM_aLaCarte") == true]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_1nh92s8" sourceRef="PostProcessSDNCAssignRequest" targetRef="ExclusiveGateway_0gsliyw" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0cc17yk" sourceRef="Task_08tnqe1" targetRef="ExclusiveGateway_0jw7ymg" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1iyt5i4" name="no" sourceRef="ExclusiveGateway_0gsliyw" targetRef="Task_19zw1li" />
+    <bpmn2:sequenceFlow id="SequenceFlow_006rnym" name="no" sourceRef="ExclusiveGateway_0jw7ymg" targetRef="Task_19zw1li" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0ynd0iy" sourceRef="Task_0kqh1of" targetRef="Task_08z2aai" />
+    <bpmn2:sequenceFlow id="SequenceFlow_00bh7m7" sourceRef="Task_16p51r4" targetRef="EndEvent_0pd6bbj" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1mnipp8" sourceRef="Task_08z2aai" targetRef="Task_16p51r4" />
+    <bpmn2:callActivity id="Task_08z2aai" name="Update AAI VF Module PendingActivation" calledElement="UpdateAAIVfModule">
+      <bpmn2:extensionElements>
+        <camunda:in source="DCVFM_updateAAIVfModuleRequest" target="UpdateAAIVfModuleRequest" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="WorkflowResponse" target="DCVFM_updateAAIVfModuleResponse" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_0ynd0iy</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1mnipp8</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="Task_0kqh1of" name="PrepareUpdateAAIVfModulePendingActivation" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_17cp3tn</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0ynd0iy</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def doCreateVfModule = new DoCreateVfModule()
+doCreateVfModule.preProcessUpdateAAIVfModuleRequestStatus(execution, 'PendingActivation')]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="Task_08tnqe1" name="Query Catalog DB" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_16mgvsd</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0cc17yk</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def doCreateVfModule = new DoCreateVfModule()
+doCreateVfModule.queryCatalogDB(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="Task_14n44kb" name="Query AAI for Orchestration Status" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1y8q87e</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1sf1091</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def doCreateVfModule = new DoCreateVfModule()
+doCreateVfModule.queryAAIVfModuleForStatus(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="Task_16p51r4" name="Set Success Indicator 1st Phase" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_1mnipp8</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_00bh7m7</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def doCreateVfModule = new DoCreateVfModule()
+doCreateVfModule.setSuccessIndicator(execution, true)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_1f6x9ii" name="Is volume_group_id specified for stage 2?" default="SequenceFlow_0tfrcnc">
+      <bpmn2:incoming>SequenceFlow_15i583d</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0tfrcnc</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0oadvvx</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_0tfrcnc" name="no" sourceRef="ExclusiveGateway_1f6x9ii" targetRef="ExclusiveGateway_09r5rvt" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0oadvvx" name="yes" sourceRef="ExclusiveGateway_1f6x9ii" targetRef="Task_0dx8gpp">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCVFM_volumeGroupId") != null && execution.getVariable("DCVFM_volumeGroupId") != "" }]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_09r5rvt">
+      <bpmn2:incoming>SequenceFlow_0tfrcnc</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_0c6p4aa</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1qzw172</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_1qzw172" sourceRef="ExclusiveGateway_09r5rvt" targetRef="ExclusiveGateway_04msdir" />
+    <bpmn2:sequenceFlow id="SequenceFlow_03batve" sourceRef="Task_0dx8gpp" targetRef="Task_0e8s9xm" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0c6p4aa" sourceRef="Task_0e8s9xm" targetRef="ExclusiveGateway_09r5rvt" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_04msdir" name="Is Base VF Module for stage 2?" default="SequenceFlow_0p3cspl">
+      <bpmn2:incoming>SequenceFlow_1qzw172</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0xed5sn</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0p3cspl</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_0xed5sn" name="yes" sourceRef="ExclusiveGateway_04msdir" targetRef="ExclusiveGateway_1biy4yg">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("DCVFM_isBaseVfModule") == "true"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_0p3cspl" name="no" sourceRef="ExclusiveGateway_04msdir" targetRef="Task_0cdjxcd" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_1biy4yg">
+      <bpmn2:incoming>SequenceFlow_0xed5sn</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_1k7xbcu</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0p61zug</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_0p61zug" sourceRef="ExclusiveGateway_1biy4yg" targetRef="PreProcessSDNCGetRequest" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1k7xbcu" sourceRef="Task_0cdjxcd" targetRef="ExclusiveGateway_1biy4yg" />
+    <bpmn2:scriptTask id="Task_0dx8gpp" name="Query Cloud Region For Stage 2" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0oadvvx</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_03batve</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def doCreateVfModule = new DoCreateVfModule()
+return doCreateVfModule.queryCloudRegion(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="Task_0e8s9xm" name="Confirm Volume Group Tenant" calledElement="ConfirmVolumeGroupTenant">
+      <bpmn2:extensionElements>
+        <camunda:in source="DCVFM_volumeGroupId" target="volumeGroupId" />
+        <camunda:in source="DCVFM_tenantId" target="tenantId" />
+        <camunda:in source="DCVFM_cloudRegionForVolume" target="aicCloudRegion" />
+        <camunda:in source="mso-request-id" target="mso-request-id" />
+        <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:out source="ConfirmVolumeGroupTenantResponse" target="DCVFM_volumeGroupStackId" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_03batve</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0c6p4aa</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="Task_0cdjxcd" name="Query AAI Vf Module for Stage 2" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_0p3cspl</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1k7xbcu</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def doCreateVfModule = new DoCreateVfModule()
+doCreateVfModule.queryAAIVfModule(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:scriptTask id="Task_19zw1li" name="PrepareUpdateAAIVfModuleAssign" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_006rnym</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_1iyt5i4</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0thm33s</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def doCreateVfModule = new DoCreateVfModule()
+doCreateVfModule.preProcessUpdateAAIVfModuleRequestStatus(execution, 'Assigned')]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:callActivity id="Task_01b1fio" name="Update AAI VF Module Assigned" calledElement="UpdateAAIVfModule">
+      <bpmn2:extensionElements>
+        <camunda:in source="DCVFM_updateAAIVfModuleRequest" target="UpdateAAIVfModuleRequest" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:out source="WorkflowResponse" target="DCVFM_updateAAIVfModuleResponse" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_0thm33s</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0aegg0r</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:sequenceFlow id="SequenceFlow_0thm33s" sourceRef="Task_19zw1li" targetRef="Task_01b1fio" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0aegg0r" sourceRef="Task_01b1fio" targetRef="PreProcessSDNCGetRequest" />
   </bpmn2:process>
   <bpmn2:message id="Message_1" name="DoCreateVfModuleRequest" />
   <bpmn2:error id="Error_1" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
@@ -560,16 +727,16 @@
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="_BPMNShape_IntermediateThrowEvent_22" bpmnElement="IntermediateThrowEvent_1">
-        <dc:Bounds x="530" y="153" width="36" height="36" />
+        <dc:Bounds x="828" y="153" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="571" y="173" width="86" height="36" />
+          <dc:Bounds x="869" y="173" width="86" height="36" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_157" bpmnElement="CallSDNCAdapterVDModuleTopologyAssign">
         <dc:Bounds x="266" y="672" width="121" height="94" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_158" bpmnElement="CallSDNCAdapterVFModuleTopologyGET">
-        <dc:Bounds x="744" y="670" width="133" height="97" />
+        <dc:Bounds x="254" y="1029" width="133" height="97" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_90" bpmnElement="IsVolumeGroupIdSpecified" isMarkerVisible="true">
         <dc:Bounds x="144" y="368" width="50" height="50" />
@@ -594,53 +761,44 @@
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_173" bpmnElement="CallVNFAdapterVFModuleCreate">
-        <dc:Bounds x="1236" y="672" width="121" height="97" />
+        <dc:Bounds x="746" y="1031" width="121" height="97" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_174" bpmnElement="UpdateAAIVfModule_1">
-        <dc:Bounds x="768" y="830" width="117" height="97" />
+        <dc:Bounds x="717" y="1211" width="117" height="97" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_175" bpmnElement="CallSDNCAdapterVFModuleTopologyActivate">
-        <dc:Bounds x="1090" y="828" width="119" height="99" />
+        <dc:Bounds x="1039" y="1209" width="119" height="99" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_92" bpmnElement="ExclusiveGateway_5" isMarkerVisible="true">
-        <dc:Bounds x="1435" y="853" width="50" height="50" />
+        <dc:Bounds x="1384" y="1234" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1432" y="825" width="86" height="36" />
+          <dc:Bounds x="1381" y="1206" width="86" height="36" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_176" bpmnElement="CreateAAIVfModuleVolumeGroup">
-        <dc:Bounds x="1693" y="986" width="121" height="112" />
+        <dc:Bounds x="1688" y="1204" width="121" height="112" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_28" bpmnElement="SequenceFlow_28" sourceElement="_BPMNShape_ExclusiveGateway_92" targetElement="_BPMNShape_Task_7">
-        <di:waypoint xsi:type="dc:Point" x="1460" y="903" />
-        <di:waypoint xsi:type="dc:Point" x="1460" y="1042" />
-        <di:waypoint xsi:type="dc:Point" x="1520" y="1042" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1452" y="928" width="18" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_93" bpmnElement="ExclusiveGateway_6" isMarkerVisible="true">
-        <dc:Bounds x="1818" y="854" width="50" height="50" />
+        <dc:Bounds x="1813" y="1072" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1843" y="909" width="0" height="0" />
+          <dc:Bounds x="1838" y="1127" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_29" bpmnElement="SequenceFlow_29" sourceElement="_BPMNShape_ScriptTask_176" targetElement="_BPMNShape_ExclusiveGateway_93">
-        <di:waypoint xsi:type="dc:Point" x="1813" y="1042" />
-        <di:waypoint xsi:type="dc:Point" x="1843" y="1042" />
-        <di:waypoint xsi:type="dc:Point" x="1843" y="944" />
-        <di:waypoint xsi:type="dc:Point" x="1843" y="904" />
+        <di:waypoint xsi:type="dc:Point" x="1808" y="1260" />
+        <di:waypoint xsi:type="dc:Point" x="1838" y="1260" />
+        <di:waypoint xsi:type="dc:Point" x="1838" y="1162" />
+        <di:waypoint xsi:type="dc:Point" x="1838" y="1122" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1839" y="1042" width="0" height="0" />
+          <dc:Bounds x="1834" y="1260" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_30" bpmnElement="SequenceFlow_30" sourceElement="_BPMNShape_ExclusiveGateway_92" targetElement="_BPMNShape_ExclusiveGateway_93">
-        <di:waypoint xsi:type="dc:Point" x="1485" y="878" />
-        <di:waypoint xsi:type="dc:Point" x="1651" y="878" />
-        <di:waypoint xsi:type="dc:Point" x="1651" y="879" />
-        <di:waypoint xsi:type="dc:Point" x="1818" y="879" />
+        <di:waypoint xsi:type="dc:Point" x="1409" y="1234" />
+        <di:waypoint xsi:type="dc:Point" x="1409" y="1097" />
+        <di:waypoint xsi:type="dc:Point" x="1813" y="1097" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1519" y="878" width="12" height="12" />
+          <dc:Bounds x="1419" y="1143.6746987951808" width="12" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_15" bpmnElement="SequenceFlow_15" sourceElement="_BPMNShape_IntermediateCatchEvent_24" targetElement="_BPMNShape_ExclusiveGateway_90">
@@ -693,9 +851,9 @@
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_4" bpmnElement="SequenceFlow_4" sourceElement="_BPMNShape_ScriptTask_124" targetElement="_BPMNShape_IntermediateThrowEvent_22">
         <di:waypoint xsi:type="dc:Point" x="247" y="171" />
-        <di:waypoint xsi:type="dc:Point" x="294" y="171" />
+        <di:waypoint xsi:type="dc:Point" x="302" y="171" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="271" y="156" width="0" height="0" />
+          <dc:Bounds x="275" y="156" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_6" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_ExclusiveGateway_91" targetElement="_BPMNShape_ScriptTask_156">
@@ -747,134 +905,140 @@
         <di:waypoint xsi:type="dc:Point" x="435" y="721" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_213" bpmnElement="PreProcessSDNCGetRequest">
-        <dc:Bounds x="588" y="672" width="121" height="94" />
+        <dc:Bounds x="98" y="1031" width="121" height="94" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_214" bpmnElement="PostProcessSDNCGetRequest">
-        <dc:Bounds x="924" y="672" width="121" height="94" />
+        <dc:Bounds x="434" y="1031" width="121" height="94" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_22" bpmnElement="SequenceFlow_22" sourceElement="_BPMNShape_ScriptTask_179" targetElement="_BPMNShape_ScriptTask_213">
-        <di:waypoint xsi:type="dc:Point" x="555" y="721" />
-        <di:waypoint xsi:type="dc:Point" x="572" y="721" />
-        <di:waypoint xsi:type="dc:Point" x="572" y="719" />
-        <di:waypoint xsi:type="dc:Point" x="588" y="719" />
-      </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_23" bpmnElement="SequenceFlow_23" sourceElement="_BPMNShape_ScriptTask_213" targetElement="_BPMNShape_ScriptTask_158">
-        <di:waypoint xsi:type="dc:Point" x="708" y="719" />
-        <di:waypoint xsi:type="dc:Point" x="726" y="719" />
-        <di:waypoint xsi:type="dc:Point" x="726" y="718" />
-        <di:waypoint xsi:type="dc:Point" x="744" y="718" />
+        <di:waypoint xsi:type="dc:Point" x="218" y="1078" />
+        <di:waypoint xsi:type="dc:Point" x="236" y="1078" />
+        <di:waypoint xsi:type="dc:Point" x="236" y="1077" />
+        <di:waypoint xsi:type="dc:Point" x="254" y="1077" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="251" y="1068" width="0" height="0" />
+        </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_24" bpmnElement="SequenceFlow_24" sourceElement="_BPMNShape_ScriptTask_158" targetElement="_BPMNShape_ScriptTask_214">
-        <di:waypoint xsi:type="dc:Point" x="876" y="718" />
-        <di:waypoint xsi:type="dc:Point" x="899" y="718" />
-        <di:waypoint xsi:type="dc:Point" x="899" y="719" />
-        <di:waypoint xsi:type="dc:Point" x="924" y="719" />
+        <di:waypoint xsi:type="dc:Point" x="386" y="1077" />
+        <di:waypoint xsi:type="dc:Point" x="409" y="1077" />
+        <di:waypoint xsi:type="dc:Point" x="409" y="1078" />
+        <di:waypoint xsi:type="dc:Point" x="434" y="1078" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="897" y="719" width="6" height="6" />
+          <dc:Bounds x="410" y="1078" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="_BPMNShape_Task_2" bpmnElement="PreProcessUpdateAAIVfModule_1">
-        <dc:Bounds x="609" y="830" width="118" height="97" />
+        <dc:Bounds x="558" y="1211" width="118" height="97" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="_BPMNShape_Task_33" bpmnElement="PreProcessSDNCActivateRequest">
-        <dc:Bounds x="935" y="829" width="118" height="98" />
+        <dc:Bounds x="884" y="1210" width="118" height="98" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="_BPMNShape_Task_4" bpmnElement="PostProcessSDNCActivateRequest">
-        <dc:Bounds x="1252" y="830" width="121" height="95" />
+        <dc:Bounds x="1201" y="1211" width="121" height="95" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="SequenceFlow_5" sourceElement="_BPMNShape_Task_2" targetElement="_BPMNShape_ScriptTask_174">
-        <di:waypoint xsi:type="dc:Point" x="727" y="878" />
-        <di:waypoint xsi:type="dc:Point" x="768" y="878" />
+        <di:waypoint xsi:type="dc:Point" x="676" y="1259" />
+        <di:waypoint xsi:type="dc:Point" x="717" y="1259" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="748" y="853" width="0" height="0" />
+          <dc:Bounds x="697" y="1234" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_10" bpmnElement="SequenceFlow_10" sourceElement="_BPMNShape_ScriptTask_174" targetElement="_BPMNShape_Task_33">
-        <di:waypoint xsi:type="dc:Point" x="884" y="878" />
-        <di:waypoint xsi:type="dc:Point" x="935" y="878" />
+        <di:waypoint xsi:type="dc:Point" x="833" y="1259" />
+        <di:waypoint xsi:type="dc:Point" x="884" y="1259" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="910" y="853" width="0" height="0" />
+          <dc:Bounds x="859" y="1234" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_12" bpmnElement="SequenceFlow_12" sourceElement="_BPMNShape_Task_33" targetElement="_BPMNShape_ScriptTask_175">
-        <di:waypoint xsi:type="dc:Point" x="1053" y="878" />
-        <di:waypoint xsi:type="dc:Point" x="1071" y="878" />
-        <di:waypoint xsi:type="dc:Point" x="1071" y="877" />
-        <di:waypoint xsi:type="dc:Point" x="1090" y="877" />
+        <di:waypoint xsi:type="dc:Point" x="1002" y="1259" />
+        <di:waypoint xsi:type="dc:Point" x="1020" y="1259" />
+        <di:waypoint xsi:type="dc:Point" x="1020" y="1258" />
+        <di:waypoint xsi:type="dc:Point" x="1039" y="1258" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1086" y="868" width="0" height="0" />
+          <dc:Bounds x="1035" y="1249" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_13" bpmnElement="SequenceFlow_13" sourceElement="_BPMNShape_ScriptTask_175" targetElement="_BPMNShape_Task_4">
-        <di:waypoint xsi:type="dc:Point" x="1208" y="877" />
-        <di:waypoint xsi:type="dc:Point" x="1252" y="877" />
+        <di:waypoint xsi:type="dc:Point" x="1157" y="1258" />
+        <di:waypoint xsi:type="dc:Point" x="1201" y="1258" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1230" y="852" width="0" height="0" />
+          <dc:Bounds x="1179" y="1233" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_14" bpmnElement="SequenceFlow_14" sourceElement="_BPMNShape_Task_4" targetElement="_BPMNShape_ExclusiveGateway_92">
-        <di:waypoint xsi:type="dc:Point" x="1372" y="877" />
-        <di:waypoint xsi:type="dc:Point" x="1404" y="877" />
-        <di:waypoint xsi:type="dc:Point" x="1404" y="878" />
-        <di:waypoint xsi:type="dc:Point" x="1435" y="878" />
+        <di:waypoint xsi:type="dc:Point" x="1321" y="1258" />
+        <di:waypoint xsi:type="dc:Point" x="1353" y="1258" />
+        <di:waypoint xsi:type="dc:Point" x="1353" y="1259" />
+        <di:waypoint xsi:type="dc:Point" x="1384" y="1259" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1419" y="868" width="0" height="0" />
+          <dc:Bounds x="1368" y="1249" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="_BPMNShape_EndEvent_175" bpmnElement="EndEvent_1">
-        <dc:Bounds x="2112" y="861" width="36" height="36" />
+        <dc:Bounds x="2107" y="1079" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="2130" y="902" width="0" height="0" />
+          <dc:Bounds x="2125" y="1120" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_16" bpmnElement="SequenceFlow_16" sourceElement="_BPMNShape_ExclusiveGateway_93" targetElement="_BPMNShape_ScriptTask_218">
-        <di:waypoint xsi:type="dc:Point" x="1868" y="879" />
-        <di:waypoint xsi:type="dc:Point" x="1934" y="878" />
+        <di:waypoint xsi:type="dc:Point" x="1863" y="1097" />
+        <di:waypoint xsi:type="dc:Point" x="1929" y="1096" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1901" y="863.5" width="0" height="0" />
+          <dc:Bounds x="1896" y="1082" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="_BPMNShape_IntermediateThrowEvent_45" bpmnElement="IntermediateThrowEvent_2">
-        <dc:Bounds x="1771" y="701" width="36" height="36" />
+        <dc:Bounds x="1281" y="1060" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1747" y="742" width="84" height="36" />
+          <dc:Bounds x="1257" y="1101" width="84" height="36" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="_BPMNShape_IntermediateCatchEvent_30" bpmnElement="IntermediateCatchEvent_3">
-        <dc:Bounds x="24" y="860" width="36" height="36" />
+        <dc:Bounds x="-27" y="1241" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="16" y="901" width="84" height="24" />
+          <dc:Bounds x="-35" y="1282" width="84" height="24" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="_BPMNShape_Task_7" bpmnElement="PrepareCreateAAIVfModuleVolumeGroupRequest">
-        <dc:Bounds x="1520" y="986" width="121" height="112" />
+        <dc:Bounds x="1502" y="1204" width="121" height="112" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_3" sourceElement="_BPMNShape_Task_7" targetElement="_BPMNShape_ScriptTask_176">
-        <di:waypoint xsi:type="dc:Point" x="1640" y="1042" />
-        <di:waypoint xsi:type="dc:Point" x="1693" y="1042" />
+        <di:waypoint xsi:type="dc:Point" x="1623" y="1260" />
+        <di:waypoint xsi:type="dc:Point" x="1688" y="1260" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1667" y="1017" width="0" height="0" />
+          <dc:Bounds x="1656" y="1245" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="_BPMNShape_Task_25" bpmnElement="PreProcessVNFAdapterRequest">
-        <dc:Bounds x="1073" y="672" width="121" height="96" />
+        <dc:Bounds x="583" y="1031" width="121" height="96" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="_BPMNShape_Task_35" bpmnElement="PostProcessVNFAdapterRequest">
-        <dc:Bounds x="1397" y="674" width="116" height="92" />
+        <dc:Bounds x="907" y="1033" width="116" height="92" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_31" bpmnElement="SequenceFlow_31" sourceElement="_BPMNShape_ScriptTask_214" targetElement="_BPMNShape_Task_25">
-        <di:waypoint xsi:type="dc:Point" x="1044" y="719" />
-        <di:waypoint xsi:type="dc:Point" x="1059" y="719" />
-        <di:waypoint xsi:type="dc:Point" x="1059" y="720" />
-        <di:waypoint xsi:type="dc:Point" x="1073" y="720" />
+        <di:waypoint xsi:type="dc:Point" x="554" y="1078" />
+        <di:waypoint xsi:type="dc:Point" x="569" y="1078" />
+        <di:waypoint xsi:type="dc:Point" x="569" y="1079" />
+        <di:waypoint xsi:type="dc:Point" x="583" y="1079" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="584" y="1069" width="0" height="0" />
+        </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_32" bpmnElement="SequenceFlow_32" sourceElement="_BPMNShape_Task_25" targetElement="_BPMNShape_ScriptTask_173">
-        <di:waypoint xsi:type="dc:Point" x="1193" y="720" />
-        <di:waypoint xsi:type="dc:Point" x="1236" y="720" />
+        <di:waypoint xsi:type="dc:Point" x="703" y="1079" />
+        <di:waypoint xsi:type="dc:Point" x="746" y="1079" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="725" y="1054" width="0" height="0" />
+        </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_33" bpmnElement="SequenceFlow_33" sourceElement="_BPMNShape_ScriptTask_173" targetElement="_BPMNShape_Task_35">
-        <di:waypoint xsi:type="dc:Point" x="1356" y="720" />
-        <di:waypoint xsi:type="dc:Point" x="1397" y="720" />
+        <di:waypoint xsi:type="dc:Point" x="866" y="1079" />
+        <di:waypoint xsi:type="dc:Point" x="907" y="1079" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="887" y="1054" width="0" height="0" />
+        </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_215" bpmnElement="QueryAAIVfModule">
         <dc:Bounds x="1224" y="516" width="125" height="92" />
@@ -928,13 +1092,13 @@
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_218" bpmnElement="ScriptTask_setSuccess">
-        <dc:Bounds x="1934" y="831" width="128" height="95" />
+        <dc:Bounds x="1929" y="1049" width="128" height="95" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_7" bpmnElement="SequenceFlow_7" sourceElement="_BPMNShape_ScriptTask_218" targetElement="_BPMNShape_EndEvent_175">
-        <di:waypoint xsi:type="dc:Point" x="2062" y="879" />
-        <di:waypoint xsi:type="dc:Point" x="2112" y="878" />
+        <di:waypoint xsi:type="dc:Point" x="2057" y="1097" />
+        <di:waypoint xsi:type="dc:Point" x="2107" y="1096" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="2087" y="863.5" width="0" height="0" />
+          <dc:Bounds x="2082" y="1082" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_254" bpmnElement="QueryCloudRegion">
@@ -970,110 +1134,109 @@
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ExclusiveGateway_183x8vk_di" bpmnElement="ExclusiveGateway_183x8vk" isMarkerVisible="true">
-        <dc:Bounds x="1565.9780439121755" y="696" width="50" height="50" />
+        <dc:Bounds x="1076" y="1055" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1546" y="746" width="89" height="36" />
+          <dc:Bounds x="1056" y="1105" width="89" height="36" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_1ushk1d_di" bpmnElement="SequenceFlow_1ushk1d">
-        <di:waypoint xsi:type="dc:Point" x="1513" y="720" />
-        <di:waypoint xsi:type="dc:Point" x="1566" y="721" />
+        <di:waypoint xsi:type="dc:Point" x="1023" y="1079" />
+        <di:waypoint xsi:type="dc:Point" x="1076" y="1080" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1540" y="705.5" width="0" height="0" />
+          <dc:Bounds x="1050" y="1065" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0ery1pk_di" bpmnElement="SequenceFlow_0ery1pk">
-        <di:waypoint xsi:type="dc:Point" x="1591" y="696" />
-        <di:waypoint xsi:type="dc:Point" x="1591" y="616" />
-        <di:waypoint xsi:type="dc:Point" x="1621" y="616" />
+        <di:waypoint xsi:type="dc:Point" x="1101" y="1055" />
+        <di:waypoint xsi:type="dc:Point" x="1101" y="979" />
+        <di:waypoint xsi:type="dc:Point" x="1147" y="979" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1558" y="658" width="18" height="12" />
+          <dc:Bounds x="1054" y="1267" width="18" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0xfanpi_di" bpmnElement="SequenceFlow_0xfanpi">
-        <di:waypoint xsi:type="dc:Point" x="1616" y="721" />
-        <di:waypoint xsi:type="dc:Point" x="1771" y="719" />
+        <di:waypoint xsi:type="dc:Point" x="1126" y="1080" />
+        <di:waypoint xsi:type="dc:Point" x="1281" y="1078" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1688" y="695" width="12" height="12" />
+          <dc:Bounds x="1198" y="1054" width="12" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0abffyj_di" bpmnElement="SequenceFlow_0abffyj">
-        <di:waypoint xsi:type="dc:Point" x="1721" y="616" />
-        <di:waypoint xsi:type="dc:Point" x="1746" y="616" />
-        <di:waypoint xsi:type="dc:Point" x="1746" y="719" />
-        <di:waypoint xsi:type="dc:Point" x="1771" y="719" />
+        <di:waypoint xsi:type="dc:Point" x="1247" y="979" />
+        <di:waypoint xsi:type="dc:Point" x="1299" y="979" />
+        <di:waypoint xsi:type="dc:Point" x="1299" y="1060" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1761" y="667.5" width="0" height="0" />
+          <dc:Bounds x="1273" y="964" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ScriptTask_1dv7amn_di" bpmnElement="CreateNetworkPoliciesInAAI">
-        <dc:Bounds x="1621" y="576" width="100" height="80" />
+        <dc:Bounds x="1147" y="939" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ExclusiveGateway_0f54imv_di" bpmnElement="ExclusiveGateway_0f54imv" isMarkerVisible="true">
-        <dc:Bounds x="114.59500000000003" y="854" width="50" height="50" />
+        <dc:Bounds x="64" y="1235" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="101" y="819" width="77" height="24" />
+          <dc:Bounds x="51" y="1200" width="75" height="24" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ExclusiveGateway_1edqxlf_di" bpmnElement="ExclusiveGateway_1edqxlf" isMarkerVisible="true">
-        <dc:Bounds x="482.595" y="854" width="50" height="50" />
+        <dc:Bounds x="432" y="1235" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="508" y="904" width="0" height="0" />
+          <dc:Bounds x="457" y="1285" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0bi38s7_di" bpmnElement="SequenceFlow_0bi38s7">
-        <di:waypoint xsi:type="dc:Point" x="140" y="904" />
-        <di:waypoint xsi:type="dc:Point" x="140" y="1057" />
-        <di:waypoint xsi:type="dc:Point" x="193" y="1057" />
+        <di:waypoint xsi:type="dc:Point" x="89" y="1285" />
+        <di:waypoint xsi:type="dc:Point" x="89" y="1438" />
+        <di:waypoint xsi:type="dc:Point" x="142" y="1438" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="146" y="980.5" width="18" height="12" />
+          <dc:Bounds x="95" y="1362" width="18" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_1qm81ym_di" bpmnElement="SequenceFlow_1qm81ym">
-        <di:waypoint xsi:type="dc:Point" x="293" y="1057" />
-        <di:waypoint xsi:type="dc:Point" x="329" y="1057" />
-        <di:waypoint xsi:type="dc:Point" x="329" y="1057" />
-        <di:waypoint xsi:type="dc:Point" x="365" y="1057" />
+        <di:waypoint xsi:type="dc:Point" x="242" y="1438" />
+        <di:waypoint xsi:type="dc:Point" x="278" y="1438" />
+        <di:waypoint xsi:type="dc:Point" x="278" y="1438" />
+        <di:waypoint xsi:type="dc:Point" x="314" y="1438" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="344" y="1057" width="0" height="0" />
+          <dc:Bounds x="293" y="1438" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_112los9_di" bpmnElement="SequenceFlow_112los9">
-        <di:waypoint xsi:type="dc:Point" x="465" y="1057" />
-        <di:waypoint xsi:type="dc:Point" x="508" y="1057" />
-        <di:waypoint xsi:type="dc:Point" x="508" y="904" />
+        <di:waypoint xsi:type="dc:Point" x="414" y="1438" />
+        <di:waypoint xsi:type="dc:Point" x="457" y="1438" />
+        <di:waypoint xsi:type="dc:Point" x="457" y="1285" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="487" y="1042" width="0" height="0" />
+          <dc:Bounds x="436" y="1423" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_1k5uku2_di" bpmnElement="SequenceFlow_1k5uku2">
-        <di:waypoint xsi:type="dc:Point" x="165" y="879" />
-        <di:waypoint xsi:type="dc:Point" x="483" y="879" />
+        <di:waypoint xsi:type="dc:Point" x="114" y="1260" />
+        <di:waypoint xsi:type="dc:Point" x="432" y="1260" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="318" y="864" width="12" height="12" />
+          <dc:Bounds x="267" y="1245" width="12" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_1avfxsz_di" bpmnElement="SequenceFlow_1avfxsz">
-        <di:waypoint xsi:type="dc:Point" x="533" y="879" />
-        <di:waypoint xsi:type="dc:Point" x="571" y="879" />
-        <di:waypoint xsi:type="dc:Point" x="571" y="879" />
-        <di:waypoint xsi:type="dc:Point" x="609" y="879" />
+        <di:waypoint xsi:type="dc:Point" x="482" y="1260" />
+        <di:waypoint xsi:type="dc:Point" x="520" y="1260" />
+        <di:waypoint xsi:type="dc:Point" x="520" y="1260" />
+        <di:waypoint xsi:type="dc:Point" x="558" y="1260" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="586" y="879" width="0" height="0" />
+          <dc:Bounds x="535" y="1260" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0363dz7_di" bpmnElement="SequenceFlow_0363dz7">
-        <di:waypoint xsi:type="dc:Point" x="60" y="878" />
-        <di:waypoint xsi:type="dc:Point" x="115" y="879" />
+        <di:waypoint xsi:type="dc:Point" x="9" y="1259" />
+        <di:waypoint xsi:type="dc:Point" x="64" y="1260" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="88" y="853.5" width="0" height="0" />
+          <dc:Bounds x="37" y="1235" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ScriptTask_0o3bcyq_di" bpmnElement="PreProcessUpdateAAIGenericVnf">
-        <dc:Bounds x="193" y="1018" width="100" height="80" />
+        <dc:Bounds x="142" y="1399" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="CallActivity_0j45ic9_di" bpmnElement="UpdateAAIGenericVNFTask">
-        <dc:Bounds x="365" y="1017" width="100" height="80" />
+        <dc:Bounds x="314" y="1398" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0zcfn2x_di" bpmnElement="SequenceFlow_0zcfn2x">
         <di:waypoint xsi:type="dc:Point" x="1458" y="393" />
@@ -1133,123 +1296,406 @@
         <dc:Bounds x="1513" y="481" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_1f53tby_di" bpmnElement="SequenceFlow_1f53tby">
-        <di:waypoint xsi:type="dc:Point" x="478" y="282" />
-        <di:waypoint xsi:type="dc:Point" x="548" y="282" />
-        <di:waypoint xsi:type="dc:Point" x="548" y="189" />
+        <di:waypoint xsi:type="dc:Point" x="776" y="282" />
+        <di:waypoint xsi:type="dc:Point" x="846" y="282" />
+        <di:waypoint xsi:type="dc:Point" x="846" y="189" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="513" y="267" width="0" height="0" />
+          <dc:Bounds x="811" y="267" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ExclusiveGateway_0ffvqla_di" bpmnElement="ExclusiveGateway_0ffvqla" isMarkerVisible="true">
-        <dc:Bounds x="294" y="145.86" width="50" height="50" />
+        <dc:Bounds x="592" y="146" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="276" y="97.86000000000001" width="86" height="36" />
+          <dc:Bounds x="574" y="98" width="86" height="36" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0270n5c_di" bpmnElement="SequenceFlow_0270n5c">
-        <di:waypoint xsi:type="dc:Point" x="344" y="171" />
-        <di:waypoint xsi:type="dc:Point" x="530" y="171" />
+        <di:waypoint xsi:type="dc:Point" x="642" y="171" />
+        <di:waypoint xsi:type="dc:Point" x="828" y="171" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="401" y="145" width="18" height="12" />
+          <dc:Bounds x="699" y="145" width="18" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_05og7iw_di" bpmnElement="SequenceFlow_05og7iw">
-        <di:waypoint xsi:type="dc:Point" x="319" y="196" />
-        <di:waypoint xsi:type="dc:Point" x="319" y="282" />
-        <di:waypoint xsi:type="dc:Point" x="378" y="282" />
+        <di:waypoint xsi:type="dc:Point" x="617" y="196" />
+        <di:waypoint xsi:type="dc:Point" x="617" y="282" />
+        <di:waypoint xsi:type="dc:Point" x="676" y="282" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="328" y="239" width="12" height="12" />
+          <dc:Bounds x="626" y="239" width="12" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="CallActivity_14nvmgk_di" bpmnElement="Task_0kuj2a1">
-        <dc:Bounds x="378" y="242" width="100" height="80" />
+        <dc:Bounds x="676" y="242" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="SubProcess_0ltzufk_di" bpmnElement="SubProcess_0ltzufk" isExpanded="true">
-        <dc:Bounds x="-50" y="1190" width="1047" height="338" />
+        <dc:Bounds x="-52" y="1578" width="1047" height="338" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="StartEvent_18lzc5m_di" bpmnElement="StartEvent_18lzc5m">
-        <dc:Bounds x="93" y="1294" width="36" height="36" />
+        <dc:Bounds x="91" y="1682" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="111" y="1335" width="0" height="0" />
+          <dc:Bounds x="109" y="1723" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="EndEvent_0wsdptv_di" bpmnElement="EndEvent_0wsdptv">
-        <dc:Bounds x="861" y="1294" width="36" height="36" />
+        <dc:Bounds x="859" y="1682" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="879" y="1335" width="0" height="0" />
+          <dc:Bounds x="877" y="1723" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="CallActivity_1ehr5kq_di" bpmnElement="CallDoCreateVfModuleRollback">
-        <dc:Bounds x="509" y="1272" width="100" height="80" />
+        <dc:Bounds x="507" y="1660" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ScriptTask_0upatdd_di" bpmnElement="PreProcessRollback">
-        <dc:Bounds x="329" y="1272" width="100" height="80" />
+        <dc:Bounds x="327" y="1660" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ScriptTask_0o1zc29_di" bpmnElement="PostProcessRollback">
-        <dc:Bounds x="694" y="1272" width="100" height="80" />
+        <dc:Bounds x="692" y="1660" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_02lc25j_di" bpmnElement="SequenceFlow_02lc25j">
-        <di:waypoint xsi:type="dc:Point" x="129" y="1312" />
-        <di:waypoint xsi:type="dc:Point" x="196" y="1312" />
+        <di:waypoint xsi:type="dc:Point" x="127" y="1700" />
+        <di:waypoint xsi:type="dc:Point" x="194" y="1700" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="163" y="1297" width="0" height="0" />
+          <dc:Bounds x="161" y="1685" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0z2rczk_di" bpmnElement="SequenceFlow_0z2rczk">
-        <di:waypoint xsi:type="dc:Point" x="794" y="1312" />
-        <di:waypoint xsi:type="dc:Point" x="826" y="1312" />
-        <di:waypoint xsi:type="dc:Point" x="826" y="1312" />
-        <di:waypoint xsi:type="dc:Point" x="861" y="1312" />
+        <di:waypoint xsi:type="dc:Point" x="792" y="1700" />
+        <di:waypoint xsi:type="dc:Point" x="824" y="1700" />
+        <di:waypoint xsi:type="dc:Point" x="824" y="1700" />
+        <di:waypoint xsi:type="dc:Point" x="859" y="1700" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="841" y="1312" width="0" height="0" />
+          <dc:Bounds x="839" y="1700" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_1i1q78e_di" bpmnElement="SequenceFlow_1i1q78e">
-        <di:waypoint xsi:type="dc:Point" x="429" y="1312" />
-        <di:waypoint xsi:type="dc:Point" x="509" y="1312" />
+        <di:waypoint xsi:type="dc:Point" x="427" y="1700" />
+        <di:waypoint xsi:type="dc:Point" x="507" y="1700" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="469" y="1297" width="0" height="0" />
+          <dc:Bounds x="467" y="1685" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0112l2c_di" bpmnElement="SequenceFlow_0112l2c">
-        <di:waypoint xsi:type="dc:Point" x="609" y="1312" />
-        <di:waypoint xsi:type="dc:Point" x="694" y="1312" />
+        <di:waypoint xsi:type="dc:Point" x="607" y="1700" />
+        <di:waypoint xsi:type="dc:Point" x="692" y="1700" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="652" y="1297" width="0" height="0" />
+          <dc:Bounds x="650" y="1685" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ExclusiveGateway_039bib8_di" bpmnElement="ExclusiveGateway_039bib8" isMarkerVisible="true">
-        <dc:Bounds x="196" y="1287" width="50" height="50" />
+        <dc:Bounds x="194" y="1675" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="177" y="1259" width="87" height="12" />
+          <dc:Bounds x="175" y="1647" width="87" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_04bd5in_di" bpmnElement="SequenceFlow_04bd5in">
-        <di:waypoint xsi:type="dc:Point" x="246" y="1312" />
-        <di:waypoint xsi:type="dc:Point" x="329" y="1312" />
+        <di:waypoint xsi:type="dc:Point" x="244" y="1700" />
+        <di:waypoint xsi:type="dc:Point" x="327" y="1700" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="282" y="1297" width="12" height="12" />
+          <dc:Bounds x="280" y="1685" width="12" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_1nh7m8d_di" bpmnElement="SequenceFlow_1nh7m8d">
-        <di:waypoint xsi:type="dc:Point" x="221" y="1337" />
-        <di:waypoint xsi:type="dc:Point" x="221" y="1436" />
-        <di:waypoint xsi:type="dc:Point" x="509" y="1436" />
+        <di:waypoint xsi:type="dc:Point" x="219" y="1725" />
+        <di:waypoint xsi:type="dc:Point" x="219" y="1824" />
+        <di:waypoint xsi:type="dc:Point" x="507" y="1824" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="227" y="1386.5" width="18" height="12" />
+          <dc:Bounds x="225" y="1775" width="18" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ScriptTask_05v20n0_di" bpmnElement="Task_1fm09pi">
-        <dc:Bounds x="509" y="1396" width="100" height="80" />
+        <dc:Bounds x="507" y="1784" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_1pgo10r_di" bpmnElement="SequenceFlow_1pgo10r">
-        <di:waypoint xsi:type="dc:Point" x="609" y="1436" />
-        <di:waypoint xsi:type="dc:Point" x="879" y="1436" />
-        <di:waypoint xsi:type="dc:Point" x="879" y="1330" />
+        <di:waypoint xsi:type="dc:Point" x="607" y="1824" />
+        <di:waypoint xsi:type="dc:Point" x="877" y="1824" />
+        <di:waypoint xsi:type="dc:Point" x="877" y="1718" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="744" y="1421" width="0" height="0" />
+          <dc:Bounds x="742" y="1809" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0jw7ymg_di" bpmnElement="ExclusiveGateway_0jw7ymg" isMarkerVisible="true">
+        <dc:Bounds x="803" y="696" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="797" y="653" width="61" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_28" bpmnElement="SequenceFlow_28" sourceElement="_BPMNShape_ExclusiveGateway_92" targetElement="_BPMNShape_Task_7">
+        <di:waypoint xsi:type="dc:Point" x="1434" y="1259" />
+        <di:waypoint xsi:type="dc:Point" x="1502" y="1260" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1454" y="1264.6906474820144" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_19933zh_di" bpmnElement="ExclusiveGateway_19933zh" isMarkerVisible="true">
+        <dc:Bounds x="302" y="146" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="295" y="196" width="63" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1y1ttqe_di" bpmnElement="SequenceFlow_1y1ttqe">
+        <di:waypoint xsi:type="dc:Point" x="352" y="171" />
+        <di:waypoint xsi:type="dc:Point" x="592" y="171" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="379" y="147" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_02fd6gx_di" bpmnElement="ExclusiveGateway_02fd6gx" isMarkerVisible="true">
+        <dc:Bounds x="447" y="-1" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="427" y="-48" width="89" height="36" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0lilmm3_di" bpmnElement="SequenceFlow_0lilmm3">
+        <di:waypoint xsi:type="dc:Point" x="472" y="49" />
+        <di:waypoint xsi:type="dc:Point" x="472" y="171" />
+        <di:waypoint xsi:type="dc:Point" x="592" y="171" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="482" y="100" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1y8q87e_di" bpmnElement="SequenceFlow_1y8q87e">
+        <di:waypoint xsi:type="dc:Point" x="327" y="146" />
+        <di:waypoint xsi:type="dc:Point" x="327" y="64" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="333" y="95" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1sf1091_di" bpmnElement="SequenceFlow_1sf1091">
+        <di:waypoint xsi:type="dc:Point" x="377" y="24" />
+        <di:waypoint xsi:type="dc:Point" x="447" y="24" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="412" y="9" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_17cp3tn_di" bpmnElement="SequenceFlow_17cp3tn">
+        <di:waypoint xsi:type="dc:Point" x="853" y="721" />
+        <di:waypoint xsi:type="dc:Point" x="901" y="720" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="866" y="694.5" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="EndEvent_0b33fd2_di" bpmnElement="EndEvent_0pd6bbj">
+        <dc:Bounds x="1367" y="701" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1385" y="737" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_15i583d_di" bpmnElement="SequenceFlow_15i583d">
+        <di:waypoint xsi:type="dc:Point" x="497" y="24" />
+        <di:waypoint xsi:type="dc:Point" x="559" y="24" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="513" y="3.588067006526856" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0gsliyw_di" bpmnElement="ExclusiveGateway_0gsliyw" isMarkerVisible="true">
+        <dc:Bounds x="592" y="694" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="585" y="656" width="63" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_16mgvsd_di" bpmnElement="SequenceFlow_16mgvsd">
+        <di:waypoint xsi:type="dc:Point" x="642" y="719" />
+        <di:waypoint xsi:type="dc:Point" x="668" y="719" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="641" y="696" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1nh92s8_di" bpmnElement="SequenceFlow_1nh92s8">
+        <di:waypoint xsi:type="dc:Point" x="556" y="720" />
+        <di:waypoint xsi:type="dc:Point" x="592" y="719" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="574" y="694.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0cc17yk_di" bpmnElement="SequenceFlow_0cc17yk">
+        <di:waypoint xsi:type="dc:Point" x="768" y="720" />
+        <di:waypoint xsi:type="dc:Point" x="803" y="721" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="786" y="705.5" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1iyt5i4_di" bpmnElement="SequenceFlow_1iyt5i4">
+        <di:waypoint xsi:type="dc:Point" x="617" y="744" />
+        <di:waypoint xsi:type="dc:Point" x="617" y="799" />
+        <di:waypoint xsi:type="dc:Point" x="98" y="799" />
+        <di:waypoint xsi:type="dc:Point" x="98" y="881" />
+        <di:waypoint xsi:type="dc:Point" x="119" y="881" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="466" y="776.3184256922661" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_006rnym_di" bpmnElement="SequenceFlow_006rnym">
+        <di:waypoint xsi:type="dc:Point" x="828" y="746" />
+        <di:waypoint xsi:type="dc:Point" x="828" y="815" />
+        <di:waypoint xsi:type="dc:Point" x="169" y="815" />
+        <di:waypoint xsi:type="dc:Point" x="169" y="841" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="807" y="762.4025974025974" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ynd0iy_di" bpmnElement="SequenceFlow_0ynd0iy">
+        <di:waypoint xsi:type="dc:Point" x="1001" y="719" />
+        <di:waypoint xsi:type="dc:Point" x="1057" y="719" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1029" y="704" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_00bh7m7_di" bpmnElement="SequenceFlow_00bh7m7">
+        <di:waypoint xsi:type="dc:Point" x="1312" y="719" />
+        <di:waypoint xsi:type="dc:Point" x="1367" y="719" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1340" y="704" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1mnipp8_di" bpmnElement="SequenceFlow_1mnipp8">
+        <di:waypoint xsi:type="dc:Point" x="1157" y="719" />
+        <di:waypoint xsi:type="dc:Point" x="1212" y="719" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1185" y="704" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_1bvhxkk_di" bpmnElement="Task_08z2aai">
+        <dc:Bounds x="1057" y="679" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_05mwaoo_di" bpmnElement="Task_0kqh1of">
+        <dc:Bounds x="901" y="679" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_059xue9_di" bpmnElement="Task_08tnqe1">
+        <dc:Bounds x="668" y="679" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1k3dub4_di" bpmnElement="Task_14n44kb">
+        <dc:Bounds x="277" y="-16" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0okxyur_di" bpmnElement="Task_16p51r4">
+        <dc:Bounds x="1212" y="679" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1f6x9ii_di" bpmnElement="ExclusiveGateway_1f6x9ii" isMarkerVisible="true">
+        <dc:Bounds x="559" y="-1" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="539" y="49" width="89" height="48" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0tfrcnc_di" bpmnElement="SequenceFlow_0tfrcnc">
+        <di:waypoint xsi:type="dc:Point" x="609" y="24" />
+        <di:waypoint xsi:type="dc:Point" x="946" y="24" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="772" y="9" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0oadvvx_di" bpmnElement="SequenceFlow_0oadvvx">
+        <di:waypoint xsi:type="dc:Point" x="584" y="-1" />
+        <di:waypoint xsi:type="dc:Point" x="584" y="-63" />
+        <di:waypoint xsi:type="dc:Point" x="616" y="-63" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="590" y="-42" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_09r5rvt_di" bpmnElement="ExclusiveGateway_09r5rvt" isMarkerVisible="true">
+        <dc:Bounds x="946" y="-1" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="971" y="49" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1qzw172_di" bpmnElement="SequenceFlow_1qzw172">
+        <di:waypoint xsi:type="dc:Point" x="996" y="24" />
+        <di:waypoint xsi:type="dc:Point" x="1074" y="24" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1035" y="9" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_03batve_di" bpmnElement="SequenceFlow_03batve">
+        <di:waypoint xsi:type="dc:Point" x="716" y="-63" />
+        <di:waypoint xsi:type="dc:Point" x="796" y="-63" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="756" y="-78" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0c6p4aa_di" bpmnElement="SequenceFlow_0c6p4aa">
+        <di:waypoint xsi:type="dc:Point" x="896" y="-63" />
+        <di:waypoint xsi:type="dc:Point" x="971" y="-63" />
+        <di:waypoint xsi:type="dc:Point" x="971" y="-1" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="934" y="-78" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_04msdir_di" bpmnElement="ExclusiveGateway_04msdir" isMarkerVisible="true">
+        <dc:Bounds x="1074" y="-1" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1057" y="49" width="84" height="36" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0xed5sn_di" bpmnElement="SequenceFlow_0xed5sn">
+        <di:waypoint xsi:type="dc:Point" x="1124" y="24" />
+        <di:waypoint xsi:type="dc:Point" x="1338" y="24" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1222" y="9" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0p3cspl_di" bpmnElement="SequenceFlow_0p3cspl">
+        <di:waypoint xsi:type="dc:Point" x="1099" y="-1" />
+        <di:waypoint xsi:type="dc:Point" x="1099" y="-63" />
+        <di:waypoint xsi:type="dc:Point" x="1190" y="-63" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1108" y="-41.26315789473686" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1biy4yg_di" bpmnElement="ExclusiveGateway_1biy4yg" isMarkerVisible="true">
+        <dc:Bounds x="1338" y="-1" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1363" y="49" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0p61zug_di" bpmnElement="SequenceFlow_0p61zug">
+        <di:waypoint xsi:type="dc:Point" x="1388" y="24" />
+        <di:waypoint xsi:type="dc:Point" x="1436" y="24" />
+        <di:waypoint xsi:type="dc:Point" x="1436" y="-170" />
+        <di:waypoint xsi:type="dc:Point" x="-60" y="-170" />
+        <di:waypoint xsi:type="dc:Point" x="-60" y="1078" />
+        <di:waypoint xsi:type="dc:Point" x="98" y="1078" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="688" y="-185" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1k7xbcu_di" bpmnElement="SequenceFlow_1k7xbcu">
+        <di:waypoint xsi:type="dc:Point" x="1290" y="-63" />
+        <di:waypoint xsi:type="dc:Point" x="1363" y="-63" />
+        <di:waypoint xsi:type="dc:Point" x="1363" y="-1" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1327" y="-78" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_0ti2a86_di" bpmnElement="Task_0dx8gpp">
+        <dc:Bounds x="616" y="-103" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_1r5f381_di" bpmnElement="Task_0e8s9xm">
+        <dc:Bounds x="796" y="-103" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0fajmo7_di" bpmnElement="Task_0cdjxcd">
+        <dc:Bounds x="1190" y="-103" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_065935d_di" bpmnElement="Task_19zw1li">
+        <dc:Bounds x="119" y="841" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_11w102e_di" bpmnElement="Task_01b1fio">
+        <dc:Bounds x="285" y="841" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0thm33s_di" bpmnElement="SequenceFlow_0thm33s">
+        <di:waypoint xsi:type="dc:Point" x="219" y="881" />
+        <di:waypoint xsi:type="dc:Point" x="285" y="881" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="252" y="856" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0aegg0r_di" bpmnElement="SequenceFlow_0aegg0r">
+        <di:waypoint xsi:type="dc:Point" x="385" y="881" />
+        <di:waypoint xsi:type="dc:Point" x="438" y="881" />
+        <di:waypoint xsi:type="dc:Point" x="438" y="953" />
+        <di:waypoint xsi:type="dc:Point" x="159" y="953" />
+        <di:waypoint xsi:type="dc:Point" x="159" y="1031" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="453" y="917" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
     </bpmndi:BPMNPlane>
   </bpmndi:BPMNDiagram>
-</bpmn2:definitions>
\ No newline at end of file
+</bpmn2:definitions>
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateVfModuleRollback.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateVfModuleRollback.bpmn
index cb6538c..d9f1dc7 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateVfModuleRollback.bpmn
+++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateVfModuleRollback.bpmn
@@ -10,13 +10,6 @@
       <bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing>
       <bpmn2:outgoing>SequenceFlow_9</bpmn2:outgoing>
     </bpmn2:exclusiveGateway>
-    <bpmn2:scriptTask id="PrepareUpdateAAIVfModulePrep" name="PrepareUpdateAAIVfModule Prep" scriptFormat="groovy">
-      <bpmn2:incoming>SequenceFlow_6</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_7</bpmn2:outgoing>
-      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
-def dcvfmr = new DoCreateVfModuleRollback()
-dcvfmr.preProcessRequest(execution)]]></bpmn2:script>
-    </bpmn2:scriptTask>
     <bpmn2:callActivity id="InvokePrepareUpdateAAIVfModule" name="Invoke&#10;PrepareUpdateAAIVfModule" calledElement="PrepareUpdateAAIVfModule">
       <bpmn2:extensionElements>
         <camunda:in source="PrepareUpdateAAIVfModuleRequest" target="PrepareUpdateAAIVfModuleRequest" />
@@ -24,13 +17,12 @@
         <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
         <camunda:out source="PUAAIVfMod_heatStackId" target="DCVFMR_heatStackId" />
       </bpmn2:extensionElements>
-      <bpmn2:incoming>SequenceFlow_7</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_6</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_8</bpmn2:outgoing>
     </bpmn2:callActivity>
-    <bpmn2:sequenceFlow id="SequenceFlow_6" name="yes" sourceRef="ExclusiveGateway_1" targetRef="PrepareUpdateAAIVfModulePrep">
-      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCVFMR_rollbackPrepareUpdateVfModule") == "true"}]]></bpmn2:conditionExpression>
+    <bpmn2:sequenceFlow id="SequenceFlow_6" name="yes" sourceRef="ExclusiveGateway_1" targetRef="InvokePrepareUpdateAAIVfModule">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("DCVFMR_rollbackPrepareUpdateVfModule") == "true" &&  !(execution.getVariable('aLaCarte') == true && execution.getVariable("DCVFMR_rollbackSDNCRequestAssign") == "true")]]></bpmn2:conditionExpression>
     </bpmn2:sequenceFlow>
-    <bpmn2:sequenceFlow id="SequenceFlow_7" name="" sourceRef="PrepareUpdateAAIVfModulePrep" targetRef="InvokePrepareUpdateAAIVfModule" />
     <bpmn2:sequenceFlow id="SequenceFlow_8" name="" sourceRef="InvokePrepareUpdateAAIVfModule" targetRef="ExclusiveGateway_2" />
     <bpmn2:sequenceFlow id="SequenceFlow_9" name="no" sourceRef="ExclusiveGateway_1" targetRef="ExclusiveGateway_2" />
     <bpmn2:exclusiveGateway id="ExclusiveGateway_2" name="Rollback 1707 SDNC Activate?" default="SequenceFlow_15">
@@ -57,12 +49,11 @@
         <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
       </bpmn2:extensionElements>
       <bpmn2:incoming>SequenceFlow_16</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_11</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_08aruzz</bpmn2:outgoing>
     </bpmn2:callActivity>
     <bpmn2:sequenceFlow id="SequenceFlow_10" name="yes" sourceRef="ExclusiveGateway_2" targetRef="PrepareSDNCDeactivateRequest">
       <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCVFMR_rollbackSDNCRequestActivate") == "true" && execution.getVariable("sdncVersion") == "1707"}]]></bpmn2:conditionExpression>
     </bpmn2:sequenceFlow>
-    <bpmn2:sequenceFlow id="SequenceFlow_11" name="" sourceRef="InvokeVNFAdapterRestV1" targetRef="ExclusiveGateway_3" />
     <bpmn2:sequenceFlow id="SequenceFlow_15" name="no" sourceRef="ExclusiveGateway_2" targetRef="ExclusiveGateway_1938vz9" />
     <bpmn2:scriptTask id="UpdateAAIVfModulePrep" name="UpdateAAIVfModule&#10;Prep" scriptFormat="groovy">
       <bpmn2:incoming>SequenceFlow_13</bpmn2:incoming>
@@ -83,8 +74,7 @@
     </bpmn2:callActivity>
     <bpmn2:sequenceFlow id="SequenceFlow_18" name="" sourceRef="InvokeUpdateAAIVfModule" targetRef="ExclusiveGateway_4" />
     <bpmn2:exclusiveGateway id="ExclusiveGateway_3" name="Rollback Update AAI Vf Module?" default="SequenceFlow_17">
-      <bpmn2:incoming>SequenceFlow_11</bpmn2:incoming>
-      <bpmn2:incoming>SequenceFlow_03i4czf</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_1gcfdej</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_13</bpmn2:outgoing>
       <bpmn2:outgoing>SequenceFlow_17</bpmn2:outgoing>
     </bpmn2:exclusiveGateway>
@@ -256,7 +246,7 @@
     <bpmn2:sequenceFlow id="SequenceFlow_1p0v6yk" name="yes&#10;&#10;" sourceRef="ExclusiveGateway_0uvarlv" targetRef="VNFAdapterPrep">
       <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DCVFMR_rollbackVnfAdapterCreate") == "true"}]]></bpmn2:conditionExpression>
     </bpmn2:sequenceFlow>
-    <bpmn2:sequenceFlow id="SequenceFlow_03i4czf" name="no" sourceRef="ExclusiveGateway_0uvarlv" targetRef="ExclusiveGateway_3" />
+    <bpmn2:sequenceFlow id="SequenceFlow_03i4czf" name="no" sourceRef="ExclusiveGateway_0uvarlv" targetRef="ExclusiveGateway_0ahc44p" />
     <bpmn2:exclusiveGateway id="ExclusiveGateway_1yozzae" name="Skip Rollback?" default="SequenceFlow_11er1t8">
       <bpmn2:incoming>SequenceFlow_5</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_11er1t8</bpmn2:outgoing>
@@ -351,11 +341,41 @@
     <bpmn2:scriptTask id="SetSuccessfulRollbackStatus" name="Set Successful Rollback Status" scriptFormat="groovy">
       <bpmn2:incoming>SequenceFlow_21</bpmn2:incoming>
       <bpmn2:incoming>SequenceFlow_35</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_17it51d</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_1h8ve60</bpmn2:outgoing>
       <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
 def dcvfmr = new DoCreateVfModuleRollback()
 dcvfmr.setSuccessfulRollbackStatus(execution)]]></bpmn2:script>
     </bpmn2:scriptTask>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_0ahc44p" name="Set AAI Status to Assigned?" default="SequenceFlow_1gcfdej">
+      <bpmn2:incoming>SequenceFlow_03i4czf</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_08aruzz</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1gcfdej</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_17ne2iz</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_1gcfdej" name="no" sourceRef="ExclusiveGateway_0ahc44p" targetRef="ExclusiveGateway_3" />
+    <bpmn2:sequenceFlow id="SequenceFlow_17ne2iz" name="yes" sourceRef="ExclusiveGateway_0ahc44p" targetRef="Task_1sqxedz">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression" language="groovy"><![CDATA[execution.getVariable('aLaCarte') == true && execution.getVariable("DCVFMR_rollbackSDNCRequestAssign") == "true"]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_17it51d" sourceRef="Task_0k9gnp2" targetRef="SetSuccessfulRollbackStatus" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0fvuowt" sourceRef="Task_1sqxedz" targetRef="Task_0k9gnp2" />
+    <bpmn2:callActivity id="Task_0k9gnp2" name="Invoke UpdateAAIVfModule to Assigned" calledElement="UpdateAAIVfModule">
+      <bpmn2:extensionElements>
+        <camunda:in source="UpdateAAIVfModuleRequest" target="UpdateAAIVfModuleRequest" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:out source="WorkflowException" target="WorkflowException" />
+      </bpmn2:extensionElements>
+      <bpmn2:incoming>SequenceFlow_0fvuowt</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_17it51d</bpmn2:outgoing>
+    </bpmn2:callActivity>
+    <bpmn2:scriptTask id="Task_1sqxedz" name="UpdateAAIVfModule To Assigned Prep" scriptFormat="groovy">
+      <bpmn2:incoming>SequenceFlow_17ne2iz</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0fvuowt</bpmn2:outgoing>
+      <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def dcvfmr = new DoCreateVfModuleRollback()
+dcvfmr.prepUpdateAAIVfModuleToAssigned(execution)]]></bpmn2:script>
+    </bpmn2:scriptTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_08aruzz" sourceRef="InvokeVNFAdapterRestV1" targetRef="ExclusiveGateway_0ahc44p" />
   </bpmn2:process>
   <bpmn2:error id="Error_1" name="MSO Workflow Exception" errorCode="MSOWorkflowException" />
   <bpmn2:message id="Message_1" name="DoCreateVfModuleRollbackRequest" />
@@ -380,9 +400,6 @@
       <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_160" bpmnElement="InvokePrepareUpdateAAIVfModule">
         <dc:Bounds x="725" y="23" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_168" bpmnElement="PrepareUpdateAAIVfModulePrep">
-        <dc:Bounds x="552" y="23" width="100" height="80" />
-      </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_170" bpmnElement="VNFAdapterPrep">
         <dc:Bounds x="104" y="763" width="100" height="80" />
       </bpmndi:BPMNShape>
@@ -397,10 +414,10 @@
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_171" bpmnElement="UpdateAAIVfModulePrep">
-        <dc:Bounds x="552" y="758" width="100" height="80" />
+        <dc:Bounds x="732" y="758" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="_BPMNShape_CallActivity_14" bpmnElement="InvokeUpdateAAIVfModule">
-        <dc:Bounds x="732" y="758" width="100" height="80" />
+        <dc:Bounds x="912" y="758" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_172" bpmnElement="SDNCAdapterPrep2">
         <dc:Bounds x="187" y="995" width="100" height="80" />
@@ -443,9 +460,9 @@
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_223" bpmnElement="ExclusiveGateway_1" isMarkerVisible="true">
-        <dc:Bounds x="404" y="92" width="50" height="50" />
+        <dc:Bounds x="538" y="93" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="326" y="167" width="228" height="22" />
+          <dc:Bounds x="519" y="152" width="88" height="36" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="SequenceFlow_5" sourceElement="_BPMNShape_ScriptTask_22" targetElement="_BPMNShape_ExclusiveGateway_223">
@@ -461,18 +478,13 @@
           <dc:Bounds x="897" y="152" width="79" height="24" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_6" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_ExclusiveGateway_223" targetElement="_BPMNShape_ScriptTask_168">
-        <di:waypoint xsi:type="dc:Point" x="429" y="92" />
-        <di:waypoint xsi:type="dc:Point" x="429" y="63" />
-        <di:waypoint xsi:type="dc:Point" x="503" y="63" />
-        <di:waypoint xsi:type="dc:Point" x="552" y="63" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="473" y="63" width="6" height="6" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_7" bpmnElement="SequenceFlow_7" sourceElement="_BPMNShape_ScriptTask_168" targetElement="_BPMNShape_ScriptTask_160">
-        <di:waypoint xsi:type="dc:Point" x="652" y="63" />
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_6" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_ExclusiveGateway_223">
+        <di:waypoint xsi:type="dc:Point" x="563" y="93" />
+        <di:waypoint xsi:type="dc:Point" x="563" y="63" />
         <di:waypoint xsi:type="dc:Point" x="725" y="63" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="573" y="39.419820324530114" width="18" height="12" />
+        </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_8" bpmnElement="SequenceFlow_8" sourceElement="_BPMNShape_ScriptTask_160" targetElement="_BPMNShape_ExclusiveGateway_224">
         <di:waypoint xsi:type="dc:Point" x="825" y="63" />
@@ -484,10 +496,10 @@
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_9" bpmnElement="SequenceFlow_9" sourceElement="_BPMNShape_ExclusiveGateway_223" targetElement="_BPMNShape_ExclusiveGateway_224">
-        <di:waypoint xsi:type="dc:Point" x="454" y="117" />
+        <di:waypoint xsi:type="dc:Point" x="588" y="118" />
         <di:waypoint xsi:type="dc:Point" x="912" y="117" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="676" y="117" width="6" height="6" />
+          <dc:Bounds x="743" y="117.50867542935495" width="12" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_10" bpmnElement="SequenceFlow_10" sourceElement="_BPMNShape_ExclusiveGateway_224" targetElement="_BPMNShape_ScriptTask_170">
@@ -501,40 +513,31 @@
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_225" bpmnElement="ExclusiveGateway_3" isMarkerVisible="true">
-        <dc:Bounds x="414" y="837" width="50" height="50" />
+        <dc:Bounds x="594" y="837" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="398" y="892" width="84" height="26" />
+          <dc:Bounds x="578" y="892" width="83" height="24" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_11" bpmnElement="SequenceFlow_11" sourceElement="_BPMNShape_CallActivity_13" targetElement="_BPMNShape_ExclusiveGateway_225">
-        <di:waypoint xsi:type="dc:Point" x="362" y="803" />
-        <di:waypoint xsi:type="dc:Point" x="383" y="803" />
-        <di:waypoint xsi:type="dc:Point" x="439" y="803" />
-        <di:waypoint xsi:type="dc:Point" x="439" y="837" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="424" y="803" width="0" height="0" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_13" bpmnElement="SequenceFlow_13" sourceElement="_BPMNShape_ExclusiveGateway_225" targetElement="_BPMNShape_ScriptTask_171">
-        <di:waypoint xsi:type="dc:Point" x="464" y="862" />
-        <di:waypoint xsi:type="dc:Point" x="485" y="862" />
-        <di:waypoint xsi:type="dc:Point" x="485" y="798" />
-        <di:waypoint xsi:type="dc:Point" x="552" y="798" />
+        <di:waypoint xsi:type="dc:Point" x="644" y="862" />
+        <di:waypoint xsi:type="dc:Point" x="665" y="862" />
+        <di:waypoint xsi:type="dc:Point" x="665" y="798" />
+        <di:waypoint xsi:type="dc:Point" x="732" y="798" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="507" y="803" width="18" height="14" />
+          <dc:Bounds x="687" y="803" width="18" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_14" bpmnElement="SequenceFlow_14" sourceElement="_BPMNShape_ScriptTask_171" targetElement="_BPMNShape_CallActivity_14">
-        <di:waypoint xsi:type="dc:Point" x="652" y="798" />
-        <di:waypoint xsi:type="dc:Point" x="732" y="798" />
+        <di:waypoint xsi:type="dc:Point" x="832" y="798" />
+        <di:waypoint xsi:type="dc:Point" x="912" y="798" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="663" y="798" width="0" height="0" />
+          <dc:Bounds x="843" y="798" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_226" bpmnElement="ExclusiveGateway_4" isMarkerVisible="true">
-        <dc:Bounds x="912" y="837" width="50" height="50" />
+        <dc:Bounds x="1092" y="837" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="898" y="892" width="80" height="26" />
+          <dc:Bounds x="1078" y="892" width="79" height="24" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_15" bpmnElement="SequenceFlow_15" sourceElement="_BPMNShape_ExclusiveGateway_224" targetElement="_BPMNShape_ExclusiveGateway_225">
@@ -549,28 +552,28 @@
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_17" bpmnElement="SequenceFlow_17" sourceElement="_BPMNShape_ExclusiveGateway_225" targetElement="_BPMNShape_ExclusiveGateway_226">
-        <di:waypoint xsi:type="dc:Point" x="464" y="862" />
-        <di:waypoint xsi:type="dc:Point" x="912" y="862" />
+        <di:waypoint xsi:type="dc:Point" x="644" y="862" />
+        <di:waypoint xsi:type="dc:Point" x="1092" y="862" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="675" y="862" width="12" height="14" />
+          <dc:Bounds x="855" y="862" width="12" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_18" bpmnElement="SequenceFlow_18" sourceElement="_BPMNShape_CallActivity_14" targetElement="_BPMNShape_ExclusiveGateway_226">
-        <di:waypoint xsi:type="dc:Point" x="832" y="798" />
-        <di:waypoint xsi:type="dc:Point" x="937" y="798" />
-        <di:waypoint xsi:type="dc:Point" x="937" y="837" />
+        <di:waypoint xsi:type="dc:Point" x="1012" y="798" />
+        <di:waypoint xsi:type="dc:Point" x="1117" y="798" />
+        <di:waypoint xsi:type="dc:Point" x="1117" y="837" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="910" y="798" width="0" height="0" />
+          <dc:Bounds x="1090" y="798" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_19" bpmnElement="SequenceFlow_19" sourceElement="_BPMNShape_ExclusiveGateway_226" targetElement="_BPMNShape_ScriptTask_172">
-        <di:waypoint xsi:type="dc:Point" x="937" y="887" />
-        <di:waypoint xsi:type="dc:Point" x="937" y="958" />
+        <di:waypoint xsi:type="dc:Point" x="1117" y="887" />
+        <di:waypoint xsi:type="dc:Point" x="1117" y="958" />
         <di:waypoint xsi:type="dc:Point" x="34" y="958" />
         <di:waypoint xsi:type="dc:Point" x="34" y="1103" />
-        <di:waypoint xsi:type="dc:Point" x="54" y="1103" />
+        <di:waypoint xsi:type="dc:Point" x="56" y="1103" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="222" y="958" width="18" height="12" />
+          <dc:Bounds x="262" y="958" width="18" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_227" bpmnElement="ExclusiveGateway_5" isMarkerVisible="true">
@@ -580,7 +583,7 @@
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_20" bpmnElement="SequenceFlow_20" sourceElement="_BPMNShape_ExclusiveGateway_226" targetElement="_BPMNShape_ExclusiveGateway_227">
-        <di:waypoint xsi:type="dc:Point" x="962" y="862" />
+        <di:waypoint xsi:type="dc:Point" x="1092" y="862" />
         <di:waypoint xsi:type="dc:Point" x="1029" y="862" />
         <di:waypoint xsi:type="dc:Point" x="1029" y="942" />
         <di:waypoint xsi:type="dc:Point" x="25" y="942" />
@@ -588,7 +591,7 @@
         <di:waypoint xsi:type="dc:Point" x="614" y="1246" />
         <di:waypoint xsi:type="dc:Point" x="614" y="1148" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="796" y="912" width="12" height="12" />
+          <dc:Bounds x="976" y="912" width="12" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_21" bpmnElement="SequenceFlow_21" sourceElement="_BPMNShape_ExclusiveGateway_227" targetElement="_BPMNShape_EndEvent_169">
@@ -627,40 +630,42 @@
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="_BPMNShape_SubProcess_22" bpmnElement="SubProcess_1" isExpanded="true">
-        <dc:Bounds x="0" y="1362" width="699" height="159" />
+        <dc:Bounds x="27" y="1464" width="699" height="159" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="_BPMNShape_StartEvent_59" bpmnElement="CatchExceptions">
-        <dc:Bounds x="20" y="1413" width="36" height="36" />
+        <dc:Bounds x="47" y="1515" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="26" y="1458" width="86" height="12" />
+          <dc:Bounds x="53" y="1560" width="86" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_281" bpmnElement="LogSaveWorkflowException">
-        <dc:Bounds x="364" y="1391" width="100" height="80" />
+        <dc:Bounds x="391" y="1493" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="_BPMNShape_EndEvent_188" bpmnElement="EndEvent_1">
-        <dc:Bounds x="538" y="1413" width="36" height="36" />
+        <dc:Bounds x="565" y="1515" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="556" y="1449" width="0" height="0" />
+          <dc:Bounds x="583" y="1551" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="_BPMNShape_BoundaryEvent_55" bpmnElement="BoundaryEvent_1">
-        <dc:Bounds x="681" y="1412" width="36" height="36" />
+        <dc:Bounds x="708" y="1514" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="699" y="1448" width="0" height="0" />
+          <dc:Bounds x="726" y="1550" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="_BPMNShape_EndEvent_189" bpmnElement="EndEvent_2">
-        <dc:Bounds x="835" y="1412" width="36" height="36" />
+        <dc:Bounds x="880" y="1514" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="853" y="1453" width="0" height="0" />
+          <dc:Bounds x="898" y="1555" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_23" bpmnElement="SequenceFlow_23" sourceElement="_BPMNShape_BoundaryEvent_55" targetElement="_BPMNShape_EndEvent_189">
-        <di:waypoint xsi:type="dc:Point" x="717" y="1430" />
-        <di:waypoint xsi:type="dc:Point" x="835" y="1430" />
+        <di:waypoint xsi:type="dc:Point" x="744" y="1532" />
+        <di:waypoint xsi:type="dc:Point" x="818" y="1532" />
+        <di:waypoint xsi:type="dc:Point" x="818" y="1532" />
+        <di:waypoint xsi:type="dc:Point" x="880" y="1532" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="776" y="1415" width="0" height="0" />
+          <dc:Bounds x="833" y="1532" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ExclusiveGateway_0a0hroy_di" bpmnElement="ExclusiveGateway_0a0hroy" isMarkerVisible="true">
@@ -743,9 +748,9 @@
         <di:waypoint xsi:type="dc:Point" x="1036" y="709" />
         <di:waypoint xsi:type="dc:Point" x="30" y="709" />
         <di:waypoint xsi:type="dc:Point" x="30" y="862" />
-        <di:waypoint xsi:type="dc:Point" x="414" y="862" />
+        <di:waypoint xsi:type="dc:Point" x="466" y="862" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="508" y="683" width="12" height="14" />
+          <dc:Bounds x="508" y="683" width="12" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ExclusiveGateway_1yozzae_di" bpmnElement="ExclusiveGateway_1yozzae" isMarkerVisible="true">
@@ -756,32 +761,32 @@
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_11er1t8_di" bpmnElement="SequenceFlow_11er1t8">
         <di:waypoint xsi:type="dc:Point" x="328" y="118" />
-        <di:waypoint xsi:type="dc:Point" x="404" y="117" />
+        <di:waypoint xsi:type="dc:Point" x="538" y="118" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="360" y="93.5" width="12" height="12" />
+          <dc:Bounds x="357" y="91.50148837900852" width="12" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0ggp8wz_di" bpmnElement="SequenceFlow_0ggp8wz">
         <di:waypoint xsi:type="dc:Point" x="303" y="93" />
         <di:waypoint xsi:type="dc:Point" x="303" y="-11" />
-        <di:waypoint xsi:type="dc:Point" x="1152" y="-11" />
+        <di:waypoint xsi:type="dc:Point" x="1158" y="-11" />
         <di:waypoint xsi:type="dc:Point" x="1177" y="1105" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="719" y="-26" width="18" height="12" />
+          <dc:Bounds x="723" y="-26" width="18" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_22" bpmnElement="SequenceFlow_22" sourceElement="_BPMNShape_ScriptTask_281" targetElement="_BPMNShape_EndEvent_188">
-        <di:waypoint xsi:type="dc:Point" x="464" y="1431" />
-        <di:waypoint xsi:type="dc:Point" x="538" y="1431" />
+        <di:waypoint xsi:type="dc:Point" x="491" y="1533" />
+        <di:waypoint xsi:type="dc:Point" x="565" y="1533" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="501" y="1416" width="0" height="0" />
+          <dc:Bounds x="528" y="1518" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_12" bpmnElement="SequenceFlow_12" sourceElement="_BPMNShape_StartEvent_59" targetElement="_BPMNShape_ScriptTask_281">
-        <di:waypoint xsi:type="dc:Point" x="56" y="1431" />
-        <di:waypoint xsi:type="dc:Point" x="171" y="1431" />
+        <di:waypoint xsi:type="dc:Point" x="83" y="1533" />
+        <di:waypoint xsi:type="dc:Point" x="198" y="1533" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="114" y="1416" width="0" height="0" />
+          <dc:Bounds x="141" y="1518" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ExclusiveGateway_1938vz9_di" bpmnElement="ExclusiveGateway_1938vz9" isMarkerVisible="true">
@@ -907,15 +912,67 @@
         <dc:Bounds x="1028" y="1083" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_02fx6z6_di" bpmnElement="SequenceFlow_02fx6z6">
-        <di:waypoint xsi:type="dc:Point" x="271" y="1431" />
-        <di:waypoint xsi:type="dc:Point" x="364" y="1431" />
+        <di:waypoint xsi:type="dc:Point" x="298" y="1533" />
+        <di:waypoint xsi:type="dc:Point" x="391" y="1533" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="318" y="1416" width="0" height="0" />
+          <dc:Bounds x="345" y="1518" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ScriptTask_0cd144f_di" bpmnElement="SetFailedRollbackStatus">
-        <dc:Bounds x="171" y="1391" width="100" height="80" />
+        <dc:Bounds x="198" y="1493" width="100" height="80" />
       </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0ahc44p_di" bpmnElement="ExclusiveGateway_0ahc44p" isMarkerVisible="true">
+        <dc:Bounds x="465.5588822355289" y="837" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="500" y="805" width="82" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1gcfdej_di" bpmnElement="SequenceFlow_1gcfdej">
+        <di:waypoint xsi:type="dc:Point" x="516" y="862" />
+        <di:waypoint xsi:type="dc:Point" x="594" y="862" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="551" y="837.0195010054398" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_17ne2iz_di" bpmnElement="SequenceFlow_17ne2iz">
+        <di:waypoint xsi:type="dc:Point" x="491" y="887" />
+        <di:waypoint xsi:type="dc:Point" x="491" y="931" />
+        <di:waypoint xsi:type="dc:Point" x="-38" y="931" />
+        <di:waypoint xsi:type="dc:Point" x="-38" y="1347" />
+        <di:waypoint xsi:type="dc:Point" x="104" y="1347" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="459" y="884.8446601941747" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_17it51d_di" bpmnElement="SequenceFlow_17it51d">
+        <di:waypoint xsi:type="dc:Point" x="362" y="1347" />
+        <di:waypoint xsi:type="dc:Point" x="1078" y="1347" />
+        <di:waypoint xsi:type="dc:Point" x="1078" y="1163" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="720" y="1332" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0fvuowt_di" bpmnElement="SequenceFlow_0fvuowt">
+        <di:waypoint xsi:type="dc:Point" x="204" y="1347" />
+        <di:waypoint xsi:type="dc:Point" x="262" y="1347" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="233" y="1332" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_0i5a02m_di" bpmnElement="Task_0k9gnp2">
+        <dc:Bounds x="262" y="1307" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_008e45v_di" bpmnElement="Task_1sqxedz">
+        <dc:Bounds x="104" y="1308" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_08aruzz_di" bpmnElement="SequenceFlow_08aruzz">
+        <di:waypoint xsi:type="dc:Point" x="362" y="803" />
+        <di:waypoint xsi:type="dc:Point" x="491" y="803" />
+        <di:waypoint xsi:type="dc:Point" x="491" y="837" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="427" y="778" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
     </bpmndi:BPMNPlane>
   </bpmndi:BPMNDiagram>
-</bpmn2:definitions>
\ No newline at end of file
+</bpmn2:definitions>
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateVfModuleVolumeV2.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateVfModuleVolumeV2.bpmn
index 693fd36..18e972c 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateVfModuleVolumeV2.bpmn
+++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateVfModuleVolumeV2.bpmn
@@ -1,5 +1,5 @@
 <?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="_FhrCQG2BEeaNdqnn65BT4A" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
+<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="_FhrCQG2BEeaNdqnn65BT4A" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.8.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
   <bpmn2:process id="DoCreateVfModuleVolumeV2" name="DoCreateVfModuleVolumeV2" isExecutable="true">
     <bpmn2:scriptTask id="ScriptTask_preProcessRequest" name="Preprocess Request" scriptFormat="groovy">
       <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming>
@@ -21,7 +21,7 @@
       <bpmn2:outgoing>SequenceFlow_7</bpmn2:outgoing>
       <bpmn2:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
 def doCreateVfModuleVolumeV2 = new DoCreateVfModuleVolumeV2()
-doCreateVfModuleVolumeV2.executeMethod('buildWorkflowException', execution, 2500, "Volume group $DCVFMODVOLV2_volumeGroupName already exists in the system.", isDebugLogEnabled)]]></bpmn2:script>
+doCreateVfModuleVolumeV2.executeMethod('buildWorkflowException', execution, 2500, "Volume group name already exists in the system.", isDebugLogEnabled)]]></bpmn2:script>
     </bpmn2:scriptTask>
     <bpmn2:sequenceFlow id="SequenceFlow_7" name="" sourceRef="ScriptTask_createVolGrpExistsException" targetRef="EndEvent_6" />
     <bpmn2:exclusiveGateway id="ExclusiveGateway_aaiReturnCode404" name="AAI Return Code is 404?" default="SequenceFlow_volGrpName404No">
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateVnf.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateVnf.bpmn
index 5aa4d22..9bf3972 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateVnf.bpmn
+++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateVnf.bpmn
@@ -31,6 +31,7 @@
         <camunda:out source="GENGS_siResourceLink" target="GENGS_siResourceLink" />
         <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
         <camunda:in source="GENGS_type" target="GENGS_type" />
+        <camunda:in source="DoCVNF_serviceInstanceName" target="GENGS_serviceInstanceName" />
       </bpmn2:extensionElements>
       <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_4</bpmn2:outgoing>
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateVnfAndModules.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateVnfAndModules.bpmn
index a90c816..675b8fa 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateVnfAndModules.bpmn
+++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateVnfAndModules.bpmn
@@ -39,6 +39,7 @@
         <camunda:in source="lcpCloudRegionId" target="lcpCloudRegionId" />
         <camunda:in source="tenantId" target="tenantId" />
         <camunda:in source="false" target="usePreload" />
+        <camunda:in source="aLaCarte" target="aLaCarte" />
       </bpmn:extensionElements>
       <bpmn:incoming>SequenceFlow_1hf7k7q</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_1ixcnb6</bpmn:outgoing>
@@ -73,6 +74,7 @@
         <camunda:in source="lcpCloudRegionId" target="lcpCloudRegionId" />
         <camunda:in source="tenantId" target="tenantId" />
         <camunda:in source="false" target="usePreload" />
+        <camunda:in source="aLaCarte" target="aLaCarte" />
       </bpmn:extensionElements>
       <bpmn:incoming>SequenceFlow_1lh21yl</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_1llbx0k</bpmn:outgoing>
@@ -484,4 +486,4 @@
       </bpmndi:BPMNShape>
     </bpmndi:BPMNPlane>
   </bpmndi:BPMNDiagram>
-</bpmn:definitions>
\ No newline at end of file
+</bpmn:definitions>
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateVnfAndModulesRollback.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateVnfAndModulesRollback.bpmn
index aa36202..57baf6e 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateVnfAndModulesRollback.bpmn
+++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCreateVnfAndModulesRollback.bpmn
@@ -84,6 +84,7 @@
         <camunda:in source="sdncVersion" target="sdncVersion" />
         <camunda:out source="rolledBack" target="DCVM_rolledBack" />
         <camunda:out source="rollbackError" target="rollbackError" />
+        <camunda:in source="DCVAMR_aLaCarte" target="aLaCarte" />
       </bpmn2:extensionElements>
       <bpmn2:incoming>SequenceFlow_1ycq005</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_181hb2a</bpmn2:outgoing>
@@ -537,4 +538,4 @@
       </bpmndi:BPMNShape>
     </bpmndi:BPMNPlane>
   </bpmndi:BPMNDiagram>
-</bpmn2:definitions>
\ No newline at end of file
+</bpmn2:definitions>
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCustomDeleteE2EServiceInstance.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCustomDeleteE2EServiceInstance.bpmn
index 095948a..561a84b 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCustomDeleteE2EServiceInstance.bpmn
+++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoCustomDeleteE2EServiceInstance.bpmn
@@ -118,7 +118,7 @@
       <bpmn:extensionElements>
         <camunda:connector>
           <camunda:inputOutput>
-            <camunda:inputParameter name="url">${URN_mso_openecomp_adapters_db_endpoint}</camunda:inputParameter>
+            <camunda:inputParameter name="url">${URN_mso_adapters_openecomp_db_endpoint}</camunda:inputParameter>
             <camunda:inputParameter name="headers">
               <camunda:map>
                 <camunda:entry key="content-type">application/soap+xml</camunda:entry>
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoDeleteServiceInstance.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoDeleteServiceInstance.bpmn
index 10f688b..e5b18a1 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoDeleteServiceInstance.bpmn
+++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoDeleteServiceInstance.bpmn
@@ -74,15 +74,15 @@
     </bpmn2:endEvent>
     <bpmn2:sequenceFlow id="SequenceFlow_05jfuko" name="no" sourceRef="ExclusiveGateway_0590oev" targetRef="EndEvent_0ronxsz" />
     <bpmn2:sequenceFlow id="SequenceFlow_1w8ao21" sourceRef="ScriptTask_1uxr0cx" targetRef="CallActivity_1c5wru8" />
-    <bpmn2:exclusiveGateway id="ExclusiveGateway_1mrh7us" name="sdncVersion is 1610 " default="SequenceFlow_1dwch0k">
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_1mrh7us" name="need to invoke SDNC" default="SequenceFlow_1dwch0k">
       <bpmn2:incoming>SequenceFlow_1hcfvcj</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_0riudmc</bpmn2:outgoing>
       <bpmn2:outgoing>SequenceFlow_1dwch0k</bpmn2:outgoing>
     </bpmn2:exclusiveGateway>
-    <bpmn2:sequenceFlow id="SequenceFlow_0riudmc" name="yes" sourceRef="ExclusiveGateway_1mrh7us" targetRef="callGenericDeleteService">
-      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{ execution.getVariable("sdncVersion" )   == "1610" }]]></bpmn2:conditionExpression>
+    <bpmn2:sequenceFlow id="SequenceFlow_0riudmc" name="no" sourceRef="ExclusiveGateway_1mrh7us" targetRef="callGenericDeleteService">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{ execution.getVariable("sendToSDNC" )   == false }]]></bpmn2:conditionExpression>
     </bpmn2:sequenceFlow>
-    <bpmn2:sequenceFlow id="SequenceFlow_1dwch0k" name="no" sourceRef="ExclusiveGateway_1mrh7us" targetRef="ScriptTask_0xxwbdq" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1dwch0k" name="yes" sourceRef="ExclusiveGateway_1mrh7us" targetRef="ScriptTask_0xxwbdq" />
     <bpmn2:callActivity id="CallActivity_1s8pf0x" name="Call AAI Generic GetService" calledElement="GenericGetService">
       <bpmn2:extensionElements>
         <camunda:in source="serviceInstanceId" target="GENGS_serviceInstanceId" />
@@ -255,7 +255,7 @@
       <bpmndi:BPMNShape id="ExclusiveGateway_1mrh7us_di" bpmnElement="ExclusiveGateway_1mrh7us" isMarkerVisible="true">
         <dc:Bounds x="236" y="72" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="227" y="126" width="76" height="26" />
+          <dc:Bounds x="228" y="126" width="74" height="24" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0riudmc_di" bpmnElement="SequenceFlow_0riudmc">
@@ -264,7 +264,7 @@
         <di:waypoint xsi:type="dc:Point" x="1252" y="-20" />
         <di:waypoint xsi:type="dc:Point" x="1252" y="57" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="753" y="-35" width="18" height="14" />
+          <dc:Bounds x="756" y="-35" width="12" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_1dwch0k_di" bpmnElement="SequenceFlow_1dwch0k">
@@ -272,7 +272,7 @@
         <di:waypoint xsi:type="dc:Point" x="310" y="97" />
         <di:waypoint xsi:type="dc:Point" x="353" y="97" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="308" y="101.4811676034096" width="13" height="12" />
+          <dc:Bounds x="306" y="101" width="18" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="CallActivity_1s8pf0x_di" bpmnElement="CallActivity_1s8pf0x">
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoDeleteVfModule.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoDeleteVfModule.bpmn
index b8c6aa3..f147639 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoDeleteVfModule.bpmn
+++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoDeleteVfModule.bpmn
Binary files differ
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoDeleteVnfAndModules.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoDeleteVnfAndModules.bpmn
index 9850552..d066d1e 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoDeleteVnfAndModules.bpmn
+++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoDeleteVnfAndModules.bpmn
@@ -68,6 +68,8 @@
         <camunda:in source="DDVAM_sdncVersion" target="sdncVersion" />
         <camunda:in source="DDVAM_isVidRequest" target="isVidRequest" />
         <camunda:out source="WorkflowException" target="WorkflowException" />
+        <camunda:in source="retainResources" target="retainResources" />
+        <camunda:in source="aLaCarte" target="aLaCarte" />
       </bpmn2:extensionElements>
       <bpmn2:incoming>SequenceFlow_1xujrk5</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_1p4ycii</bpmn2:outgoing>
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoUpdateVnfAndModules.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoUpdateVnfAndModules.bpmn
index c110580..609d630 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoUpdateVnfAndModules.bpmn
+++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/DoUpdateVnfAndModules.bpmn
@@ -68,6 +68,7 @@
         <camunda:in source="sdncVersion" target="sdncVersion" />
         <camunda:in source="DUVAM_vfModuleModelInfo" target="vfModuleModelInfo" />
         <camunda:in source="usePreload" target="usePreload" />
+        <camunda:in source="vfModuleInputParams" target="vfModuleInputParams" />
       </bpmn2:extensionElements>
       <bpmn2:incoming>SequenceFlow_04o61yk</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_1p4ycii</bpmn2:outgoing>
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/RollbackVnf.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/RollbackVnf.bpmn
new file mode 100644
index 0000000..2fa1fa9
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/RollbackVnf.bpmn
@@ -0,0 +1,343 @@
+<?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.4.0">
+  <bpmn:process id="RollbackVnf" name="RollbackVnf" isExecutable="true">
+    <bpmn:startEvent id="StartEvent_1">
+      <bpmn:outgoing>SequenceFlow_0bie3cu</bpmn:outgoing>
+    </bpmn:startEvent>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_0dysixy" name="Start VNF?" default="SequenceFlow_0tj5bkd">
+      <bpmn:incoming>SequenceFlow_0mpoa26</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_1pirwg0</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1lne8je</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_0tj5bkd</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_1iuuwqx" name="Unlock VNF?" default="SequenceFlow_0b2y2dw">
+      <bpmn:incoming>SequenceFlow_0tj5bkd</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_1ney8l6</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0gsro0z</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_0b2y2dw</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_1oswdsn" name="Unset closedLoopDisabled Flag?" default="SequenceFlow_0c5ovtd">
+      <bpmn:incoming>SequenceFlow_0b2y2dw</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_11556y3</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0skjb2u</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_0c5ovtd</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:exclusiveGateway id="ExclusiveGateway_0bu2ybs" name="Unset VNF inMaintenance Flag?" default="SequenceFlow_03qkk4e">
+      <bpmn:incoming>SequenceFlow_0g18wrd</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_0c5ovtd</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_12bz15k</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_03qkk4e</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:sequenceFlow id="SequenceFlow_1lne8je" name="yes" sourceRef="ExclusiveGateway_0dysixy" targetRef="Task_0zktukf">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("rollbackErrorCode") == "0" && execution.getVariable("rollbackVnfStop") == true]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="SequenceFlow_0tj5bkd" name="no" sourceRef="ExclusiveGateway_0dysixy" targetRef="ExclusiveGateway_1iuuwqx" />
+    <bpmn:sequenceFlow id="SequenceFlow_1ney8l6" sourceRef="Task_0zktukf" targetRef="ExclusiveGateway_1iuuwqx" />
+    <bpmn:sequenceFlow id="SequenceFlow_0gsro0z" name="yes" sourceRef="ExclusiveGateway_1iuuwqx" targetRef="Task_10x6bcq">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("rollbackErrorCode") == "0" && execution.getVariable("rollbackVnfLock") == true]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="SequenceFlow_0b2y2dw" name="no" sourceRef="ExclusiveGateway_1iuuwqx" targetRef="ExclusiveGateway_1oswdsn" />
+    <bpmn:sequenceFlow id="SequenceFlow_11556y3" sourceRef="Task_10x6bcq" targetRef="ExclusiveGateway_1oswdsn" />
+    <bpmn:sequenceFlow id="SequenceFlow_0skjb2u" name="yes" sourceRef="ExclusiveGateway_1oswdsn" targetRef="Task_0uvsonk">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("rollbackErrorCode") == "0" && execution.getVariable("rollbackSetClosedLoopDisabledFlag") == true]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="SequenceFlow_0g18wrd" sourceRef="Task_0uvsonk" targetRef="ExclusiveGateway_0bu2ybs" />
+    <bpmn:sequenceFlow id="SequenceFlow_12bz15k" name="yes" sourceRef="ExclusiveGateway_0bu2ybs" targetRef="Task_1uwp7nt">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("rollbackErrorCode") == "0" && execution.getVariable("rollbackSetVnfInMaintenanceFlag") == true]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="SequenceFlow_0bie3cu" sourceRef="StartEvent_1" targetRef="Task_1k4wj72" />
+    <bpmn:sequenceFlow id="SequenceFlow_1ix4dpf" sourceRef="Task_1k4wj72" targetRef="ExclusiveGateway_1lztiva" />
+    <bpmn:scriptTask id="Task_1k4wj72" name="PreProcess Rollback Request" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0bie3cu</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1ix4dpf</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def uvfm = new RollbackVnf()
+uvfm.preProcessRequest(execution)
+]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_0c5ovtd" name="no" sourceRef="ExclusiveGateway_1oswdsn" targetRef="ExclusiveGateway_0bu2ybs" />
+    <bpmn:callActivity id="Task_0zktukf" name="Call APP-C VNF Start" calledElement="AppCClient">
+      <bpmn:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="actionStart" target="action" />
+        <camunda:in source="vnfId" target="vnfId" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:out source="errorCode" target="rollbackErrorCode" />
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_1lne8je</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1ney8l6</bpmn:outgoing>
+    </bpmn:callActivity>
+    <bpmn:callActivity id="Task_10x6bcq" name="Call APP-C VNF Unlock" calledElement="AppCClient">
+      <bpmn:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="actionUnlock" target="action" />
+        <camunda:in source="vnfId" target="vnfId" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:out source="errorCode" target="rollbackErrorCode" />
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_0gsro0z</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_11556y3</bpmn:outgoing>
+    </bpmn:callActivity>
+    <bpmn:scriptTask id="Task_0uvsonk" name="Unset VF Is Closed Loop DisabledFlag in A&#38;AI" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_0skjb2u</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0g18wrd</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def uvfm = new RollbackVnf()
+uvfm.setClosedLoopDisabledInAAI(execution, false)
+]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:scriptTask id="Task_1uwp7nt" name="Unset VNF In Maintenance Flag in A&#38;AI" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_12bz15k</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0tkvd6f</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def uvfm = new RollbackVnf()
+uvfm.setVnfInMaintFlagInAAI(execution, false)
+]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:endEvent id="EndEvent_1ull6mm">
+      <bpmn:incoming>SequenceFlow_1p3pyal</bpmn:incoming>
+    </bpmn:endEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_03qkk4e" name="no" sourceRef="ExclusiveGateway_0bu2ybs" targetRef="Task_1bahewx" />
+    <bpmn:sequenceFlow id="SequenceFlow_0tkvd6f" sourceRef="Task_1uwp7nt" targetRef="Task_1bahewx" />
+    <bpmn:scriptTask id="Task_1bahewx" name="Set Rollback Result" scriptFormat="groovy">
+      <bpmn:incoming>SequenceFlow_03qkk4e</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_0tkvd6f</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1p3pyal</bpmn:outgoing>
+      <bpmn:script><![CDATA[import org.openecomp.mso.bpmn.infrastructure.scripts.*
+def uvfm = new RollbackVnf()
+uvfm.setRollbackResult(execution)
+]]></bpmn:script>
+    </bpmn:scriptTask>
+    <bpmn:sequenceFlow id="SequenceFlow_1p3pyal" sourceRef="Task_1bahewx" targetRef="EndEvent_1ull6mm" />
+    <bpmn:exclusiveGateway id="ExclusiveGateway_1lztiva" name="Resume Traffic?" default="SequenceFlow_0mpoa26">
+      <bpmn:incoming>SequenceFlow_1ix4dpf</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_0mpoa26</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_05ihl7f</bpmn:outgoing>
+    </bpmn:exclusiveGateway>
+    <bpmn:sequenceFlow id="SequenceFlow_0mpoa26" name="no" sourceRef="ExclusiveGateway_1lztiva" targetRef="ExclusiveGateway_0dysixy" />
+    <bpmn:sequenceFlow id="SequenceFlow_05ihl7f" name="yes" sourceRef="ExclusiveGateway_1lztiva" targetRef="Task_0d4mz7a">
+      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression" language="groovy"><![CDATA[execution.getVariable("rollbackErrorCode") == "0" && execution.getVariable("rollbackQuiesceTraffic") == true]]></bpmn:conditionExpression>
+    </bpmn:sequenceFlow>
+    <bpmn:sequenceFlow id="SequenceFlow_1pirwg0" sourceRef="Task_0d4mz7a" targetRef="ExclusiveGateway_0dysixy" />
+    <bpmn:callActivity id="Task_0d4mz7a" name="Call APP-C Resume Traffic" calledElement="AppCClient">
+      <bpmn:extensionElements>
+        <camunda:in source="msoRequestId" target="msoRequestId" />
+        <camunda:in source="actionResumeTraffic" target="action" />
+        <camunda:in source="payload" target="payload" />
+        <camunda:in source="vnfId" target="vnfId" />
+        <camunda:in source="vnfName" target="vnfName" />
+        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
+        <camunda:out source="errorCode" target="rollbackErrorCode" />
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_05ihl7f</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1pirwg0</bpmn:outgoing>
+    </bpmn:callActivity>
+  </bpmn:process>
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="RollbackVnf">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
+        <dc:Bounds x="164" y="154" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="182" y="190" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0dysixy_di" bpmnElement="ExclusiveGateway_0dysixy" isMarkerVisible="true">
+        <dc:Bounds x="786" y="147" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="784" y="197" width="54" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1iuuwqx_di" bpmnElement="ExclusiveGateway_1iuuwqx" isMarkerVisible="true">
+        <dc:Bounds x="1040" y="147" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1032" y="197" width="65" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1oswdsn_di" bpmnElement="ExclusiveGateway_1oswdsn" isMarkerVisible="true">
+        <dc:Bounds x="1297" y="147" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1279" y="197" width="86" height="36" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0bu2ybs_di" bpmnElement="ExclusiveGateway_0bu2ybs" isMarkerVisible="true">
+        <dc:Bounds x="1532" y="147" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1520" y="197" width="73" height="36" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1lne8je_di" bpmnElement="SequenceFlow_1lne8je">
+        <di:waypoint xsi:type="dc:Point" x="811" y="147" />
+        <di:waypoint xsi:type="dc:Point" x="811" y="61" />
+        <di:waypoint xsi:type="dc:Point" x="877" y="61" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="817" y="104" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0tj5bkd_di" bpmnElement="SequenceFlow_0tj5bkd">
+        <di:waypoint xsi:type="dc:Point" x="836" y="172" />
+        <di:waypoint xsi:type="dc:Point" x="1040" y="172" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="932" y="151" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ney8l6_di" bpmnElement="SequenceFlow_1ney8l6">
+        <di:waypoint xsi:type="dc:Point" x="977" y="61" />
+        <di:waypoint xsi:type="dc:Point" x="1065" y="61" />
+        <di:waypoint xsi:type="dc:Point" x="1065" y="147" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1021" y="46" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0gsro0z_di" bpmnElement="SequenceFlow_0gsro0z">
+        <di:waypoint xsi:type="dc:Point" x="1065" y="147" />
+        <di:waypoint xsi:type="dc:Point" x="1065" y="61" />
+        <di:waypoint xsi:type="dc:Point" x="1143" y="61" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1071" y="94" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0b2y2dw_di" bpmnElement="SequenceFlow_0b2y2dw">
+        <di:waypoint xsi:type="dc:Point" x="1090" y="172" />
+        <di:waypoint xsi:type="dc:Point" x="1297" y="172" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1188" y="147" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_11556y3_di" bpmnElement="SequenceFlow_11556y3">
+        <di:waypoint xsi:type="dc:Point" x="1243" y="61" />
+        <di:waypoint xsi:type="dc:Point" x="1322" y="61" />
+        <di:waypoint xsi:type="dc:Point" x="1322" y="147" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1283" y="46" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0skjb2u_di" bpmnElement="SequenceFlow_0skjb2u">
+        <di:waypoint xsi:type="dc:Point" x="1322" y="147" />
+        <di:waypoint xsi:type="dc:Point" x="1322" y="61" />
+        <di:waypoint xsi:type="dc:Point" x="1376" y="61" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1328" y="94" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0g18wrd_di" bpmnElement="SequenceFlow_0g18wrd">
+        <di:waypoint xsi:type="dc:Point" x="1476" y="61" />
+        <di:waypoint xsi:type="dc:Point" x="1557" y="61" />
+        <di:waypoint xsi:type="dc:Point" x="1557" y="147" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1517" y="46" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_12bz15k_di" bpmnElement="SequenceFlow_12bz15k">
+        <di:waypoint xsi:type="dc:Point" x="1557" y="147" />
+        <di:waypoint xsi:type="dc:Point" x="1557" y="61" />
+        <di:waypoint xsi:type="dc:Point" x="1600" y="61" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1563" y="94" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0bie3cu_di" bpmnElement="SequenceFlow_0bie3cu">
+        <di:waypoint xsi:type="dc:Point" x="200" y="172" />
+        <di:waypoint xsi:type="dc:Point" x="315" y="172" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="258" y="157" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ix4dpf_di" bpmnElement="SequenceFlow_1ix4dpf">
+        <di:waypoint xsi:type="dc:Point" x="415" y="172" />
+        <di:waypoint xsi:type="dc:Point" x="524" y="172" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="470" y="157" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_12bnvgq_di" bpmnElement="Task_1k4wj72">
+        <dc:Bounds x="315" y="132" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0c5ovtd_di" bpmnElement="SequenceFlow_0c5ovtd">
+        <di:waypoint xsi:type="dc:Point" x="1347" y="172" />
+        <di:waypoint xsi:type="dc:Point" x="1532" y="172" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1434" y="147" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_0gw56ug_di" bpmnElement="Task_0zktukf">
+        <dc:Bounds x="877" y="21" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_04vh5qa_di" bpmnElement="Task_10x6bcq">
+        <dc:Bounds x="1143" y="21" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_0k4zdeb_di" bpmnElement="Task_0uvsonk">
+        <dc:Bounds x="1376" y="21" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ScriptTask_1uergdm_di" bpmnElement="Task_1uwp7nt">
+        <dc:Bounds x="1600" y="21" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_1ull6mm_di" bpmnElement="EndEvent_1ull6mm">
+        <dc:Bounds x="1909" y="145" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1927" y="181" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_03qkk4e_di" bpmnElement="SequenceFlow_03qkk4e">
+        <di:waypoint xsi:type="dc:Point" x="1582" y="172" />
+        <di:waypoint xsi:type="dc:Point" x="1664" y="172" />
+        <di:waypoint xsi:type="dc:Point" x="1664" y="172" />
+        <di:waypoint xsi:type="dc:Point" x="1728" y="172" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1678" y="145" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0tkvd6f_di" bpmnElement="SequenceFlow_0tkvd6f">
+        <di:waypoint xsi:type="dc:Point" x="1700" y="61" />
+        <di:waypoint xsi:type="dc:Point" x="1778" y="61" />
+        <di:waypoint xsi:type="dc:Point" x="1778" y="123" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1739" y="46" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ScriptTask_1hobybp_di" bpmnElement="Task_1bahewx">
+        <dc:Bounds x="1728" y="123" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1p3pyal_di" bpmnElement="SequenceFlow_1p3pyal">
+        <di:waypoint xsi:type="dc:Point" x="1829" y="163" />
+        <di:waypoint xsi:type="dc:Point" x="1877" y="163" />
+        <di:waypoint xsi:type="dc:Point" x="1877" y="163" />
+        <di:waypoint xsi:type="dc:Point" x="1909" y="163" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1892" y="163" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1lztiva_di" bpmnElement="ExclusiveGateway_1lztiva" isMarkerVisible="true">
+        <dc:Bounds x="524" y="147" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="508" y="197" width="81" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0mpoa26_di" bpmnElement="SequenceFlow_0mpoa26">
+        <di:waypoint xsi:type="dc:Point" x="574" y="172" />
+        <di:waypoint xsi:type="dc:Point" x="786" y="172" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="674" y="147" width="12" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_05ihl7f_di" bpmnElement="SequenceFlow_05ihl7f">
+        <di:waypoint xsi:type="dc:Point" x="549" y="147" />
+        <di:waypoint xsi:type="dc:Point" x="549" y="61" />
+        <di:waypoint xsi:type="dc:Point" x="623" y="61" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="555" y="94" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1pirwg0_di" bpmnElement="SequenceFlow_1pirwg0">
+        <di:waypoint xsi:type="dc:Point" x="723" y="61" />
+        <di:waypoint xsi:type="dc:Point" x="811" y="61" />
+        <di:waypoint xsi:type="dc:Point" x="811" y="147" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="767" y="46" width="0" height="0" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="CallActivity_1tber80_di" bpmnElement="Task_0d4mz7a">
+        <dc:Bounds x="623" y="21" width="100" height="80" />
+      </bpmndi:BPMNShape>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn:definitions>
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/SetRefactorServiceDecomp.bpmn b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/SetRefactorServiceDecomp.bpmn
new file mode 100644
index 0000000..c4f107b
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/main/resources/subprocess/SetRefactorServiceDecomp.bpmn
@@ -0,0 +1,68 @@
+<?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.8.2">
+  <bpmn:process id="SetRefactorServiceDecomp" name="SetRefactorServiceDecomp" isExecutable="true">
+    <bpmn:startEvent id="StartEvent_1" name="start">
+      <bpmn:outgoing>SequenceFlow_1aizx5q</bpmn:outgoing>
+    </bpmn:startEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_1aizx5q" sourceRef="StartEvent_1" targetRef="Task_0gznhje" />
+    <bpmn:endEvent id="EndEvent_1yia7od" name="end">
+      <bpmn:incoming>SequenceFlow_1fypndb</bpmn:incoming>
+    </bpmn:endEvent>
+    <bpmn:sequenceFlow id="SequenceFlow_1ipdcwj" sourceRef="Task_0gznhje" targetRef="CallActivity_0fl1ppe" />
+    <bpmn:serviceTask id="Task_0gznhje" name="Setup ServiceDecomp" camunda:class="org.openecomp.mso.bpmn.infrastructure.DoCreateServiceInstance.SetupServiceDecomp">
+      <bpmn:incoming>SequenceFlow_1aizx5q</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1ipdcwj</bpmn:outgoing>
+    </bpmn:serviceTask>
+    <bpmn:callActivity id="CallActivity_0fl1ppe" name="Call CreateSI" calledElement="CreateServiceInstanceV3">
+      <bpmn:extensionElements>
+        <camunda:in source="ServiceDecomposition" target="ServiceDecomposition" />
+      </bpmn:extensionElements>
+      <bpmn:incoming>SequenceFlow_1ipdcwj</bpmn:incoming>
+      <bpmn:outgoing>SequenceFlow_1fypndb</bpmn:outgoing>
+    </bpmn:callActivity>
+    <bpmn:sequenceFlow id="SequenceFlow_1fypndb" sourceRef="CallActivity_0fl1ppe" targetRef="EndEvent_1yia7od" />
+  </bpmn:process>
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="SetRefactorServiceDecomp">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
+        <dc:Bounds x="173" y="102" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="180" y="138" width="22" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1aizx5q_di" bpmnElement="SequenceFlow_1aizx5q">
+        <di:waypoint xsi:type="dc:Point" x="209" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="254" y="120" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="231.5" y="99" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="EndEvent_1yia7od_di" bpmnElement="EndEvent_1yia7od">
+        <dc:Bounds x="544" y="102" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="553" y="142" width="18" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ipdcwj_di" bpmnElement="SequenceFlow_1ipdcwj">
+        <di:waypoint xsi:type="dc:Point" x="354" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="392" y="120" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="328" y="99" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ServiceTask_0kwb6lz_di" bpmnElement="Task_0gznhje">
+        <dc:Bounds x="254" y="80" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="CallActivity_0fl1ppe_di" bpmnElement="CallActivity_0fl1ppe">
+        <dc:Bounds x="392" y="80" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1fypndb_di" bpmnElement="SequenceFlow_1fypndb">
+        <di:waypoint xsi:type="dc:Point" x="492" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="544" y="120" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="518" y="99" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn:definitions>
diff --git a/bpmn/MSOInfrastructureBPMN/src/main/webapp/WEB-INF/web.xml b/bpmn/MSOInfrastructureBPMN/src/main/webapp/WEB-INF/web.xml
index 907f511..a357c2a 100644
--- a/bpmn/MSOInfrastructureBPMN/src/main/webapp/WEB-INF/web.xml
+++ b/bpmn/MSOInfrastructureBPMN/src/main/webapp/WEB-INF/web.xml
@@ -25,7 +25,7 @@
     <servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class>
     <init-param>
       <param-name>javax.ws.rs.Application</param-name>
-      <param-value>org.openecomp.mso.bpmn.infrastructure.workflow.service.WorkflowResourceApplication</param-value>
+      <param-value>org.openecomp.mso.bpmn.common.workflow.service.WorkflowResourceApplication</param-value>
     </init-param>
   </servlet>
   <servlet-mapping>
@@ -33,6 +33,10 @@
     <url-pattern>/*</url-pattern>
   </servlet-mapping>
   <context-param>
+    <param-name>contextConfigLocation</param-name>
+    <param-value>/WEB-INF/applicationContext.xml</param-value>
+  </context-param>
+  <context-param>
     <param-name>mso.configuration</param-name>
     <param-value>MSO_PROP_TOPOLOGY=topology.properties</param-value>
   </context-param>
@@ -44,6 +48,9 @@
     <param-name>resteasy.resources</param-name>
     <param-value>org.openecomp.mso.logger.MsoLoggingServlet,org.openecomp.mso.bpmn.core.HealthCheckHandler</param-value>
   </context-param>
+  <listener>
+    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
+  </listener>
   <filter>
     <filter-name>LogFilter</filter-name>
     <filter-class>org.openecomp.mso.logger.LogFilter</filter-class>
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateGenericAlaCarteServiceInstanceTest.groovy b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateGenericAlaCarteServiceInstanceTest.groovy
index e5d9d62..adab1bf 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateGenericAlaCarteServiceInstanceTest.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateGenericAlaCarteServiceInstanceTest.groovy
@@ -4,7 +4,7 @@
 import org.camunda.bpm.engine.RepositoryService
 import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity
 import org.camunda.bpm.engine.repository.ProcessDefinition
-import org.camunda.bpm.engine.runtime.Execution
+import org.camunda.bpm.engine.delegate.DelegateExecution
 import org.junit.Before
 import org.junit.Rule
 import org.junit.Test
@@ -110,7 +110,7 @@
 			
 		}
 
-		public void initializeVariables(Execution mockExecution) {
+		public void initializeVariables(DelegateExecution mockExecution) {
 			
 			//verify(mockExecution).setVariable(Prefix + "Success", false)
 			
@@ -131,7 +131,7 @@
 			when(mockExecution.getVariable("bpmnRequest")).thenReturn(jsonIncomingRequest)
 			try{
 									
-				// preProcessRequest(Execution execution)						
+				// preProcessRequest(DelegateExecution execution)						
 				CreateGenericALaCarteServiceInstance createGenericALaCarteServiceInstance = new CreateGenericALaCarteServiceInstance()
 				createGenericALaCarteServiceInstance.preProcessRequest(mockExecution)
 
@@ -157,7 +157,7 @@
 			when(mockExecution.getVariable("mso-request-id")).thenReturn("e8ebf6a0-f8ea-4dc0-8b99-fe98a87722d6")
 			when(mockExecution.getVariable("serviceInstanceId")).thenReturn("f70e927b-6087-4974-9ef8-c5e4d5847ca4")
 			try{
-				// preProcessRequest(Execution execution)
+				// preProcessRequest(DelegateExecution execution)
 				CreateGenericALaCarteServiceInstance createGenericALaCarteServiceInstance = new CreateGenericALaCarteServiceInstance()
 				createGenericALaCarteServiceInstance.sendSyncResponse(mockExecution)
 
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateNetworkInstanceTest.groovy b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateNetworkInstanceTest.groovy
index 13e107e..7c5aec3 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateNetworkInstanceTest.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/CreateNetworkInstanceTest.groovy
@@ -4,7 +4,7 @@
 import org.camunda.bpm.engine.RepositoryService
 import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity
 import org.camunda.bpm.engine.repository.ProcessDefinition
-import org.camunda.bpm.engine.runtime.Execution
+import org.camunda.bpm.engine.delegate.DelegateExecution
 import org.junit.Before
 import org.junit.Rule
 import org.junit.Test
@@ -120,7 +120,7 @@
 			
 		}
 
-		public void initializeVariables(Execution mockExecution) {
+		public void initializeVariables(DelegateExecution mockExecution) {
 			
 			verify(mockExecution).setVariable(Prefix + "Success", false)
 			
@@ -141,7 +141,7 @@
 			when(mockExecution.getVariable("bpmnRequest")).thenReturn(jsonIncomingRequest)
 			
 									
-			// preProcessRequest(Execution execution)						
+			// preProcessRequest(DelegateExecution execution)						
 			CreateNetworkInstance CreateNetworkInstance = new CreateNetworkInstance()
 			CreateNetworkInstance.preProcessRequest(mockExecution)
 
@@ -164,7 +164,7 @@
 			// Initialize prerequisite variables
 			when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
 									
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			CreateNetworkInstance CreateNetworkInstance = new CreateNetworkInstance()
 			CreateNetworkInstance.getNetworkModelInfo(mockExecution)
 
@@ -185,7 +185,7 @@
 			when(mockExecution.getVariable("mso-request-id")).thenReturn("e8ebf6a0-f8ea-4dc0-8b99-fe98a87722d6")
 			when(mockExecution.getVariable("serviceInstanceId")).thenReturn("f70e927b-6087-4974-9ef8-c5e4d5847ca4")
 			
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			CreateNetworkInstance CreateNetworkInstance = new CreateNetworkInstance()
 			CreateNetworkInstance.sendSyncResponse(mockExecution)
 
@@ -233,7 +233,7 @@
 			when(mockExecution.getVariable("URN_mso_adapters_db_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
 			when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
 
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			CreateNetworkInstance CreateNetworkInstance = new CreateNetworkInstance()
 			CreateNetworkInstance.prepareDBRequestError(mockExecution)
 			
@@ -254,7 +254,7 @@
 			when(mockExecution.getVariable("mso-request-id")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
 			when(mockExecution.getVariable(Prefix + "dbReturnCode")).thenReturn("200")
 			
-			// postProcessResponse(Execution execution)
+			// postProcessResponse(DelegateExecution execution)
 			CreateNetworkInstance CreateNetworkInstance = new CreateNetworkInstance()
 			CreateNetworkInstance.prepareCompletion(mockExecution)
 
@@ -284,7 +284,7 @@
 			//when(mockExecution.getVariable("WorkflowException")).thenReturn(sndcWorkflowException)
 			when(mockExecution.getVariable("WorkflowException")).thenReturn(sndcWorkflowException)
 			
-			// buildErrorResponse(Execution execution)
+			// buildErrorResponse(DelegateExecution execution)
 			CreateNetworkInstance CreateNetworkInstance = new CreateNetworkInstance()
 			CreateNetworkInstance.buildErrorResponse(mockExecution)
 			
@@ -305,7 +305,7 @@
 			when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
 			when(mockExecution.getVariable("CMSO_ResponseCode")).thenReturn("200")
 			
-			// postProcessResponse(Execution execution)						
+			// postProcessResponse(DelegateExecution execution)						
 			CreateNetworkInstance CreateNetworkInstance = new CreateNetworkInstance()
 			CreateNetworkInstance.postProcessResponse(mockExecution)
 
@@ -325,7 +325,7 @@
 			// Initialize prerequisite variables
 			when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
 									
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			CreateNetworkInstance CreateNetworkInstance = new CreateNetworkInstance()
 			CreateNetworkInstance.processRollbackData(mockExecution)
 
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteCustomE2EServiceInstanceTest.groovy b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteCustomE2EServiceInstanceTest.groovy
index 8ccb18a..e217521 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteCustomE2EServiceInstanceTest.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteCustomE2EServiceInstanceTest.groovy
@@ -5,9 +5,9 @@
 import org.camunda.bpm.engine.RepositoryService
 import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity
 import org.camunda.bpm.engine.repository.ProcessDefinition
-import org.camunda.bpm.engine.runtime.Execution
 import org.junit.Before
 import org.junit.BeforeClass
+import org.junit.Ignore
 import org.junit.Rule
 import org.junit.Test
 import org.mockito.MockitoAnnotations
@@ -76,6 +76,7 @@
         super("DeleteCustomE2EServiceInstance")
     }
     @Test
+	@Ignore // 1802 merge
     public void preProcessRequestTest () {
         ExecutionEntity mex = setupMock()
         def map = setupMap(mex)
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteGenericAlaCarteServiceInstanceTest.groovy b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteGenericAlaCarteServiceInstanceTest.groovy
index ae25c33..3b0e439 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteGenericAlaCarteServiceInstanceTest.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteGenericAlaCarteServiceInstanceTest.groovy
@@ -4,7 +4,7 @@
 import org.camunda.bpm.engine.RepositoryService
 import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity
 import org.camunda.bpm.engine.repository.ProcessDefinition
-import org.camunda.bpm.engine.runtime.Execution
+import org.camunda.bpm.engine.delegate.DelegateExecution
 import org.junit.Before
 import org.junit.Rule
 import org.junit.Test
@@ -67,7 +67,7 @@
 			
 		}
 
-		public void initializeVariables(Execution mockExecution) {
+		public void initializeVariables(DelegateExecution mockExecution) {
 			
 			verify(mockExecution).setVariable(Prefix + "Success", false)
 			
@@ -88,7 +88,7 @@
 			when(mockExecution.getVariable("bpmnRequest")).thenReturn(jsonIncomingRequest)
 			
 			try {
-                // preProcessRequest(Execution execution)
+                // preProcessRequest(DelegateExecution execution)
                 DeleteGenericALaCarteServiceInstance deleteGenericALaCarteServiceInstance = new DeleteGenericALaCarteServiceInstance()
                 deleteGenericALaCarteServiceInstance.preProcessRequest(mockExecution)
 
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteNetworkInstanceTest.groovy b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteNetworkInstanceTest.groovy
index 3046978..46a737f 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteNetworkInstanceTest.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DeleteNetworkInstanceTest.groovy
@@ -7,7 +7,7 @@
 import org.camunda.bpm.engine.RepositoryService
 import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity
 import org.camunda.bpm.engine.repository.ProcessDefinition
-import org.camunda.bpm.engine.runtime.Execution
+import org.camunda.bpm.engine.delegate.DelegateExecution
 import org.junit.Before
 import org.junit.Rule
 import org.junit.Test
@@ -197,7 +197,7 @@
 
 		}
 
-		public void initializeVariables (Execution mockExecution) {
+		public void initializeVariables (DelegateExecution mockExecution) {
 			
 			
 			verify(mockExecution).setVariable(Prefix + "Success", false)
@@ -219,7 +219,7 @@
 			// Initialize prerequisite variables
 			when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
 									
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			DeleteNetworkInstance DeleteNetworkInstance = new DeleteNetworkInstance()
 			DeleteNetworkInstance.getNetworkModelInfo(mockExecution)
 
@@ -240,7 +240,7 @@
 			when(mockExecution.getVariable("mso-request-id")).thenReturn("e8ebf6a0-f8ea-4dc0-8b99-fe98a87722d6")
 			when(mockExecution.getVariable("serviceInstanceId")).thenReturn("f70e927b-6087-4974-9ef8-c5e4d5847ca4")
 			
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			DeleteNetworkInstance DeleteNetworkInstance = new DeleteNetworkInstance()
 			DeleteNetworkInstance.sendSyncResponse(mockExecution)
 
@@ -282,7 +282,7 @@
 			when(mockExecution.getVariable(Prefix + "source")).thenReturn("PORTAL")
 			when(mockExecution.getVariable("mso-request-id")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
 			
-			// postProcessResponse(Execution execution)
+			// postProcessResponse(DelegateExecution execution)
 			DeleteNetworkInstance DeleteNetworkInstance = new DeleteNetworkInstance()
 			DeleteNetworkInstance.prepareCompletion(mockExecution)
 
@@ -313,7 +313,7 @@
 			when(mockExecution.getVariable("URN_mso_adapters_db_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
 			when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
 
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			DeleteNetworkInstance DeleteNetworkInstance = new DeleteNetworkInstance()
 			DeleteNetworkInstance.prepareDBRequestError(mockExecution)
 			
@@ -333,7 +333,7 @@
 			when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
 			when(mockExecution.getVariable("CMSO_ResponseCode")).thenReturn("200")
 			
-			// postProcessResponse(Execution execution)						
+			// postProcessResponse(DelegateExecution execution)						
 			DeleteNetworkInstance DeleteNetworkInstance = new DeleteNetworkInstance()
 			DeleteNetworkInstance.postProcessResponse(mockExecution)
 
@@ -359,7 +359,7 @@
 			when(mockExecution.getVariable("WorkflowException")).thenReturn(sndcWorkflowExceptionObj)
 			when(mockExecution.getVariable(Prefix + "source")).thenReturn("PORTAL")
 			
-			// buildErrorResponse(Execution execution)
+			// buildErrorResponse(DelegateExecution execution)
 			DeleteNetworkInstance DeleteNetworkInstance = new DeleteNetworkInstance()
 			DeleteNetworkInstance.buildErrorResponse(mockExecution)
 			
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateNetworkInstanceRollbackTest.groovy b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateNetworkInstanceRollbackTest.groovy
index b22431a..8c7afc9 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateNetworkInstanceRollbackTest.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateNetworkInstanceRollbackTest.groovy
@@ -8,7 +8,7 @@
 import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity
 import org.camunda.bpm.engine.impl.pvm.process.ProcessDefinitionImpl
 import org.camunda.bpm.engine.repository.ProcessDefinition
-import org.camunda.bpm.engine.runtime.Execution;
+import org.camunda.bpm.engine.delegate.DelegateExecution;
 import org.mockito.MockitoAnnotations
 import org.mockito.runners.MockitoJUnitRunner
 import org.mockito.internal.debugging.MockitoDebuggerImpl
@@ -89,13 +89,13 @@
       <network-information>
          <network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id>
          <network-type>CONTRAIL_EXTERNAL</network-type>
-         <onap-model-information>
+         <ecomp-model-information>
             <model-invariant-uuid>invariant-uuid</model-invariant-uuid>
             <model-customization-uuid>customization-uuid</model-customization-uuid>
             <model-uuid>uuid</model-uuid>
             <model-version>version</model-version>
             <model-name>CONTRAIL_EXTERNAL</model-name>
-         </onap-model-information>
+         </ecomp-model-information>
       </network-information>
       <network-request-information>
          <network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id>
@@ -137,13 +137,13 @@
       <network-information>
          <network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id>
          <network-type>CONTRAIL_EXTERNAL</network-type>
-         <onap-model-information>
+         <ecomp-model-information>
             <model-invariant-uuid>invariant-uuid</model-invariant-uuid>
             <model-customization-uuid>customization-uuid</model-customization-uuid>
             <model-uuid>uuid</model-uuid>
             <model-version>version</model-version>
             <model-name>CONTRAIL_EXTERNAL</model-name>
-         </onap-model-information>
+         </ecomp-model-information>
       </network-information>
       <network-request-information>
          <network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id>
@@ -165,7 +165,7 @@
 			
 		}
 		
-		public void initializeVariables (Execution mockExecution) {
+		public void initializeVariables (DelegateExecution mockExecution) {
 
 			verify(mockExecution).setVariable(Prefix + "WorkflowException", null)
 			
@@ -216,7 +216,7 @@
 			when(mockExecution.getVariable("URN_mso_adapters_sdnc_resource_endpoint")).thenReturn("http://localhost:28090/SDNCAdapterRpc")
 			
 			
-			// preProcessRequest(Execution execution)						
+			// preProcessRequest(DelegateExecution execution)						
 			DoCreateNetworkInstanceRollback DoCreateNetworkInstanceRollback = new DoCreateNetworkInstanceRollback()
 			DoCreateNetworkInstanceRollback.preProcessRequest(mockExecution)
 			
@@ -242,7 +242,7 @@
 			when(mockExecution.getVariable(Prefix + "rollbackSDNCRequest")).thenReturn(rollbackSDNCRequest)
 			when(mockExecution.getVariable("URN_mso_adapters_network_rest_endpoint")).thenReturn("http://localhost:28090/networks/NetworkAdapter")
 			
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			DoCreateNetworkInstanceRollback DoCreateNetworkInstanceRollback = new DoCreateNetworkInstanceRollback()
 			DoCreateNetworkInstanceRollback.callPONetworkAdapter(mockExecution)
 			
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateNetworkInstanceTest.groovy b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateNetworkInstanceTest.groovy
index b45dd0b..552a560 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateNetworkInstanceTest.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateNetworkInstanceTest.groovy
@@ -14,7 +14,7 @@
 import org.camunda.bpm.engine.RepositoryService
 import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity
 import org.camunda.bpm.engine.repository.ProcessDefinition
-import org.camunda.bpm.engine.runtime.Execution
+import org.camunda.bpm.engine.delegate.DelegateExecution
 import org.junit.Before
 import org.junit.Ignore
 import org.junit.Rule
@@ -452,6 +452,190 @@
                <orchestration-status>pending-create</orchestration-status>
                <dhcp-enabled>true</dhcp-enabled>
 	  		   <subnet-name>subnetName</subnet-name>
+	  		   <ip-assignment-direction>true</ip-assignment-direction>
+	  		   <host-routes>
+                 <host-route>
+                   <host-route-id>string</host-route-id>
+                   <route-prefix>192.10.16.0/24</route-prefix>
+                   <next-hop>192.10.16.100/24</next-hop>
+                   <next-hop-type>ip-address</next-hop-type> 
+	  			   <resource-version>1505857301954</resource-version>
+                 </host-route>
+                 <host-route>
+                  <host-route-id>string</host-route-id>
+                  <route-prefix>192.110.17.0/24</route-prefix>
+                  <next-hop>192.110.17.110/24</next-hop>
+                  <next-hop-type>ip-address</next-hop-type>
+	  			  <resource-version>1505857301954</resource-version>
+                 </host-route>
+               </host-routes>
+               <relationship-list/>
+            </subnet>
+            <subnet>
+               <subnet-id>57e9a1ff-d14f-4071-a828-b19ae98eb2fc</subnet-id>
+               <gateway-address>107.239.52.1</gateway-address>
+               <network-start-address>107.239.52.0</network-start-address>
+               <cidr-mask>24</cidr-mask>
+               <ip-version>4</ip-version>
+               <orchestration-status>pending-create</orchestration-status>
+               <dhcp-enabled>true</dhcp-enabled>
+	  		   <subnet-name>subnetName</subnet-name>
+	  		   <ip-assignment-direction>true</ip-assignment-direction>
+	  		   <host-routes>
+                 <host-route>
+                   <host-route-id>string</host-route-id>
+                   <route-prefix>192.10.16.0/24</route-prefix>
+                   <next-hop>192.10.16.100/24</next-hop>
+                   <next-hop-type>ip-address</next-hop-type> 
+	  			  <resource-version>1505857301954</resource-version>
+                 </host-route>
+               </host-routes>
+               <relationship-list/>
+            </subnet>
+         </subnets>
+	  	 <segmentation-assignments>
+	  		<segmentation-id>414</segmentation-id>
+	  		<resource-version>4132176</resource-version>
+	  	 </segmentation-assignments>
+	  	 <segmentation-assignments>
+	  		<segmentation-id>415</segmentation-id>
+	  		<resource-version>4132176</resource-version>
+	  	 </segmentation-assignments>
+		 <ctag-assignments>
+			 <ctag-assignment>
+				 <vlan-id-inner>inner</vlan-id-inner>
+				 <resource-version>ctag-version</resource-version>
+	             <relationship-list>
+					<relationship>
+					   <related-to>tenant</related-to>
+					   <related-link>https://aai-ext1.test.com:8443/aai/v8/cloud-infrastructure/tenants/tenant/897deadc2b954a6bac6d3c197fb3525e/</related-link>
+					   <relationship-data>
+						  <relationship-key>tenant.tenant-id</relationship-key>
+						  <relationship-value>897deadc2b954a6bac6d3c197fb3525e</relationship-value>
+					   </relationship-data>
+					   <related-to-property>
+						  <property-key>tenant.tenant-name</property-key>
+						  <property-value>MSOTest1</property-value>
+					   </related-to-property>
+					</relationship>
+					<relationship>
+					   <related-to>vpn-binding</related-to>
+					   <related-link>https://aai-ext1.test.com:8443/aai/v8/network/vpn-bindings/vpn-binding/a290b841-f672-44dd-b9cd-6f8c20d7d8c8/</related-link>
+					   <relationship-data>
+						  <relationship-key>vpn-binding.vpn-id</relationship-key>
+						  <relationship-value>a290b841-f672-44dd-b9cd-6f8c20d7d8c8</relationship-value>
+					   </relationship-data>
+					   <related-to-property>
+						  <property-key>vpn-binding.vpn-name</property-key>
+						  <property-value>oam_protected_net_6_MTN5_msotest2</property-value>
+					   </related-to-property>
+					</relationship>
+					<relationship>
+					   <related-to>vpn-binding</related-to>
+					   <related-link>https://aai-ext1.test.com:8443/aai/v8/network/vpn-bindings/vpn-binding/24a4b507-853a-4a38-99aa-05fcc54be24d/</related-link>
+					   <relationship-data>
+						  <relationship-key>vpn-binding.vpn-id</relationship-key>
+						  <relationship-value>24a4b507-853a-4a38-99aa-05fcc54be24d</relationship-value>
+					   </relationship-data>
+					   <related-to-property>
+						  <property-key>vpn-binding.vpn-name</property-key>
+						  <property-value>oam_protected_net_6_MTN5_msotest1</property-value>
+					   </related-to-property>
+					</relationship>
+				 </relationship-list>
+				</ctag-assignment>
+		 </ctag-assignments>
+         <relationship-list>
+            <relationship>
+               <related-to>vpn-binding</related-to>
+               <related-link>https://aai-app-e2e.test.com:8443/aai/v8/network/vpn-bindings/vpn-binding/85f015d0-2e32-4c30-96d2-87a1a27f8017/</related-link>
+               <relationship-data>
+                  <relationship-key>vpn-binding.vpn-id</relationship-key>
+                  <relationship-value>85f015d0-2e32-4c30-96d2-87a1a27f8017</relationship-value>
+               </relationship-data>
+            </relationship>
+            <relationship>
+               <related-to>vpn-binding</related-to>
+               <related-link>https://aai-app-e2e.test.com:8443/aai/v8/network/vpn-bindings/vpn-binding/c980a6ef-3b88-49f0-9751-dbad8608d0a6/</related-link>
+               <relationship-data>
+                  <relationship-key>vpn-binding.vpn-id</relationship-key>
+                  <relationship-value>c980a6ef-3b88-49f0-9751-dbad8608d0a6</relationship-value>
+               </relationship-data>
+            </relationship>
+            <relationship>
+               <related-to>tenant</related-to>
+               <related-link>https://aai-app-e2e.test.com:8443/aai/v8/cloud-infrastructure/tenants/tenant/7dd5365547234ee8937416c65507d266/</related-link>
+               <relationship-data>
+                  <relationship-key>tenant.tenant-id</relationship-key>
+                  <relationship-value>7dd5365547234ee8937416c65507d266</relationship-value>
+               </relationship-data>
+            </relationship>
+			<relationship>
+			  <related-to>network-policy</related-to>
+			  <related-link>https://aai-app-e2e.test.com:8443/aai/v8/network/network-policies/network-policy/cee6d136-e378-4678-a024-2cd15f0ee0cg</related-link>
+			  <relationship-data>
+				  <relationship-key>network-policy.network-policy-id</relationship-key>
+				  <relationship-value>cee6d136-e378-4678-a024-2cd15f0ee0cg</relationship-value>
+			  </relationship-data>
+			</relationship>
+			<relationship>
+			   <related-to>route-table-reference</related-to>
+	  	       <related-link>https://aai-app-e2e.test.com:8443/aai/v8/network/route-table-references/route-table-reference/refFQDN1</related-link>
+			   <relationship-data>
+				  <relationship-key>route-table-reference.route-table-reference-id</relationship-key>
+				  <relationship-value>cee6d136-e378-4678-a024-2cd15f0ee0hi</relationship-value>
+			   </relationship-data>
+			</relationship>
+			<relationship>
+			   <related-to>route-table-reference</related-to>
+	  	       <related-link>https://aai-app-e2e.test.com:8443/aai/v8/network/route-table-references/route-table-reference/refFQDN2</related-link>
+			   <relationship-data>
+				  <relationship-key>route-table-reference.route-table-reference-id</relationship-key>
+				  <relationship-value>cee6d136-e378-4678-a024-2cd15f0ee0hi</relationship-value>
+			   </relationship-data>
+			</relationship>
+         </relationship-list>
+      </l3-network>
+   </rest:payload>
+</rest:RESTResponse>"""
+
+String queryIdAIIResponse_AlaCarte =
+"""<rest:RESTResponse xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd"
+                   statusCode="200">
+   <rest:headers>
+      <rest:header name="Transfer-Encoding" value="chunked"/>
+      <rest:header name="Date" value="Thu,10 Mar 2016 00:01:18 GMT"/>
+      <rest:header name="Expires" value="Thu,01 Jan 1970 00:00:00 UTC"/>
+      <rest:header name="X-AAI-TXID" value="mtcnjv9aaas03-20160310-00:01:18:502-132671"/>
+      <rest:header name="Content-Type" value="application/xml"/>
+      <rest:header name="Server" value="Apache-Coyote/1.1"/>
+      <rest:header name="Cache-Control" value="private"/>
+   </rest:headers>
+   <rest:payload contentType="text/xml">
+      <l3-network xmlns="http://org.openecomp.aai.inventory/v6">
+         <network-id>49c86598-f766-46f8-84f8-8d1c1b10f9b4</network-id>
+         <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
+         <network-type>CONTRAIL_EXTERNAL</network-type>
+         <network-role>dmz_direct</network-role>
+         <network-technology>Contrail</network-technology>
+         <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+         <network-role-instance>0</network-role-instance>
+		 <resource-version>l3-version</resource-version>
+         <orchestration-status>pending-create</orchestration-status>
+	  	 <physical-network-name>networkName</physical-network-name>
+	     <is-provider-network>false</is-provider-network>
+	  	 <is-shared-network>true</is-shared-network>
+	  	 <is-external-network>false</is-external-network>
+         <subnets>
+            <subnet>
+               <subnet-id>57e9a1ff-d14f-4071-a828-b19ae98eb2fc</subnet-id>
+               <gateway-address>107.239.52.1</gateway-address>
+               <network-start-address>107.239.52.0</network-start-address>
+               <cidr-mask>24</cidr-mask>
+               <ip-version>4</ip-version>
+               <orchestration-status>pending-create</orchestration-status>
+               <dhcp-enabled>true</dhcp-enabled>
+	  		   <subnet-name>subnetName</subnet-name>
                <relationship-list/>
             </subnet>
             <subnet>
@@ -1368,6 +1552,77 @@
       <ipVersion>4</ipVersion>
       <subnetId>57e9a1ff-d14f-4071-a828-b19ae98eb2fc</subnetId>
       <subnetName>subnetName</subnetName>
+      <addrFromStart>true</addrFromStart>
+      <hostRoutes>
+         <prefix>192.10.16.0/24</prefix>
+         <nextHop>192.10.16.100/24</nextHop>
+      </hostRoutes>
+      <hostRoutes>
+         <prefix>192.110.17.0/24</prefix>
+         <nextHop>192.110.17.110/24</nextHop>
+      </hostRoutes>
+   </subnets>
+   <subnets>
+      <allocationPools>
+         <start/>
+         <end/>
+      </allocationPools>
+      <cidr>107.239.52.0/24</cidr>
+      <enableDHCP>true</enableDHCP>
+      <gatewayIp>107.239.52.1</gatewayIp>
+      <ipVersion>4</ipVersion>
+      <subnetId>57e9a1ff-d14f-4071-a828-b19ae98eb2fc</subnetId>
+      <subnetName>subnetName</subnetName>
+      <addrFromStart>true</addrFromStart>
+      <hostRoutes>
+         <prefix>192.10.16.0/24</prefix>
+         <nextHop>192.10.16.100/24</nextHop>
+      </hostRoutes>
+   </subnets>
+   <skipAAI>true</skipAAI>
+   <backout>true</backout>
+   <failIfExists>false</failIfExists>
+   <msoRequest>
+      <requestId>88f65519-9a38-4c4b-8445-9eb4a5a5af56</requestId>
+      <serviceInstanceId>f70e927b-6087-4974-9ef8-c5e4d5847ca4</serviceInstanceId>
+   </msoRequest>
+   <messageId>messageId_generated</messageId>
+   <notificationUrl/>
+</createNetworkRequest>"""
+
+String createNetworkRequest_Ipv4 =
+"""<createNetworkRequest>
+   <cloudSiteId>RDM2WAGPLCP</cloudSiteId>
+   <tenantId>7dd5365547234ee8937416c65507d266</tenantId>
+   <networkId>49c86598-f766-46f8-84f8-8d1c1b10f9b4</networkId>
+   <networkName>MNS-25180-L-01-dmz_direct_net_1</networkName>
+   <networkType>CONTRAIL_EXTERNAL</networkType>
+   <modelCustomizationUuid>sn5256d1-5a33-55df-13ab-12abad84e222</modelCustomizationUuid>
+   <networkTechnology>CONTRAIL</networkTechnology>
+   <providerVlanNetwork>
+      <physicalNetworkName>networkName</physicalNetworkName>
+      <vlans>414,415</vlans>
+   </providerVlanNetwork>
+   <contrailNetwork>
+      <shared>true</shared>
+      <external>false</external>
+      <routeTargets>13979:105757</routeTargets>
+      <routeTargets>13979:105757</routeTargets>
+      <policyFqdns>GN_EVPN_Test</policyFqdns>
+      <routeTableFqdns>refFQDN1</routeTableFqdns>
+      <routeTableFqdns>refFQDN2</routeTableFqdns>
+   </contrailNetwork>
+   <subnets>
+      <allocationPools>
+         <start/>
+         <end/>
+      </allocationPools>
+      <cidr>107.239.52.0/24</cidr>
+      <enableDHCP>true</enableDHCP>
+      <gatewayIp>107.239.52.1</gatewayIp>
+      <ipVersion>4</ipVersion>
+      <subnetId>57e9a1ff-d14f-4071-a828-b19ae98eb2fc</subnetId>
+      <subnetName>subnetName</subnetName>
    </subnets>
    <subnets>
       <allocationPools>
@@ -1654,7 +1909,25 @@
          <ip-version>4</ip-version>
          <orchestration-status>Created</orchestration-status>
          <dhcp-enabled>true</dhcp-enabled>
+         <resource-version>1505857301954</resource-version>
          <subnet-name>subnetName</subnet-name>
+         <ip-assignment-direction>true</ip-assignment-direction>
+         <host-routes>
+            <host-route>
+               <host-route-id>string</host-route-id>
+               <route-prefix>192.10.16.0/24</route-prefix>
+               <next-hop>192.10.16.100/24</next-hop>
+               <next-hop-type>ip-address</next-hop-type>
+               <resource-version>1505857301954</resource-version>
+            </host-route>
+            <host-route>
+               <host-route-id>string</host-route-id>
+               <route-prefix>192.110.17.0/24</route-prefix>
+               <next-hop>192.110.17.110/24</next-hop>
+               <next-hop-type>ip-address</next-hop-type>
+               <resource-version>1505857301954</resource-version>
+            </host-route>
+         </host-routes>
       </subnet>
       <subnet>
          <subnet-id>57e9a1ff-d14f-4071-a828-b19ae98eb2fc</subnet-id>
@@ -1665,7 +1938,18 @@
          <ip-version>4</ip-version>
          <orchestration-status>Created</orchestration-status>
          <dhcp-enabled>true</dhcp-enabled>
+         <resource-version>1505857301954</resource-version>
          <subnet-name>subnetName</subnet-name>
+         <ip-assignment-direction>true</ip-assignment-direction>
+         <host-routes>
+            <host-route>
+               <host-route-id>string</host-route-id>
+               <route-prefix>192.10.16.0/24</route-prefix>
+               <next-hop>192.10.16.100/24</next-hop>
+               <next-hop-type>ip-address</next-hop-type>
+               <resource-version>1505857301954</resource-version>
+            </host-route>
+         </host-routes>
       </subnet>
    </subnets>
    <segmentation-assignments>
@@ -2085,12 +2369,12 @@
       <service-information>
          <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
          <subscription-service-type>MSO-dev-service-type</subscription-service-type>
-         <onap-model-information>
+         <ecomp-model-information>
             <model-invariant-uuid>fcc85cb0-ad74-45d7-a5a1-17c8744fdb71</model-invariant-uuid>
             <model-uuid>36a3a8ea-49a6-4ac8-b06c-89a54544b9b6</model-uuid>
             <model-version>1.0</model-version>
             <model-name>HNGW Protected OAM</model-name>
-         </onap-model-information>
+         </ecomp-model-information>
          <service-instance-id>f70e927b-6087-4974-9ef8-c5e4d5847ca4</service-instance-id>
          <global-customer-id>globalId_45678905678</global-customer-id>
          <subscriber-name>MSO_1610_dev</subscriber-name>
@@ -2098,13 +2382,13 @@
       <network-information>
          <network-id>networkId</network-id>
          <network-type>CONTRAIL_EXTERNAL</network-type>
-         <onap-model-information>
+         <ecomp-model-information>
             <model-invariant-uuid>sn5256d1-5a33-55df-13ab-12abad84e764</model-invariant-uuid>
             <model-customization-uuid>sn5256d1-5a33-55df-13ab-12abad84e222</model-customization-uuid>
             <model-uuid>sn5256d1-5a33-55df-13ab-12abad84e111</model-uuid>
             <model-version>1</model-version>
             <model-name>CONTRAIL_EXTERNAL</model-name>
-         </onap-model-information>
+         </ecomp-model-information>
       </network-information>
       <network-request-input>
          <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
@@ -2139,12 +2423,12 @@
       <service-information>
          <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
          <subscription-service-type>MSO-dev-service-type</subscription-service-type>
-         <onap-model-information>
+         <ecomp-model-information>
             <model-invariant-uuid>fcc85cb0-ad74-45d7-a5a1-17c8744fdb71</model-invariant-uuid>
             <model-uuid>36a3a8ea-49a6-4ac8-b06c-89a54544b9b6</model-uuid>
             <model-version>1.0</model-version>
             <model-name>HNGW Protected OAM</model-name>
-         </onap-model-information>
+         </ecomp-model-information>
          <service-instance-id>f70e927b-6087-4974-9ef8-c5e4d5847ca4</service-instance-id>
          <global-customer-id>globalId_45678905678</global-customer-id>
          <subscriber-name>MSO_1610_dev</subscriber-name>
@@ -2152,13 +2436,13 @@
       <network-information>
          <network-id>networkId</network-id>
          <network-type>CONTRAIL_EXTERNAL</network-type>
-         <onap-model-information>
+         <ecomp-model-information>
             <model-invariant-uuid>sn5256d1-5a33-55df-13ab-12abad84e764</model-invariant-uuid>
             <model-customization-uuid>sn5256d1-5a33-55df-13ab-12abad84e222</model-customization-uuid>
             <model-uuid>sn5256d1-5a33-55df-13ab-12abad84e111</model-uuid>
             <model-version>1</model-version>
             <model-name>CONTRAIL_EXTERNAL</model-name>
-         </onap-model-information>
+         </ecomp-model-information>
       </network-information>
       <network-request-input>
          <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
@@ -2232,12 +2516,12 @@
       <service-information>
          <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
          <subscription-service-type>MSO-dev-service-type</subscription-service-type>
-         <onap-model-information>
+         <ecomp-model-information>
             <model-invariant-uuid>fcc85cb0-ad74-45d7-a5a1-17c8744fdb71</model-invariant-uuid>
             <model-uuid>36a3a8ea-49a6-4ac8-b06c-89a54544b9b6</model-uuid>
             <model-version>1.0</model-version>
             <model-name>HNGW Protected OAM</model-name>
-         </onap-model-information>
+         </ecomp-model-information>
          <service-instance-id>f70e927b-6087-4974-9ef8-c5e4d5847ca4</service-instance-id>
          <global-customer-id>globalId_45678905678</global-customer-id>
          <subscriber-name>MSO_1610_dev</subscriber-name>
@@ -2245,13 +2529,13 @@
       <network-information>
          <network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id>
          <network-type>CONTRAIL_EXTERNAL</network-type>
-         <onap-model-information>
+         <ecomp-model-information>
             <model-invariant-uuid>sn5256d1-5a33-55df-13ab-12abad84e764</model-invariant-uuid>
             <model-customization-uuid>sn5256d1-5a33-55df-13ab-12abad84e222</model-customization-uuid>
             <model-uuid>sn5256d1-5a33-55df-13ab-12abad84e111</model-uuid>
             <model-version>1</model-version>
             <model-name>CONTRAIL_EXTERNAL</model-name>
-         </onap-model-information>
+         </ecomp-model-information>
       </network-information>
       <network-request-input>
          <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
@@ -2286,12 +2570,12 @@
       <service-information>
          <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
          <subscription-service-type>MSO-dev-service-type</subscription-service-type>
-         <onap-model-information>
+         <ecomp-model-information>
             <model-invariant-uuid>fcc85cb0-ad74-45d7-a5a1-17c8744fdb71</model-invariant-uuid>
             <model-uuid>36a3a8ea-49a6-4ac8-b06c-89a54544b9b6</model-uuid>
             <model-version>1.0</model-version>
             <model-name>HNGW Protected OAM</model-name>
-         </onap-model-information>
+         </ecomp-model-information>
          <service-instance-id>f70e927b-6087-4974-9ef8-c5e4d5847ca4</service-instance-id>
          <global-customer-id>globalId_45678905678</global-customer-id>
          <subscriber-name>MSO_1610_dev</subscriber-name>
@@ -2299,13 +2583,13 @@
       <network-information>
          <network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id>
          <network-type>CONTRAIL_EXTERNAL</network-type>
-         <onap-model-information>
+         <ecomp-model-information>
             <model-invariant-uuid>sn5256d1-5a33-55df-13ab-12abad84e764</model-invariant-uuid>
             <model-customization-uuid>sn5256d1-5a33-55df-13ab-12abad84e222</model-customization-uuid>
             <model-uuid>sn5256d1-5a33-55df-13ab-12abad84e111</model-uuid>
             <model-version>1</model-version>
             <model-name>CONTRAIL_EXTERNAL</model-name>
-         </onap-model-information>
+         </ecomp-model-information>
       </network-information>
       <network-request-input>
          <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
@@ -2461,13 +2745,13 @@
       <network-information>
          <network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id>
          <network-type>CONTRAIL_EXTERNAL</network-type>
-         <onap-model-information>
+         <ecomp-model-information>
             <model-invariant-uuid>invariant-uuid</model-invariant-uuid>
             <model-customization-uuid>customization-uuid</model-customization-uuid>
             <model-uuid>uuid</model-uuid>
             <model-version>version</model-version>
             <model-name>CONTRAIL_EXTERNAL</model-name>
-         </onap-model-information>
+         </ecomp-model-information>
       </network-information>
       <network-request-information>
          <network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id>
@@ -2508,13 +2792,13 @@
       <network-information>
          <network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id>
          <network-type>CONTRAIL_EXTERNAL</network-type>
-         <onap-model-information>
+         <ecomp-model-information>
             <model-invariant-uuid>invariant-uuid</model-invariant-uuid>
             <model-customization-uuid>customization-uuid</model-customization-uuid>
             <model-uuid>uuid</model-uuid>
             <model-version>version</model-version>
             <model-name>CONTRAIL_EXTERNAL</model-name>
-         </onap-model-information>
+         </ecomp-model-information>
       </network-information>
       <network-request-information>
          <network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id>
@@ -2535,7 +2819,7 @@
 
 		}
 
-		public void initializeVariables (Execution mockExecution) {
+		public void initializeVariables (DelegateExecution mockExecution) {
 
 			verify(mockExecution).setVariable(Prefix + "networkRequest", "")
 			verify(mockExecution).setVariable(Prefix + "rollbackEnabled", null)
@@ -2695,7 +2979,7 @@
 			when(mockExecution.getVariable("URN_mso_adapters_sdnc_resource_endpoint")).thenReturn("http://localhost:8090/SDNCAdapterRpc")
 
 
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
 			DoCreateNetworkInstance.preProcessRequest(mockExecution)
 
@@ -2756,7 +3040,7 @@
 			when(mockExecution.getVariable("URN_mso_adapters_network_rest_endpoint")).thenReturn("http://localhost:8090/networks/NetworkAdapter")
 			when(mockExecution.getVariable("URN_mso_adapters_sdnc_resource_endpoint")).thenReturn("http://localhost:8090/SDNCAdapterRpc")
 
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
 			DoCreateNetworkInstance.preProcessRequest(mockExecution)
 
@@ -2787,7 +3071,7 @@
 		}
 
 		@Test
-		//@Ignore
+		@Ignore // 1802 merge
 		public void preProcessRequest_XML_NetworkRequest() {
 
 			println "************ preProcessRequest_Payload ************* "
@@ -2810,7 +3094,7 @@
 			when(mockExecution.getVariable("URN_mso_adapters_network_rest_endpoint")).thenReturn("http://localhost:8090/networks/NetworkAdapter")
 			when(mockExecution.getVariable("URN_mso_adapters_sdnc_resource_endpoint")).thenReturn("http://localhost:8090/SDNCAdapterRpc")
 
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
 			DoCreateNetworkInstance.preProcessRequest(mockExecution)
 
@@ -2862,7 +3146,7 @@
 			when(mockExecution.getVariable(Prefix + "rollbackEnabled")).thenReturn("true")
 			when(mockExecution.getVariable("mso-request-id")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
 
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
 			DoCreateNetworkInstance.prepareCreateNetworkRequest(mockExecution)
 
@@ -2900,7 +3184,7 @@
 			when(mockExecution.getVariable(Prefix + "rollbackEnabled")).thenReturn("true")
 			when(mockExecution.getVariable("mso-request-id")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
 
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
 			DoCreateNetworkInstance.prepareCreateNetworkRequest(mockExecution)
 
@@ -2911,7 +3195,7 @@
 			// verify set prefix = Prefix + ""
 			verify(mockExecution).setVariable("prefix", Prefix)
 
-			verify(mockExecution).setVariable(Prefix + "createNetworkRequest", createNetworkRequest)
+			verify(mockExecution).setVariable(Prefix + "createNetworkRequest", createNetworkRequest_Ipv4)
 
 		}
 		
@@ -2923,7 +3207,7 @@
 			ExecutionEntity mockExecution = setupMock()
 			// Initialize prerequisite variables
 			when(mockExecution.getVariable(Prefix + "networkRequest")).thenReturn(expectedJSONNetworkRequest)
-			when(mockExecution.getVariable(Prefix + "queryIdAAIResponse")).thenReturn(queryIdAIIResponse)
+			when(mockExecution.getVariable(Prefix + "queryIdAAIResponse")).thenReturn(queryIdAIIResponse_AlaCarte)
 			when(mockExecution.getVariable(Prefix + "cloudRegionPo")).thenReturn("RDM2WAGPLCP")
 			when(mockExecution.getVariable(Prefix + "messageId")).thenReturn("messageId_generated")
 			when(mockExecution.getVariable(Prefix + "source")).thenReturn("VID")
@@ -2937,7 +3221,7 @@
 			when(mockExecution.getVariable(Prefix + "rollbackEnabled")).thenReturn("true")
 			when(mockExecution.getVariable("mso-request-id")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
 
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
 			DoCreateNetworkInstance.prepareCreateNetworkRequest(mockExecution)
 
@@ -2974,7 +3258,7 @@
 			when(mockExecution.getVariable(Prefix + "rollbackEnabled")).thenReturn("true")
 			when(mockExecution.getVariable("mso-request-id")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
 
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
 			DoCreateNetworkInstance.prepareCreateNetworkRequest(mockExecution)
 
@@ -3009,7 +3293,7 @@
 			when(mockExecution.getVariable("GENGSI_siResourceLink")).thenReturn("https://aai-int1.test.com:8443/aai/v8/business/customers/customer/MSO_1610_dev/service-subscriptions/service-subscription/MSO-dev-service-type/service-instances/service-instance/6d4eb22a-82f1-4257-9f80-4176262cfe69/")
 
 
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
 			DoCreateNetworkInstance.prepareSDNCRequest(mockExecution)
 
@@ -3038,7 +3322,7 @@
 			when(mockExecution.getVariable("GENGSI_siResourceLink")).thenReturn("https://aai-int1.test.com:8443/aai/v8/business/customers/customer/MSO_1610_dev/service-subscriptions/service-subscription/VIRTUAL%20USP/service-instances/service-instance/6d4eb22a-82f1-4257-9f80-4176262cfe69/")
 
 
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
 			DoCreateNetworkInstance.prepareSDNCRequest(mockExecution)
 
@@ -3067,7 +3351,7 @@
 			when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
 			when(mockExecution.getVariable("GENGSI_siResourceLink")).thenReturn("https://aai-int1.test.com:8443/aai/v8/business/customers/customer/MSO_1610_dev/service-subscriptions/service-subscription/MSO-dev-service-type/service-instances/service-instance/6d4eb22a-82f1-4257-9f80-4176262cfe69/")
 
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
 			DoCreateNetworkInstance.prepareRpcSDNCRequest(mockExecution)
 
@@ -3096,7 +3380,7 @@
 			when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
 			when(mockExecution.getVariable("GENGSI_siResourceLink")).thenReturn("https://aai-int1.test.com:8443/aai/v8/business/customers/customer/MSO_1610_dev/service-subscriptions/service-subscription/MSO-dev-service-type/service-instances/service-instance/6d4eb22a-82f1-4257-9f80-4176262cfe69/")
 
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
 			DoCreateNetworkInstance.prepareSDNCRollbackRequest(mockExecution)
 
@@ -3125,7 +3409,7 @@
 			when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
 			when(mockExecution.getVariable("GENGSI_siResourceLink")).thenReturn("https://aai-int1.test.com:8443/aai/v8/business/customers/customer/MSO_1610_dev/service-subscriptions/service-subscription/MSO-dev-service-type/service-instances/service-instance/6d4eb22a-82f1-4257-9f80-4176262cfe69/")
 
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
 			DoCreateNetworkInstance.prepareRpcSDNCActivateRequest(mockExecution)
 
@@ -3156,7 +3440,7 @@
 			when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
 			when(mockExecution.getVariable("GENGSI_siResourceLink")).thenReturn("https://aai-int1.test.com:8443/aai/v8/business/customers/customer/MSO_1610_dev/service-subscriptions/service-subscription/MSO-dev-service-type/service-instances/service-instance/6d4eb22a-82f1-4257-9f80-4176262cfe69/")
 
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
 			DoCreateNetworkInstance.prepareRpcSDNCRollbackRequest(mockExecution)
 
@@ -3186,7 +3470,7 @@
 			when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
 			when(mockExecution.getVariable("GENGSI_siResourceLink")).thenReturn("https://aai-int1.test.com:8443/aai/v8/business/customers/customer/MSO_1610_dev/service-subscriptions/service-subscription/MSO-dev-service-type/service-instances/service-instance/6d4eb22a-82f1-4257-9f80-4176262cfe69/")
 
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
 			DoCreateNetworkInstance.prepareRpcSDNCActivateRollback(mockExecution)
 
@@ -3219,7 +3503,7 @@
 			when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
 			when(mockExecution.getVariable("URN_aai_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
 
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
 			DoCreateNetworkInstance.callRESTQueryAAINetworkName(mockExecution)
 
@@ -3255,7 +3539,7 @@
 			when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
 			when(mockExecution.getVariable("URN_aai_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
 
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
 			DoCreateNetworkInstance.callRESTQueryAAINetworkName(mockExecution)
 
@@ -3276,7 +3560,7 @@
 			println "************ callRESTQueryAAINetworkId ************* "
 
 			WireMock.reset();
-			MockGetNetworkByIdWithDepth("49c86598-f766-46f8-84f8-8d1c1b10f9b4", "CreateNetworkV2/createNetwork_queryNetworkId_AAIResponse_Success.xml", "1");
+			MockGetNetworkByIdWithDepth("49c86598-f766-46f8-84f8-8d1c1b10f9b4", "CreateNetworkV2/createNetwork_queryNetworkId_AAIResponse_Success.xml", "all");
 
 			ExecutionEntity mockExecution = setupMock()
 			when(mockExecution.getVariable(Prefix + "assignSDNCResponse")).thenReturn(sdncAdapterWorkflowAssignResponse)
@@ -3290,7 +3574,7 @@
 			when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
 			when(mockExecution.getVariable("URN_aai_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
 
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
 			DoCreateNetworkInstance.callRESTQueryAAINetworkId(mockExecution)
 
@@ -3299,7 +3583,7 @@
 			//preDebugger.printInvocations(mockExecution)
 
 			verify(mockExecution).setVariable("prefix", Prefix)
-			verify(mockExecution).setVariable(Prefix + "queryIdAAIRequest", "http://localhost:8090/aai/v9/network/l3-networks/l3-network/49c86598-f766-46f8-84f8-8d1c1b10f9b4"+"?depth=1")
+			verify(mockExecution).setVariable(Prefix + "queryIdAAIRequest", "http://localhost:8090/aai/v9/network/l3-networks/l3-network/49c86598-f766-46f8-84f8-8d1c1b10f9b4"+"?depth=all")
 			verify(mockExecution).setVariable(Prefix + "aaiIdReturnCode", "200")
 
 		}
@@ -3326,7 +3610,7 @@
 			when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
 			when(mockExecution.getVariable("URN_aai_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
 
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
 			DoCreateNetworkInstance.callRESTQueryAAICloudRegion(mockExecution)
 
@@ -3363,7 +3647,7 @@
 			when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
 			when(mockExecution.getVariable("URN_aai_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
 
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
 			DoCreateNetworkInstance.callRESTQueryAAICloudRegion(mockExecution)
 
@@ -3400,7 +3684,7 @@
 			when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
 			when(mockExecution.getVariable("URN_aai_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
 
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
 			DoCreateNetworkInstance.callRESTQueryAAICloudRegion(mockExecution)
 
@@ -3439,7 +3723,7 @@
 			when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
 			when(mockExecution.getVariable("URN_aai_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
 
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
 			DoCreateNetworkInstance.callRESTQueryAAINetworkVpnBinding(mockExecution)
 
@@ -3458,6 +3742,39 @@
 
 		@Test
 		//@Ignore
+		public void callRESTQueryAAINetworkVpnBindingList_200() {
+
+			println "************ callRESTQueryAAINetworkVpnBinding_200 ************* "
+
+			WireMock.reset();
+			MockGetNetworkVpnBinding("CreateNetworkV2/createNetwork_queryVpnBindingList_AAIResponse_Success.xml", "85f015d0-2e32-4c30-96d2-87a1a27f8017");
+			MockGetNetworkVpnBinding("CreateNetworkV2/createNetwork_queryVpnBindingList_AAIResponse_Success.xml", "c980a6ef-3b88-49f0-9751-dbad8608d0a6");
+
+			ExecutionEntity mockExecution = setupMock()
+			when(mockExecution.getVariable(Prefix + "queryIdAAIResponse")).thenReturn(queryIdAIIResponse) // v6
+			when(mockExecution.getVariable(Prefix + "messageId")).thenReturn("e8ebf6a0-f8ea-4dc0-8b99-fe98a87722d6")
+			when(mockExecution.getVariable("URN_aai_endpoint")).thenReturn("http://localhost:8090")
+			when(mockExecution.getVariable("URN_mso_workflow_DoCreateNetworkInstance_aai_vpn_binding_uri")).thenReturn("/aai/v8/network/vpn-bindings/vpn-binding")
+			when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+			when(mockExecution.getVariable("URN_mso_workflow_global_default_aai_namespace")).thenReturn('http://org.openecomp.aai.inventory/')
+			when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
+			when(mockExecution.getVariable("URN_aai_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
+
+			// preProcessRequest(DelegateExecution execution)
+			DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
+			DoCreateNetworkInstance.callRESTQueryAAINetworkVpnBinding(mockExecution)
+
+			verify(mockExecution).setVariable("prefix", Prefix)
+			verify(mockExecution).setVariable(Prefix + "vpnCount", 2)
+			verify(mockExecution).setVariable(Prefix + "vpnBindings", ['/aai/v8/network/vpn-bindings/vpn-binding/85f015d0-2e32-4c30-96d2-87a1a27f8017/', '/aai/v8/network/vpn-bindings/vpn-binding/c980a6ef-3b88-49f0-9751-dbad8608d0a6/'])
+			// the last vpnBinding value is saved.
+			verify(mockExecution).setVariable(Prefix + "queryVpnBindingAAIRequest", "http://localhost:8090/aai/v8/network/vpn-bindings/vpn-binding/85f015d0-2e32-4c30-96d2-87a1a27f8017?depth=all")
+			verify(mockExecution, atLeast(2)).setVariable(Prefix + "aaiQqueryVpnBindingReturnCode", "200")
+
+		}
+		
+		@Test
+		//@Ignore
 		public void callRESTQueryAAINetworkVpnBinding_TestScenario01_200() {
 
 			println "************ callRESTQueryAAINetworkVpnBinding_200 ************* "
@@ -3477,7 +3794,7 @@
 			when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
 			when(mockExecution.getVariable("URN_aai_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
 
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
 			DoCreateNetworkInstance.callRESTQueryAAINetworkVpnBinding(mockExecution)
 
@@ -3517,7 +3834,7 @@
 			when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
 			when(mockExecution.getVariable("URN_aai_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
 
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
 			DoCreateNetworkInstance.callRESTQueryAAINetworkVpnBinding(mockExecution)
 
@@ -3557,7 +3874,7 @@
 			when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
 			when(mockExecution.getVariable("URN_aai_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
 
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
 			DoCreateNetworkInstance.callRESTQueryAAINetworkVpnBinding(mockExecution)
 
@@ -3594,7 +3911,7 @@
 			when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
 			when(mockExecution.getVariable("URN_aai_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
 
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
 			DoCreateNetworkInstance.callRESTQueryAAINetworkPolicy(mockExecution)
 
@@ -3633,7 +3950,7 @@
 			when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
 			when(mockExecution.getVariable("URN_aai_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
 
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
 			DoCreateNetworkInstance.callRESTQueryAAINetworkTableRef(mockExecution)
 
@@ -3657,7 +3974,7 @@
 			println "************ callRESTReQueryAAINetworkId ************* "
 
 			WireMock.reset();
-			MockGetNetworkByIdWithDepth("49c86598-f766-46f8-84f8-8d1c1b10f9b4", "CreateNetworkV2/createNetwork_queryNetworkId_AAIResponse_Success.xml", "1");
+			MockGetNetworkByIdWithDepth("49c86598-f766-46f8-84f8-8d1c1b10f9b4", "CreateNetworkV2/createNetwork_queryNetworkId_AAIResponse_Success.xml", "all");
 
 			ExecutionEntity mockExecution = setupMock()
 			when(mockExecution.getVariable(Prefix + "networkId")).thenReturn("49c86598-f766-46f8-84f8-8d1c1b10f9b4")
@@ -3672,7 +3989,7 @@
 			when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
 			when(mockExecution.getVariable("URN_aai_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
 
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
 			DoCreateNetworkInstance.callRESTReQueryAAINetworkId(mockExecution)
 
@@ -3681,7 +3998,7 @@
 			//preDebugger.printInvocations(mockExecution)
 
 			verify(mockExecution).setVariable("prefix", Prefix)
-			verify(mockExecution).setVariable(Prefix + "requeryIdAAIRequest", "http://localhost:8090/aai/v9/network/l3-networks/l3-network/49c86598-f766-46f8-84f8-8d1c1b10f9b4"+"?depth=1")
+			verify(mockExecution).setVariable(Prefix + "requeryIdAAIRequest", "http://localhost:8090/aai/v9/network/l3-networks/l3-network/49c86598-f766-46f8-84f8-8d1c1b10f9b4"+"?depth=all")
 			verify(mockExecution).setVariable(Prefix + "aaiRequeryIdReturnCode", "200")
 
 		}
@@ -3693,7 +4010,7 @@
 			println "************ callRESTUpdateContrailAAINetwork ************* "
 
 			WireMock.reset();
-			MockPutNetworkIdWithDepth("CreateNetworkV2/createNetwork_updateContrail_AAIResponse_Success.xml", "49c86598-f766-46f8-84f8-8d1c1b10f9b4", "1");
+			MockPutNetworkIdWithDepth("CreateNetworkV2/createNetwork_updateContrail_AAIResponse_Success.xml", "49c86598-f766-46f8-84f8-8d1c1b10f9b4", "all");
 
 			ExecutionEntity mockExecution = setupMock()
 			when(mockExecution.getVariable(Prefix + "networkId")).thenReturn("49c86598-f766-46f8-84f8-8d1c1b10f9b4")
@@ -3709,7 +4026,7 @@
 			when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
 			when(mockExecution.getVariable("URN_aai_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
 
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
 			DoCreateNetworkInstance.callRESTUpdateContrailAAINetwork(mockExecution)
 
@@ -3718,7 +4035,7 @@
 			//preDebugger.printInvocations(mockExecution)
 
 			verify(mockExecution).setVariable("prefix", Prefix)
-			verify(mockExecution).setVariable(Prefix + "updateContrailAAIUrlRequest", "http://localhost:8090/aai/v9/network/l3-networks/l3-network/49c86598-f766-46f8-84f8-8d1c1b10f9b4"+"?depth=1")
+			verify(mockExecution).setVariable(Prefix + "updateContrailAAIUrlRequest", "http://localhost:8090/aai/v9/network/l3-networks/l3-network/49c86598-f766-46f8-84f8-8d1c1b10f9b4"+"?depth=all")
 			verify(mockExecution).setVariable(Prefix + "updateContrailAAIPayloadRequest", updateContrailAAIPayloadRequest)
 			verify(mockExecution).setVariable(Prefix + "aaiUpdateContrailReturnCode", "200")
 			//verify(mockExecution).setVariable(Prefix + "updateContrailAAIResponse", updateContrailAAIResponse)
@@ -3733,7 +4050,7 @@
 			println "************ callRESTUpdateContrailAAINetwork ************* "
 
 			WireMock.reset();
-			MockPutNetworkIdWithDepth("CreateNetworkV2/createNetwork_updateContrail_AAIResponse_Success.xml", "49c86598-f766-46f8-84f8-8d1c1b10f9b4", "1");
+			MockPutNetworkIdWithDepth("CreateNetworkV2/createNetwork_updateContrail_AAIResponse_Success.xml", "49c86598-f766-46f8-84f8-8d1c1b10f9b4", "all");
 
 			ExecutionEntity mockExecution = setupMock()
 			when(mockExecution.getVariable(Prefix + "networkId")).thenReturn("49c86598-f766-46f8-84f8-8d1c1b10f9b4")
@@ -3749,7 +4066,7 @@
 			when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
 			when(mockExecution.getVariable("URN_aai_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
 
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
 			DoCreateNetworkInstance.callRESTUpdateContrailAAINetwork(mockExecution)
 
@@ -3758,7 +4075,7 @@
 			//preDebugger.printInvocations(mockExecution)
 
 			verify(mockExecution).setVariable("prefix", Prefix)
-			verify(mockExecution).setVariable(Prefix + "updateContrailAAIUrlRequest", "http://localhost:8090/aai/v9/network/l3-networks/l3-network/49c86598-f766-46f8-84f8-8d1c1b10f9b4"+"?depth=1")
+			verify(mockExecution).setVariable(Prefix + "updateContrailAAIUrlRequest", "http://localhost:8090/aai/v9/network/l3-networks/l3-network/49c86598-f766-46f8-84f8-8d1c1b10f9b4"+"?depth=all")
 			verify(mockExecution).setVariable(Prefix + "updateContrailAAIPayloadRequest", updateContrailAAIPayloadRequest_segmentation)
 			verify(mockExecution).setVariable(Prefix + "aaiUpdateContrailReturnCode", "200")
 			//verify(mockExecution).setVariable(Prefix + "updateContrailAAIResponse", updateContrailAAIResponse)
@@ -3929,7 +4246,7 @@
 			when(mockExecution.getVariable(Prefix + "rollbackNetworkRequest")).thenReturn(rollbackNetworkRequest)
 			when(mockExecution.getVariable("WorkflowException")).thenReturn(workflowException)
 
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
 			DoCreateNetworkInstance.prepareRollbackData(mockExecution)
 
@@ -3953,7 +4270,7 @@
 			when(mockExecution.getVariable(Prefix + "rollbackActivateSDNCRequest")).thenReturn(sdncActivateRollbackRequest)
 
 
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			DoCreateNetworkInstance DoCreateNetworkInstance = new DoCreateNetworkInstance()
 			DoCreateNetworkInstance.postProcessResponse(mockExecution)
 
@@ -3985,4 +4302,4 @@
 
 			return mockExecution
 		}
-}
+}
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVfModuleVolumeV2Test.groovy b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVfModuleVolumeV2Test.groovy
new file mode 100644
index 0000000..2d58c7a
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCreateVfModuleVolumeV2Test.groovy
@@ -0,0 +1,93 @@
+package org.openecomp.mso.bpmn.infrastructure.scripts
+
+import static org.junit.Assert.*;
+import static org.mockito.Mockito.*
+
+import org.camunda.bpm.engine.delegate.DelegateExecution
+import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity
+import org.mockito.ArgumentCaptor
+import org.mockito.MockitoAnnotations
+import org.mockito.runners.MockitoJUnitRunner
+import org.openecomp.mso.bpmn.common.scripts.MsoGroovyTest
+import org.openecomp.mso.bpmn.common.scripts.MsoUtils
+import org.junit.Before
+import org.junit.Ignore;
+import org.junit.Test
+import org.junit.runner.RunWith
+
+
+@RunWith(MockitoJUnitRunner.class)
+class DoCreateVfModuleVolumeV2Test extends MsoGroovyTest {
+
+	def String volumeRollbackRequest = """
+<rollbackVolumeGroupRequest>
+   <volumeGroupRollback>
+      <volumeGroupId>171907d6-cdf0-4e08-953d-81ee104005a7</volumeGroupId>
+      <volumeGroupStackId>{{VOLUMEGROUPSTACKID}}</volumeGroupStackId>
+      <cloudSiteId>mtwnj1a</cloudSiteId>
+      <tenantId>c2141e3fcae940fcb4797ec9115e5a7a</tenantId>
+      <volumeGroupCreated>true</volumeGroupCreated>
+      <msoRequest>
+         <requestId>230fd6ac-2a39-4be4-9b1e-7b7e1cc039b5</requestId>
+         <serviceInstanceId>88c871d6-be09-4982-8490-96b1d243fb34</serviceInstanceId>
+      </msoRequest>
+      <messageId>9a5a91e8-3b79-463c-81c3-874a78f5b567</messageId>
+   </volumeGroupRollback>
+   <skipAAI>true</skipAAI>
+   <messageId>9a5a91e8-3b79-463c-81c3-874a78f5b567</messageId>
+   <notificationUrl>http://msobpel-app-e2e.ecomp.cci.att.com:8080/mso/WorkflowMessage/VNFAResponse/9a5a91e8-3b79-463c-81c3-874a78f5b567</notificationUrl>
+</rollbackVolumeGroupRequest>
+	"""
+	
+	def String volumeRollbackRequestWithStackId = """
+<rollbackVolumeGroupRequest>
+   <volumeGroupRollback>
+      <volumeGroupId>171907d6-cdf0-4e08-953d-81ee104005a7</volumeGroupId>
+      <volumeGroupStackId>mdt22avrr_volume01/0f1aaae8-efe3-45ce-83e1-bfad01db58d8</volumeGroupStackId>
+      <cloudSiteId>mtwnj1a</cloudSiteId>
+      <tenantId>c2141e3fcae940fcb4797ec9115e5a7a</tenantId>
+      <volumeGroupCreated>true</volumeGroupCreated>
+      <msoRequest>
+         <requestId>230fd6ac-2a39-4be4-9b1e-7b7e1cc039b5</requestId>
+         <serviceInstanceId>88c871d6-be09-4982-8490-96b1d243fb34</serviceInstanceId>
+      </msoRequest>
+      <messageId>9a5a91e8-3b79-463c-81c3-874a78f5b567</messageId>
+   </volumeGroupRollback>
+   <skipAAI>true</skipAAI>
+   <messageId>9a5a91e8-3b79-463c-81c3-874a78f5b567</messageId>
+   <notificationUrl>http://msobpel-app-e2e.ecomp.cci.att.com:8080/mso/WorkflowMessage/VNFAResponse/9a5a91e8-3b79-463c-81c3-874a78f5b567</notificationUrl>
+</rollbackVolumeGroupRequest>
+	"""
+	
+	
+	
+	@Before
+	public void init()
+	{
+		MockitoAnnotations.initMocks(this)
+	}
+	
+	@Test
+	@Ignore // 1802 merge
+	public void testBuildRollbackVolumeGroupRequestXml() {
+		DoCreateVfModuleVolumeV2 process = new DoCreateVfModuleVolumeV2()
+		String xml = process.buildRollbackVolumeGroupRequestXml(
+			"171907d6-cdf0-4e08-953d-81ee104005a7", 	// volumeGroupId
+			"mtwnj1a", 									// cloudSiteId
+			"c2141e3fcae940fcb4797ec9115e5a7a", 		// tenantId
+			"230fd6ac-2a39-4be4-9b1e-7b7e1cc039b5", 	// requestId
+			"88c871d6-be09-4982-8490-96b1d243fb34", 	// serviceInstanceId
+			"9a5a91e8-3b79-463c-81c3-874a78f5b567", 	// messageId
+			"http://msobpel-app-e2e.ecomp.cci.att.com:8080/mso/WorkflowMessage/VNFAResponse/9a5a91e8-3b79-463c-81c3-874a78f5b567")	// notificationUrl
+
+		assertEquals(volumeRollbackRequest.replaceAll("\\s", ""), xml.replaceAll("\\s", ""))
+	}
+	
+	
+	@Test
+	public void testUpdateRollbackVolumeGroupRequestXml() {
+		DoCreateVfModuleVolumeV2 process = new DoCreateVfModuleVolumeV2()
+		String updatedXml = process.updateRollbackVolumeGroupRequestXml(volumeRollbackRequest, "mdt22avrr_volume01/0f1aaae8-efe3-45ce-83e1-bfad01db58d8")
+		assertEquals(volumeRollbackRequestWithStackId.replaceAll("\\s", ""), updatedXml.replaceAll("\\s", ""))
+	}
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCustomDeleteE2EServiceInstanceTest.groovy b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCustomDeleteE2EServiceInstanceTest.groovy
index 2cf09fe..5b5a700 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCustomDeleteE2EServiceInstanceTest.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoCustomDeleteE2EServiceInstanceTest.groovy
@@ -138,6 +138,6 @@
         when(mex.getVariable("GENGS_siResourceLink")).thenReturn("/service-subscription/e2eserviceInstance/delete/service-instances/")
         when(mex.getVariable("globalSubscriberId")).thenReturn("4993921112123")
         when(mex.getVariable("GENGS_service")).thenReturn("test3434")
-        when(mex.getVariable("URN_mso_openecomp_adapters_db_endpoint")).thenReturn("http://localhost:8080/mso")
+        when(mex.getVariable("URN_mso_adapters_openecomp_db_endpoint")).thenReturn("http://localhost:8080/mso")
     }
 }
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteNetworkInstanceRollbackTest.groovy b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteNetworkInstanceRollbackTest.groovy
index bdfd415..1dcd733 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteNetworkInstanceRollbackTest.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteNetworkInstanceRollbackTest.groovy
@@ -1,323 +1,323 @@
-package org.openecomp.mso.bpmn.infrastructure.scripts
-
-import static org.mockito.Mockito.*
-
-import org.camunda.bpm.engine.delegate.BpmnError
-import org.camunda.bpm.engine.ProcessEngineServices
-import org.camunda.bpm.engine.RepositoryService
-import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity
-import org.camunda.bpm.engine.impl.pvm.process.ProcessDefinitionImpl
-import org.camunda.bpm.engine.repository.ProcessDefinition
-import org.camunda.bpm.engine.runtime.Execution;
-import org.mockito.MockitoAnnotations
-import org.mockito.runners.MockitoJUnitRunner
-import org.mockito.internal.debugging.MockitoDebuggerImpl
-import org.openecomp.mso.bpmn.common.scripts.MsoUtils
-import org.openecomp.mso.bpmn.core.WorkflowException
-import org.junit.Before
-import org.junit.Rule;
-import org.junit.Test
-import org.junit.Ignore
-import org.junit.runner.RunWith
-
-import static org.junit.Assert.*;
-
-import com.github.tomakehurst.wiremock.client.WireMock;
-import com.github.tomakehurst.wiremock.junit.WireMockRule;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.UUID;
-
-import org.apache.commons.lang3.*
-
-
-@RunWith(MockitoJUnitRunner.class)
-class DoDeleteNetworkInstanceRollbackTest  {
-	
-	@Rule
-	public WireMockRule wireMockRule = new WireMockRule(8090);
-	
-		def utils = new MsoUtils()
-		String Prefix="DELNWKIR_"
-
-
-		String rollbackNetworkRequest =
-		"""<NetworkAdapter:rollbackNetwork xmlns:NetworkAdapter="http://org.openecomp.mso/network">
-   <rollback>
-      <networkId>MNS-25180-L-01-dmz_direct_net_1/2c88a3a9-69b9-43a7-ada6-1aca577c3641</networkId>
-      <neutronNetworkId>c4f4e878-cde0-4b15-ae9a-bda857759cea</neutronNetworkId>
-      <networkStackId/>
-      <networkType>CONTRAIL_EXTERNAL</networkType>
-      <networkCreated>true</networkCreated>
-      <tenantId>7dd5365547234ee8937416c65507d266</tenantId>
-      <cloudSiteId>RDM2WAGPLCP</cloudSiteId>
-      <msoRequest>
-         <requestId>1ef47428-cade-45bd-a103-0751e8b2deb0</requestId>
-         <serviceInstanceId/>
-      </msoRequest>
-   </rollback>
-</NetworkAdapter:rollbackNetwork>"""			
-								
-					String rollbackDeActivateSDNCRequest =
-		"""<aetgt:SDNCAdapterWorkflowRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
-                                  xmlns:ns5="http://org.openecomp/mso/request/types/v1"
-                                  xmlns:sdncadapter="http://org.openecomp.mso/workflow/sdnc/adapter/schema/v1">
-   <sdncadapter:RequestHeader>
-      <sdncadapter:RequestId>88f65519-9a38-4c4b-8445-9eb4a5a5af56</sdncadapter:RequestId>
-      <sdncadapter:SvcInstanceId>f70e927b-6087-4974-9ef8-c5e4d5847ca4</sdncadapter:SvcInstanceId>
-      <sdncadapter:SvcAction>activate</sdncadapter:SvcAction>
-      <sdncadapter:SvcOperation>network-topology-operation</sdncadapter:SvcOperation>
-      <sdncadapter:CallbackUrl>sdncCallback</sdncadapter:CallbackUrl>
-      <sdncadapter:MsoAction>generic-resource</sdncadapter:MsoAction>
-   </sdncadapter:RequestHeader>
-   <aetgt:SDNCRequestData>
-      <request-information>
-         <request-id>88f65519-9a38-4c4b-8445-9eb4a5a5af56</request-id>
-         <request-action>CreateNetworkInstance</request-action>
-         <source>VID</source>
-         <notification-url/>
-         <order-number/>
-         <order-version/>
-      </request-information>
-      <service-information>
-         <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
-         <service-type>MSO-dev-service-type</service-type>
-         <service-instance-id>f70e927b-6087-4974-9ef8-c5e4d5847ca4</service-instance-id>
-         <subscriber-name>MSO_1610_dev</subscriber-name>
-      </service-information>
-      <network-information>
-         <network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id>
-         <network-type>CONTRAIL_EXTERNAL</network-type>
-         <onap-model-information>
-            <model-invariant-uuid>invariant-uuid</model-invariant-uuid>
-            <model-customization-uuid>customization-uuid</model-customization-uuid>
-            <model-uuid>uuid</model-uuid>
-            <model-version>version</model-version>
-            <model-name>CONTRAIL_EXTERNAL</model-name>
-         </onap-model-information>
-      </network-information>
-      <network-request-information>
-         <network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id>
-         <network-type>CONTRAIL_EXTERNAL</network-type>
-         <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
-         <tenant>7dd5365547234ee8937416c65507d266</tenant>
-         <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>
-      </network-request-information>
-   </aetgt:SDNCRequestData>
-</aetgt:SDNCAdapterWorkflowRequest>"""			
-		
-					String rollbackSDNCRequest =
-		"""<aetgt:SDNCAdapterWorkflowRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
-                                  xmlns:ns5="http://org.openecomp/mso/request/types/v1"
-                                  xmlns:sdncadapter="http://org.openecomp.mso/workflow/sdnc/adapter/schema/v1">
-   <sdncadapter:RequestHeader>
-      <sdncadapter:RequestId>88f65519-9a38-4c4b-8445-9eb4a5a5af56</sdncadapter:RequestId>
-      <sdncadapter:SvcInstanceId>f70e927b-6087-4974-9ef8-c5e4d5847ca4</sdncadapter:SvcInstanceId>
-      <sdncadapter:SvcAction>rollback</sdncadapter:SvcAction>
-      <sdncadapter:SvcOperation>network-topology-operation</sdncadapter:SvcOperation>
-      <sdncadapter:CallbackUrl>sdncCallback</sdncadapter:CallbackUrl>
-   </sdncadapter:RequestHeader>
-   <aetgt:SDNCRequestData>
-      <request-information>
-         <request-id>88f65519-9a38-4c4b-8445-9eb4a5a5af56</request-id>
-         <request-action>CreateNetworkInstance</request-action>
-         <source>VID</source>
-         <notification-url/>
-         <order-number/>
-         <order-version/>
-      </request-information>
-      <service-information>
-         <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
-         <service-type>MSO-dev-service-type</service-type>
-         <service-instance-id>f70e927b-6087-4974-9ef8-c5e4d5847ca4</service-instance-id>
-         <subscriber-name>MSO_1610_dev</subscriber-name>
-      </service-information>
-      <network-information>
-         <network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id>
-         <network-type>CONTRAIL_EXTERNAL</network-type>
-         <onap-model-information>
-            <model-invariant-uuid>invariant-uuid</model-invariant-uuid>
-            <model-customization-uuid>customization-uuid</model-customization-uuid>
-            <model-uuid>uuid</model-uuid>
-            <model-version>version</model-version>
-            <model-name>CONTRAIL_EXTERNAL</model-name>
-         </onap-model-information>
-      </network-information>
-      <network-request-information>
-         <network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id>
-         <network-type>CONTRAIL_EXTERNAL</network-type>
-         <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
-         <tenant>7dd5365547234ee8937416c65507d266</tenant>
-         <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>
-      </network-request-information>
-   </aetgt:SDNCRequestData>
-</aetgt:SDNCAdapterWorkflowRequest>"""			
-		
-// - - - - - - - -
-
-
-	    @Before
-		public void init()
-		{
-			MockitoAnnotations.initMocks(this)
-			
-		}
-		
-		public void initializeVariables (Execution mockExecution) {
-
-			verify(mockExecution).setVariable(Prefix + "WorkflowException", null)
-		
-			verify(mockExecution).setVariable(Prefix + "rollbackDeactivateSDNCRequest", null)
-			verify(mockExecution).setVariable(Prefix + "rollbackDeactivateSDNCResponse", "")
-			verify(mockExecution).setVariable(Prefix + "rollbackDeactivateSDNCReturnCode", "")
-	
-			verify(mockExecution).setVariable(Prefix + "rollbackNetworkRequest", null)
-			verify(mockExecution).setVariable(Prefix + "rollbackNetworkResponse", "")
-			verify(mockExecution).setVariable(Prefix + "rollbackNetworkReturnCode", "")
-					
-			verify(mockExecution).setVariable(Prefix + "Success", false)
-			verify(mockExecution).setVariable(Prefix + "fullRollback", false)
-			
-		}
-		
-		@Test
-		//@Ignore  
-		public void preProcessRequest() {
-			
-			println "************ preProcessRequest ************* " 
-			
-			WorkflowException workflowException = new WorkflowException("DoCreateNetworkInstance", 2500, "Received error from Network Adapter: JBWEB000065: HTTP Status 500.")
-			Map<String, String> rollbackData = new HashMap<String, String>();
-			rollbackData.put("rollbackDeactivateSDNCRequest", rollbackDeActivateSDNCRequest)
-			rollbackData.put("rollbackNetworkRequest", rollbackNetworkRequest)
-			rollbackData.put("rollbackSDNCRequest", rollbackSDNCRequest)
-					
-			ExecutionEntity mockExecution = setupMock()
-			// Initialize prerequisite variables
-			when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
-			when(mockExecution.getVariable("prefix")).thenReturn(Prefix + "")
-			when(mockExecution.getVariable("WorkflowException")).thenReturn(workflowException)
-			when(mockExecution.getVariable("rollbackData")).thenReturn(rollbackData)
-			when(mockExecution.getVariable("sdncVersion")).thenReturn("1702")
-			
-			when(mockExecution.getVariable("URN_mso_adapters_po_auth")).thenReturn("3141634BF7E070AA289CF2892C986C0B")
-			when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
-			
-			when(mockExecution.getVariable("URN_mso_adapters_sdnc_endpoint")).thenReturn("http://localhost:8090/SDNCAdapter")
-			when(mockExecution.getVariable("URN_mso_adapters_network_rest_endpoint")).thenReturn("http://localhost:8090/networks/NetworkAdapter")
-			when(mockExecution.getVariable("URN_mso_adapters_sdnc_resource_endpoint")).thenReturn("http://localhost:8090/SDNCAdapterRpc")
-			
-			
-			// preProcessRequest(Execution execution)						
-			DoDeleteNetworkInstanceRollback DoDeleteNetworkInstanceRollback = new DoDeleteNetworkInstanceRollback()
-			DoDeleteNetworkInstanceRollback.preProcessRequest(mockExecution)
-
-			//verify variable initialization
-			initializeVariables(mockExecution)
-			
-			verify(mockExecution).getVariable("isDebugLogEnabled")
-			verify(mockExecution).setVariable("prefix", Prefix)
-								
-		}
-		
-
-		@Test
-		//@Ignore
-		public void validateRollbackResponses_Good() {
-			
-			WorkflowException workflowException = new WorkflowException("DoDeleteNetworkInstanceRollback", 2500, "AAI Update Contrail Failed.  Error 404.")
-			WorkflowException expectedWorkflowException = new WorkflowException("DoDeleteNetworkInstanceRollback", 2500, "AAI Update Contrail Failed.  Error 404. + SNDC deactivate rollback completed. + PO Network rollback completed. + SNDC unassign rollback completed.")
-				  
-			println "************ validateRollbackResponses_Good() ************* "
-			ExecutionEntity mockExecution = setupMock()
-			// Initialize prerequisite variables
-			when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
-			when(mockExecution.getVariable("prefix")).thenReturn(Prefix + "")
-
-			when(mockExecution.getVariable(Prefix + "rollbackDeactivateSDNCRequest")).thenReturn("Good")
-			when(mockExecution.getVariable(Prefix + "rollbackDeactivateSDNCReturnCode")).thenReturn("200")
-			when(mockExecution.getVariable(Prefix + "rollbackDeactivateSDNCResponse")).thenReturn("GoodResponse")
-			when(mockExecution.getVariable(Prefix + "rollbackNetworkRequest")).thenReturn("Good")
-			when(mockExecution.getVariable(Prefix + "rollbackNetworkReturnCode")).thenReturn("200")
-			when(mockExecution.getVariable(Prefix + "rollbackNetworkResponse")).thenReturn("GoodResponse")
-			when(mockExecution.getVariable(Prefix + "rollbackSDNCRequest")).thenReturn("Good")
-			when(mockExecution.getVariable(Prefix + "rollbackSDNCReturnCode")).thenReturn("200")
-			when(mockExecution.getVariable(Prefix + "rollbackSDNCResponse")).thenReturn("GoodResponse")
-			when(mockExecution.getVariable(Prefix + "WorkflowException")).thenReturn(workflowException)
-			when(mockExecution.getVariable(Prefix + "fullRollback")).thenReturn(false)
-									
-			DoDeleteNetworkInstanceRollback DoDeleteNetworkInstanceRollback = new DoDeleteNetworkInstanceRollback()
-			DoDeleteNetworkInstanceRollback.validateRollbackResponses(mockExecution)
-			
-			// verify set prefix = Prefix + ""
-			verify(mockExecution, atLeast(1)).setVariable("prefix", Prefix)
-			verify(mockExecution, atLeast(1)).setVariable("rolledBack", true)
-			verify(mockExecution, atLeast(1)).setVariable("wasDeleted", true)
-			verify(mockExecution).setVariable("WorkflowException", refEq(expectedWorkflowException, any(WorkflowException.class)))
-			//verify(mockExecution).setVariable("WorkflowException", expectedWorkflowException)
-		}
-		
-		@Test
-		//@Ignore
-		public void validateRollbackResponses_FullRollback() {
-			
-			Map<String, String> rollbackData = new HashMap<String, String>();
-			rollbackData.put("rollbackDeactivateSDNCRequest", rollbackDeActivateSDNCRequest)
-			rollbackData.put("rollbackNetworkRequest", rollbackNetworkRequest)
-			rollbackData.put("rollbackSDNCRequest", rollbackSDNCRequest)
-				  
-			println "************ validateRollbackResponses_FullRollback() ************* "
-			ExecutionEntity mockExecution = setupMock()
-			// Initialize prerequisite variables
-			when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
-			when(mockExecution.getVariable("prefix")).thenReturn(Prefix + "")
-
-			when(mockExecution.getVariable(Prefix + "rollbackDeactivateSDNCRequest")).thenReturn("Good")
-			when(mockExecution.getVariable(Prefix + "rollbackDeactivateSDNCReturnCode")).thenReturn("200")
-			when(mockExecution.getVariable(Prefix + "rollbackDeactivateSDNCResponse")).thenReturn("GoodResponse")
-			when(mockExecution.getVariable(Prefix + "rollbackNetworkRequest")).thenReturn("Good")
-			when(mockExecution.getVariable(Prefix + "rollbackNetworkReturnCode")).thenReturn("200")
-			when(mockExecution.getVariable(Prefix + "rollbackNetworkResponse")).thenReturn("GoodResponse")
-			when(mockExecution.getVariable(Prefix + "rollbackSDNCRequest")).thenReturn("Good")
-			when(mockExecution.getVariable(Prefix + "rollbackSDNCReturnCode")).thenReturn("200")
-			when(mockExecution.getVariable(Prefix + "rollbackSDNCResponse")).thenReturn("GoodResponse")
-			when(mockExecution.getVariable(Prefix + "WorkflowException")).thenReturn(null)
-			when(mockExecution.getVariable(Prefix + "fullRollback")).thenReturn(true)
-			when(mockExecution.getVariable("rollbackData")).thenReturn(rollbackData)
-									
-			DoDeleteNetworkInstanceRollback DoDeleteNetworkInstanceRollback = new DoDeleteNetworkInstanceRollback()
-			DoDeleteNetworkInstanceRollback.validateRollbackResponses(mockExecution)
-			
-			// verify set prefix = Prefix + ""
-			verify(mockExecution, atLeast(1)).setVariable("prefix", Prefix)
-			verify(mockExecution, atLeast(1)).setVariable("rollbackSuccessful", true)
-			verify(mockExecution, atLeast(1)).setVariable("rollbackError", false)
-			
-		}
-		
-		
-		private ExecutionEntity setupMock() {
-			
-			ProcessDefinition mockProcessDefinition = mock(ProcessDefinition.class)
-			when(mockProcessDefinition.getKey()).thenReturn("DoDeleteNetworkInstanceRollback")
-			RepositoryService mockRepositoryService = mock(RepositoryService.class)
-			when(mockRepositoryService.getProcessDefinition()).thenReturn(mockProcessDefinition)
-			when(mockRepositoryService.getProcessDefinition().getKey()).thenReturn("DoDeleteNetworkInstanceRollback")
-			when(mockRepositoryService.getProcessDefinition().getId()).thenReturn("100")
-			ProcessEngineServices mockProcessEngineServices = mock(ProcessEngineServices.class)
-			when(mockProcessEngineServices.getRepositoryService()).thenReturn(mockRepositoryService)
-			
-			ExecutionEntity mockExecution = mock(ExecutionEntity.class)
-			// Initialize prerequisite variables
-			
-			when(mockExecution.getId()).thenReturn("100")
-			when(mockExecution.getProcessDefinitionId()).thenReturn("DoDeleteNetworkInstanceRollback")
-			when(mockExecution.getProcessInstanceId()).thenReturn("DoDeleteNetworkInstanceRollback")
-			when(mockExecution.getProcessEngineServices()).thenReturn(mockProcessEngineServices)
-			when(mockExecution.getProcessEngineServices().getRepositoryService().getProcessDefinition(mockExecution.getProcessDefinitionId())).thenReturn(mockProcessDefinition)
-			
-			return mockExecution
-		}
-		
-}
+package org.openecomp.mso.bpmn.infrastructure.scripts
+
+import static org.mockito.Mockito.*
+
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.ProcessEngineServices
+import org.camunda.bpm.engine.RepositoryService
+import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity
+import org.camunda.bpm.engine.impl.pvm.process.ProcessDefinitionImpl
+import org.camunda.bpm.engine.repository.ProcessDefinition
+import org.camunda.bpm.engine.delegate.DelegateExecution;
+import org.mockito.MockitoAnnotations
+import org.mockito.runners.MockitoJUnitRunner
+import org.mockito.internal.debugging.MockitoDebuggerImpl
+import org.openecomp.mso.bpmn.common.scripts.MsoUtils
+import org.openecomp.mso.bpmn.core.WorkflowException
+import org.junit.Before
+import org.junit.Rule;
+import org.junit.Test
+import org.junit.Ignore
+import org.junit.runner.RunWith
+
+import static org.junit.Assert.*;
+
+import com.github.tomakehurst.wiremock.client.WireMock;
+import com.github.tomakehurst.wiremock.junit.WireMockRule;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+import org.apache.commons.lang3.*
+
+
+@RunWith(MockitoJUnitRunner.class)
+class DoDeleteNetworkInstanceRollbackTest  {
+	
+	@Rule
+	public WireMockRule wireMockRule = new WireMockRule(8090);
+	
+		def utils = new MsoUtils()
+		String Prefix="DELNWKIR_"
+
+
+		String rollbackNetworkRequest =
+		"""<NetworkAdapter:rollbackNetwork xmlns:NetworkAdapter="http://org.openecomp.mso/network">
+   <rollback>
+      <networkId>MNS-25180-L-01-dmz_direct_net_1/2c88a3a9-69b9-43a7-ada6-1aca577c3641</networkId>
+      <neutronNetworkId>c4f4e878-cde0-4b15-ae9a-bda857759cea</neutronNetworkId>
+      <networkStackId/>
+      <networkType>CONTRAIL_EXTERNAL</networkType>
+      <networkCreated>true</networkCreated>
+      <tenantId>7dd5365547234ee8937416c65507d266</tenantId>
+      <cloudSiteId>RDM2WAGPLCP</cloudSiteId>
+      <msoRequest>
+         <requestId>1ef47428-cade-45bd-a103-0751e8b2deb0</requestId>
+         <serviceInstanceId/>
+      </msoRequest>
+   </rollback>
+</NetworkAdapter:rollbackNetwork>"""			
+								
+					String rollbackDeActivateSDNCRequest =
+		"""<aetgt:SDNCAdapterWorkflowRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
+                                  xmlns:ns5="http://org.openecomp/mso/request/types/v1"
+                                  xmlns:sdncadapter="http://org.openecomp.mso/workflow/sdnc/adapter/schema/v1">
+   <sdncadapter:RequestHeader>
+      <sdncadapter:RequestId>88f65519-9a38-4c4b-8445-9eb4a5a5af56</sdncadapter:RequestId>
+      <sdncadapter:SvcInstanceId>f70e927b-6087-4974-9ef8-c5e4d5847ca4</sdncadapter:SvcInstanceId>
+      <sdncadapter:SvcAction>activate</sdncadapter:SvcAction>
+      <sdncadapter:SvcOperation>network-topology-operation</sdncadapter:SvcOperation>
+      <sdncadapter:CallbackUrl>sdncCallback</sdncadapter:CallbackUrl>
+      <sdncadapter:MsoAction>generic-resource</sdncadapter:MsoAction>
+   </sdncadapter:RequestHeader>
+   <aetgt:SDNCRequestData>
+      <request-information>
+         <request-id>88f65519-9a38-4c4b-8445-9eb4a5a5af56</request-id>
+         <request-action>CreateNetworkInstance</request-action>
+         <source>VID</source>
+         <notification-url/>
+         <order-number/>
+         <order-version/>
+      </request-information>
+      <service-information>
+         <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+         <service-type>MSO-dev-service-type</service-type>
+         <service-instance-id>f70e927b-6087-4974-9ef8-c5e4d5847ca4</service-instance-id>
+         <subscriber-name>MSO_1610_dev</subscriber-name>
+      </service-information>
+      <network-information>
+         <network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id>
+         <network-type>CONTRAIL_EXTERNAL</network-type>
+         <ecomp-model-information>
+            <model-invariant-uuid>invariant-uuid</model-invariant-uuid>
+            <model-customization-uuid>customization-uuid</model-customization-uuid>
+            <model-uuid>uuid</model-uuid>
+            <model-version>version</model-version>
+            <model-name>CONTRAIL_EXTERNAL</model-name>
+         </ecomp-model-information>
+      </network-information>
+      <network-request-information>
+         <network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id>
+         <network-type>CONTRAIL_EXTERNAL</network-type>
+         <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
+         <tenant>7dd5365547234ee8937416c65507d266</tenant>
+         <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>
+      </network-request-information>
+   </aetgt:SDNCRequestData>
+</aetgt:SDNCAdapterWorkflowRequest>"""			
+		
+					String rollbackSDNCRequest =
+		"""<aetgt:SDNCAdapterWorkflowRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
+                                  xmlns:ns5="http://org.openecomp/mso/request/types/v1"
+                                  xmlns:sdncadapter="http://org.openecomp.mso/workflow/sdnc/adapter/schema/v1">
+   <sdncadapter:RequestHeader>
+      <sdncadapter:RequestId>88f65519-9a38-4c4b-8445-9eb4a5a5af56</sdncadapter:RequestId>
+      <sdncadapter:SvcInstanceId>f70e927b-6087-4974-9ef8-c5e4d5847ca4</sdncadapter:SvcInstanceId>
+      <sdncadapter:SvcAction>rollback</sdncadapter:SvcAction>
+      <sdncadapter:SvcOperation>network-topology-operation</sdncadapter:SvcOperation>
+      <sdncadapter:CallbackUrl>sdncCallback</sdncadapter:CallbackUrl>
+   </sdncadapter:RequestHeader>
+   <aetgt:SDNCRequestData>
+      <request-information>
+         <request-id>88f65519-9a38-4c4b-8445-9eb4a5a5af56</request-id>
+         <request-action>CreateNetworkInstance</request-action>
+         <source>VID</source>
+         <notification-url/>
+         <order-number/>
+         <order-version/>
+      </request-information>
+      <service-information>
+         <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+         <service-type>MSO-dev-service-type</service-type>
+         <service-instance-id>f70e927b-6087-4974-9ef8-c5e4d5847ca4</service-instance-id>
+         <subscriber-name>MSO_1610_dev</subscriber-name>
+      </service-information>
+      <network-information>
+         <network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id>
+         <network-type>CONTRAIL_EXTERNAL</network-type>
+         <ecomp-model-information>
+            <model-invariant-uuid>invariant-uuid</model-invariant-uuid>
+            <model-customization-uuid>customization-uuid</model-customization-uuid>
+            <model-uuid>uuid</model-uuid>
+            <model-version>version</model-version>
+            <model-name>CONTRAIL_EXTERNAL</model-name>
+         </ecomp-model-information>
+      </network-information>
+      <network-request-information>
+         <network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id>
+         <network-type>CONTRAIL_EXTERNAL</network-type>
+         <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
+         <tenant>7dd5365547234ee8937416c65507d266</tenant>
+         <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>
+      </network-request-information>
+   </aetgt:SDNCRequestData>
+</aetgt:SDNCAdapterWorkflowRequest>"""			
+		
+// - - - - - - - -
+
+
+	    @Before
+		public void init()
+		{
+			MockitoAnnotations.initMocks(this)
+			
+		}
+		
+		public void initializeVariables (DelegateExecution mockExecution) {
+
+			verify(mockExecution).setVariable(Prefix + "WorkflowException", null)
+		
+			verify(mockExecution).setVariable(Prefix + "rollbackDeactivateSDNCRequest", null)
+			verify(mockExecution).setVariable(Prefix + "rollbackDeactivateSDNCResponse", "")
+			verify(mockExecution).setVariable(Prefix + "rollbackDeactivateSDNCReturnCode", "")
+	
+			verify(mockExecution).setVariable(Prefix + "rollbackNetworkRequest", null)
+			verify(mockExecution).setVariable(Prefix + "rollbackNetworkResponse", "")
+			verify(mockExecution).setVariable(Prefix + "rollbackNetworkReturnCode", "")
+					
+			verify(mockExecution).setVariable(Prefix + "Success", false)
+			verify(mockExecution).setVariable(Prefix + "fullRollback", false)
+			
+		}
+		
+		@Test
+		//@Ignore  
+		public void preProcessRequest() {
+			
+			println "************ preProcessRequest ************* " 
+			
+			WorkflowException workflowException = new WorkflowException("DoCreateNetworkInstance", 2500, "Received error from Network Adapter: JBWEB000065: HTTP Status 500.")
+			Map<String, String> rollbackData = new HashMap<String, String>();
+			rollbackData.put("rollbackDeactivateSDNCRequest", rollbackDeActivateSDNCRequest)
+			rollbackData.put("rollbackNetworkRequest", rollbackNetworkRequest)
+			rollbackData.put("rollbackSDNCRequest", rollbackSDNCRequest)
+					
+			ExecutionEntity mockExecution = setupMock()
+			// Initialize prerequisite variables
+			when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+			when(mockExecution.getVariable("prefix")).thenReturn(Prefix + "")
+			when(mockExecution.getVariable("WorkflowException")).thenReturn(workflowException)
+			when(mockExecution.getVariable("rollbackData")).thenReturn(rollbackData)
+			when(mockExecution.getVariable("sdncVersion")).thenReturn("1702")
+			
+			when(mockExecution.getVariable("URN_mso_adapters_po_auth")).thenReturn("3141634BF7E070AA289CF2892C986C0B")
+			when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
+			
+			when(mockExecution.getVariable("URN_mso_adapters_sdnc_endpoint")).thenReturn("http://localhost:8090/SDNCAdapter")
+			when(mockExecution.getVariable("URN_mso_adapters_network_rest_endpoint")).thenReturn("http://localhost:8090/networks/NetworkAdapter")
+			when(mockExecution.getVariable("URN_mso_adapters_sdnc_resource_endpoint")).thenReturn("http://localhost:8090/SDNCAdapterRpc")
+			
+			
+			// preProcessRequest(DelegateExecution execution)						
+			DoDeleteNetworkInstanceRollback DoDeleteNetworkInstanceRollback = new DoDeleteNetworkInstanceRollback()
+			DoDeleteNetworkInstanceRollback.preProcessRequest(mockExecution)
+
+			//verify variable initialization
+			initializeVariables(mockExecution)
+			
+			verify(mockExecution).getVariable("isDebugLogEnabled")
+			verify(mockExecution).setVariable("prefix", Prefix)
+								
+		}
+		
+
+		@Test
+		//@Ignore
+		public void validateRollbackResponses_Good() {
+			
+			WorkflowException workflowException = new WorkflowException("DoDeleteNetworkInstanceRollback", 2500, "AAI Update Contrail Failed.  Error 404.")
+			WorkflowException expectedWorkflowException = new WorkflowException("DoDeleteNetworkInstanceRollback", 2500, "AAI Update Contrail Failed.  Error 404. + SNDC deactivate rollback completed. + PO Network rollback completed. + SNDC unassign rollback completed.")
+				  
+			println "************ validateRollbackResponses_Good() ************* "
+			ExecutionEntity mockExecution = setupMock()
+			// Initialize prerequisite variables
+			when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+			when(mockExecution.getVariable("prefix")).thenReturn(Prefix + "")
+
+			when(mockExecution.getVariable(Prefix + "rollbackDeactivateSDNCRequest")).thenReturn("Good")
+			when(mockExecution.getVariable(Prefix + "rollbackDeactivateSDNCReturnCode")).thenReturn("200")
+			when(mockExecution.getVariable(Prefix + "rollbackDeactivateSDNCResponse")).thenReturn("GoodResponse")
+			when(mockExecution.getVariable(Prefix + "rollbackNetworkRequest")).thenReturn("Good")
+			when(mockExecution.getVariable(Prefix + "rollbackNetworkReturnCode")).thenReturn("200")
+			when(mockExecution.getVariable(Prefix + "rollbackNetworkResponse")).thenReturn("GoodResponse")
+			when(mockExecution.getVariable(Prefix + "rollbackSDNCRequest")).thenReturn("Good")
+			when(mockExecution.getVariable(Prefix + "rollbackSDNCReturnCode")).thenReturn("200")
+			when(mockExecution.getVariable(Prefix + "rollbackSDNCResponse")).thenReturn("GoodResponse")
+			when(mockExecution.getVariable(Prefix + "WorkflowException")).thenReturn(workflowException)
+			when(mockExecution.getVariable(Prefix + "fullRollback")).thenReturn(false)
+									
+			DoDeleteNetworkInstanceRollback DoDeleteNetworkInstanceRollback = new DoDeleteNetworkInstanceRollback()
+			DoDeleteNetworkInstanceRollback.validateRollbackResponses(mockExecution)
+			
+			// verify set prefix = Prefix + ""
+			verify(mockExecution, atLeast(1)).setVariable("prefix", Prefix)
+			verify(mockExecution, atLeast(1)).setVariable("rolledBack", true)
+			verify(mockExecution, atLeast(1)).setVariable("wasDeleted", true)
+			verify(mockExecution).setVariable("WorkflowException", refEq(expectedWorkflowException, any(WorkflowException.class)))
+			//verify(mockExecution).setVariable("WorkflowException", expectedWorkflowException)
+		}
+		
+		@Test
+		//@Ignore
+		public void validateRollbackResponses_FullRollback() {
+			
+			Map<String, String> rollbackData = new HashMap<String, String>();
+			rollbackData.put("rollbackDeactivateSDNCRequest", rollbackDeActivateSDNCRequest)
+			rollbackData.put("rollbackNetworkRequest", rollbackNetworkRequest)
+			rollbackData.put("rollbackSDNCRequest", rollbackSDNCRequest)
+				  
+			println "************ validateRollbackResponses_FullRollback() ************* "
+			ExecutionEntity mockExecution = setupMock()
+			// Initialize prerequisite variables
+			when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+			when(mockExecution.getVariable("prefix")).thenReturn(Prefix + "")
+
+			when(mockExecution.getVariable(Prefix + "rollbackDeactivateSDNCRequest")).thenReturn("Good")
+			when(mockExecution.getVariable(Prefix + "rollbackDeactivateSDNCReturnCode")).thenReturn("200")
+			when(mockExecution.getVariable(Prefix + "rollbackDeactivateSDNCResponse")).thenReturn("GoodResponse")
+			when(mockExecution.getVariable(Prefix + "rollbackNetworkRequest")).thenReturn("Good")
+			when(mockExecution.getVariable(Prefix + "rollbackNetworkReturnCode")).thenReturn("200")
+			when(mockExecution.getVariable(Prefix + "rollbackNetworkResponse")).thenReturn("GoodResponse")
+			when(mockExecution.getVariable(Prefix + "rollbackSDNCRequest")).thenReturn("Good")
+			when(mockExecution.getVariable(Prefix + "rollbackSDNCReturnCode")).thenReturn("200")
+			when(mockExecution.getVariable(Prefix + "rollbackSDNCResponse")).thenReturn("GoodResponse")
+			when(mockExecution.getVariable(Prefix + "WorkflowException")).thenReturn(null)
+			when(mockExecution.getVariable(Prefix + "fullRollback")).thenReturn(true)
+			when(mockExecution.getVariable("rollbackData")).thenReturn(rollbackData)
+									
+			DoDeleteNetworkInstanceRollback DoDeleteNetworkInstanceRollback = new DoDeleteNetworkInstanceRollback()
+			DoDeleteNetworkInstanceRollback.validateRollbackResponses(mockExecution)
+			
+			// verify set prefix = Prefix + ""
+			verify(mockExecution, atLeast(1)).setVariable("prefix", Prefix)
+			verify(mockExecution, atLeast(1)).setVariable("rollbackSuccessful", true)
+			verify(mockExecution, atLeast(1)).setVariable("rollbackError", false)
+			
+		}
+		
+		
+		private ExecutionEntity setupMock() {
+			
+			ProcessDefinition mockProcessDefinition = mock(ProcessDefinition.class)
+			when(mockProcessDefinition.getKey()).thenReturn("DoDeleteNetworkInstanceRollback")
+			RepositoryService mockRepositoryService = mock(RepositoryService.class)
+			when(mockRepositoryService.getProcessDefinition()).thenReturn(mockProcessDefinition)
+			when(mockRepositoryService.getProcessDefinition().getKey()).thenReturn("DoDeleteNetworkInstanceRollback")
+			when(mockRepositoryService.getProcessDefinition().getId()).thenReturn("100")
+			ProcessEngineServices mockProcessEngineServices = mock(ProcessEngineServices.class)
+			when(mockProcessEngineServices.getRepositoryService()).thenReturn(mockRepositoryService)
+			
+			ExecutionEntity mockExecution = mock(ExecutionEntity.class)
+			// Initialize prerequisite variables
+			
+			when(mockExecution.getId()).thenReturn("100")
+			when(mockExecution.getProcessDefinitionId()).thenReturn("DoDeleteNetworkInstanceRollback")
+			when(mockExecution.getProcessInstanceId()).thenReturn("DoDeleteNetworkInstanceRollback")
+			when(mockExecution.getProcessEngineServices()).thenReturn(mockProcessEngineServices)
+			when(mockExecution.getProcessEngineServices().getRepositoryService().getProcessDefinition(mockExecution.getProcessDefinitionId())).thenReturn(mockProcessDefinition)
+			
+			return mockExecution
+		}
+		
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteNetworkInstanceTest.groovy b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteNetworkInstanceTest.groovy
index f1dbb4b..bc00123 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteNetworkInstanceTest.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoDeleteNetworkInstanceTest.groovy
@@ -10,7 +10,7 @@
 import org.camunda.bpm.engine.RepositoryService
 import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity
 import org.camunda.bpm.engine.repository.ProcessDefinition
-import org.camunda.bpm.engine.runtime.Execution
+import org.camunda.bpm.engine.delegate.DelegateExecution
 import org.junit.Before
 import org.junit.Ignore
 import org.junit.Rule
@@ -858,12 +858,12 @@
       <service-information>
          <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
          <subscription-service-type>MSO-dev-service-type</subscription-service-type>
-         <onap-model-information>
+         <ecomp-model-information>
             <model-invariant-uuid>fcc85cb0-ad74-45d7-a5a1-17c8744fdb71</model-invariant-uuid>
             <model-uuid>36a3a8ea-49a6-4ac8-b06c-89a54544b9b6</model-uuid>
             <model-version>1.0</model-version>
             <model-name>HNGW Protected OAM</model-name>
-         </onap-model-information>
+         </ecomp-model-information>
          <service-instance-id>f70e927b-6087-4974-9ef8-c5e4d5847ca4</service-instance-id>
          <global-customer-id>globalId_45678905678</global-customer-id>
          <subscriber-name/>
@@ -871,13 +871,13 @@
       <network-information>
          <network-id>networkId</network-id>
          <network-type>CONTRAIL_EXTERNAL</network-type>
-         <onap-model-information>
+         <ecomp-model-information>
             <model-invariant-uuid>sn5256d1-5a33-55df-13ab-12abad84e764</model-invariant-uuid>
             <model-customization-uuid>sn5256d1-5a33-55df-13ab-12abad84e222</model-customization-uuid>
             <model-uuid>sn5256d1-5a33-55df-13ab-12abad84e111</model-uuid>
             <model-version>1</model-version>
             <model-name>CONTRAIL_EXTERNAL</model-name>
-         </onap-model-information>
+         </ecomp-model-information>
       </network-information>
       <network-request-input>
          <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
@@ -912,12 +912,12 @@
       <service-information>
          <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
          <subscription-service-type>MSO-dev-service-type</subscription-service-type>
-         <onap-model-information>
+         <ecomp-model-information>
             <model-invariant-uuid>fcc85cb0-ad74-45d7-a5a1-17c8744fdb71</model-invariant-uuid>
             <model-uuid>36a3a8ea-49a6-4ac8-b06c-89a54544b9b6</model-uuid>
             <model-version>1.0</model-version>
             <model-name>HNGW Protected OAM</model-name>
-         </onap-model-information>
+         </ecomp-model-information>
          <service-instance-id>f70e927b-6087-4974-9ef8-c5e4d5847ca4</service-instance-id>
          <global-customer-id>globalId_45678905678</global-customer-id>
          <subscriber-name/>
@@ -925,13 +925,13 @@
       <network-information>
          <network-id>bdc5efe8-404a-409b-85f6-0dcc9eebae30</network-id>
          <network-type>CONTRAIL_EXTERNAL</network-type>
-         <onap-model-information>
+         <ecomp-model-information>
             <model-invariant-uuid>sn5256d1-5a33-55df-13ab-12abad84e764</model-invariant-uuid>
             <model-customization-uuid>sn5256d1-5a33-55df-13ab-12abad84e222</model-customization-uuid>
             <model-uuid>sn5256d1-5a33-55df-13ab-12abad84e111</model-uuid>
             <model-version>1</model-version>
             <model-name>CONTRAIL_EXTERNAL</model-name>
-         </onap-model-information>
+         </ecomp-model-information>
       </network-information>
       <network-request-input>
          <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
@@ -1225,7 +1225,7 @@
 
 		}
 		
-		public void initializeVariables (Execution mockExecution) {
+		public void initializeVariables (DelegateExecution mockExecution) {
 
 			verify(mockExecution).setVariable(Prefix + "networkRequest", "")
 			verify(mockExecution).setVariable(Prefix + "isSilentSuccess", false)
@@ -1302,7 +1302,7 @@
 			when(mockExecution.getVariable("URN_mso_rollback")).thenReturn("true")
 			when(mockExecution.getVariable("sdncVersion")).thenReturn("1610")
 
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			DoDeleteNetworkInstance DoDeleteNetworkInstance = new DoDeleteNetworkInstance()
 			try {
 				DoDeleteNetworkInstance.preProcessRequest(mockExecution)
@@ -1367,7 +1367,7 @@
 			when(mockExecution.getVariable("URN_mso_rollback")).thenReturn("true")
 			when(mockExecution.getVariable("sdncVersion")).thenReturn("1610")
 
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			DoDeleteNetworkInstance DoDeleteNetworkInstance = new DoDeleteNetworkInstance()
 			DoDeleteNetworkInstance.preProcessRequest(mockExecution)
 
@@ -1547,7 +1547,7 @@
 			when(mockExecution.getVariable("GENGSI_siResourceLink")).thenReturn(null)
 			when(mockExecution.getVariable(Prefix + "deactivateSDNCResponse")).thenReturn(sdncAdapterWorkflowFormattedResponse)
 
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			DoDeleteNetworkInstance DoDeleteNetworkInstance = new DoDeleteNetworkInstance()
 			DoDeleteNetworkInstance.prepareRpcSDNCDeactivateRollback(mockExecution)
 
@@ -1568,7 +1568,7 @@
 			println "************ callRESTQueryAAI ************* "
 
 			WireMock.reset();
-			MockGetNetworkByIdWithDepth("bdc5efe8-404a-409b-85f6-0dcc9eebae30", "DeleteNetworkV2/deleteNetworkAAIResponse_Success.xml", "1");
+			MockGetNetworkByIdWithDepth("bdc5efe8-404a-409b-85f6-0dcc9eebae30", "DeleteNetworkV2/deleteNetworkAAIResponse_Success.xml", "all");
 
 			ExecutionEntity mockExecution = setupMock()
 			when(mockExecution.getVariable(Prefix + "networkInputs")).thenReturn(expectedNetworkRequest)
@@ -1586,7 +1586,7 @@
 			DoDeleteNetworkInstance.callRESTQueryAAI(mockExecution)
 
 			verify(mockExecution).setVariable("prefix", Prefix)
-			verify(mockExecution).setVariable(Prefix + "queryAAIRequest", "http://localhost:8090/aai/v9/network/l3-networks/l3-network/bdc5efe8-404a-409b-85f6-0dcc9eebae30"+"?depth=1")
+			verify(mockExecution).setVariable(Prefix + "queryAAIRequest", "http://localhost:8090/aai/v9/network/l3-networks/l3-network/bdc5efe8-404a-409b-85f6-0dcc9eebae30"+"?depth=all")
 
 			verify(mockExecution).setVariable(Prefix + "aaiReturnCode", "200")
 			//verify(mockExecution).setVariable(Prefix + "queryAAIResponse", aaiResponse)
@@ -1602,7 +1602,7 @@
 			println "************ callRESTQueryAAI ************* "
 
 			WireMock.reset();
-			MockGetNetworkByIdWithDepth("bdc5efe8-404a-409b-85f6-0dcc9eebae30", "DeleteNetworkV2/deleteNetworkAAIResponse_withRelationship_Success.xml", "1");
+			MockGetNetworkByIdWithDepth("bdc5efe8-404a-409b-85f6-0dcc9eebae30", "DeleteNetworkV2/deleteNetworkAAIResponse_withRelationship_Success.xml", "all");
 
 			ExecutionEntity mockExecution = setupMock()
 			when(mockExecution.getVariable(Prefix + "networkInputs")).thenReturn(expectedNetworkRequest)
@@ -1620,7 +1620,7 @@
 			DoDeleteNetworkInstance.callRESTQueryAAI(mockExecution)
 
 			verify(mockExecution, atLeast(1)).setVariable("prefix", Prefix)
-			verify(mockExecution).setVariable(Prefix + "queryAAIRequest", "http://localhost:8090/aai/v9/network/l3-networks/l3-network/bdc5efe8-404a-409b-85f6-0dcc9eebae30"+"?depth=1")
+			verify(mockExecution).setVariable(Prefix + "queryAAIRequest", "http://localhost:8090/aai/v9/network/l3-networks/l3-network/bdc5efe8-404a-409b-85f6-0dcc9eebae30"+"?depth=all")
 
 			verify(mockExecution).setVariable(Prefix + "aaiReturnCode", "200")
 			//verify(mockExecution).setVariable(Prefix + "queryAAIResponse", aaiResponseWithRelationship)
@@ -1636,7 +1636,7 @@
 			println "************ callRESTQueryAAI ************* "
 
 			WireMock.reset();
-			MockGetNetworkByIdWithDepth("bdc5efe8-404a-409b-85f6-0dcc9eebae30", "DeleteNetworkV2/deleteNetworkAAIResponse_Success.xml", "1");
+			MockGetNetworkByIdWithDepth("bdc5efe8-404a-409b-85f6-0dcc9eebae30", "DeleteNetworkV2/deleteNetworkAAIResponse_Success.xml", "all");
 
 			ExecutionEntity mockExecution = setupMock()
 			when(mockExecution.getVariable(Prefix + "networkInputs")).thenReturn(expectedNetworkRequest)
@@ -1654,7 +1654,7 @@
 			DoDeleteNetworkInstance.callRESTQueryAAI(mockExecution)
 
 			verify(mockExecution).setVariable("prefix", Prefix)
-			verify(mockExecution).setVariable(Prefix + "queryAAIRequest", "http://localhost:8090/aai/v9/network/l3-networks/l3-network/bdc5efe8-404a-409b-85f6-0dcc9eebae30"+ "?depth=1")
+			verify(mockExecution).setVariable(Prefix + "queryAAIRequest", "http://localhost:8090/aai/v9/network/l3-networks/l3-network/bdc5efe8-404a-409b-85f6-0dcc9eebae30"+ "?depth=all")
 
 			verify(mockExecution).setVariable(Prefix + "aaiReturnCode", "200")
 			//verify(mockExecution).setVariable(Prefix + "queryAAIResponse", aaiResponse)
@@ -1715,7 +1715,7 @@
 			when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
 			when(mockExecution.getVariable("URN_aai_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
 
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			DoDeleteNetworkInstance DoDeleteNetworkInstance = new DoDeleteNetworkInstance()
 			DoDeleteNetworkInstance.callRESTQueryAAICloudRegion(mockExecution)
 
@@ -1748,7 +1748,7 @@
 			when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
 			when(mockExecution.getVariable("URN_aai_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
 
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			DoDeleteNetworkInstance DoDeleteNetworkInstance = new DoDeleteNetworkInstance()
 			DoDeleteNetworkInstance.callRESTQueryAAICloudRegion(mockExecution)
 
@@ -1864,7 +1864,7 @@
 			when(mockExecution.getVariable(Prefix + "source")).thenReturn("PORTAL")
 			when(mockExecution.getVariable(Prefix + "isException")).thenReturn(false)
 
-			// postProcessResponse(Execution execution)
+			// postProcessResponse(DelegateExecution execution)
 			DoDeleteNetworkInstance DoDeleteNetworkInstance = new DoDeleteNetworkInstance()
 			DoDeleteNetworkInstance.postProcessResponse(mockExecution)
 
@@ -1892,7 +1892,7 @@
 			when(mockExecution.getVariable(Prefix + "rollbackDeactivateSDNCRequest")).thenReturn(sdncAdapaterDeactivateRollback)
 			when(mockExecution.getVariable("WorkflowException")).thenReturn(workflowException)
 
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			DoDeleteNetworkInstance DoDeleteNetworkInstance = new DoDeleteNetworkInstance()
 			DoDeleteNetworkInstance.prepareRollbackData(mockExecution)
 
@@ -1926,4 +1926,4 @@
 
 		}
 
-}
+}
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoUpdateNetworkInstanceRollbackTest.groovy b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoUpdateNetworkInstanceRollbackTest.groovy
index f4b1a87..09f1cfb 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoUpdateNetworkInstanceRollbackTest.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoUpdateNetworkInstanceRollbackTest.groovy
@@ -1,315 +1,315 @@
-package org.openecomp.mso.bpmn.infrastructure.scripts
-
-import static org.mockito.Mockito.*
-
-import org.camunda.bpm.engine.delegate.BpmnError
-import org.camunda.bpm.engine.ProcessEngineServices
-import org.camunda.bpm.engine.RepositoryService
-import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity
-import org.camunda.bpm.engine.impl.pvm.process.ProcessDefinitionImpl
-import org.camunda.bpm.engine.repository.ProcessDefinition
-import org.camunda.bpm.engine.runtime.Execution;
-import org.mockito.MockitoAnnotations
-import org.mockito.runners.MockitoJUnitRunner
-import org.mockito.internal.debugging.MockitoDebuggerImpl
-import org.openecomp.mso.bpmn.common.scripts.MsoUtils
-import org.openecomp.mso.bpmn.core.WorkflowException
-import org.junit.Before
-import org.junit.Rule;
-import org.junit.Test
-import org.junit.Ignore
-import org.junit.runner.RunWith
-
-import static org.junit.Assert.*;
-
-import com.github.tomakehurst.wiremock.client.WireMock;
-import com.github.tomakehurst.wiremock.junit.WireMockRule;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.UUID;
-import org.apache.commons.lang3.*
-
-
-@RunWith(MockitoJUnitRunner.class)
-class DoUpdateNetworkInstanceRollbackTest  {
-
-	@Rule
-	public WireMockRule wireMockRule = new WireMockRule(28090);
-
-		def utils = new MsoUtils()
-		String Prefix="UPDNETIR_"
-
-
-		String rollbackNetworkRequest =
-		"""<NetworkAdapter:rollbackNetwork xmlns:NetworkAdapter="http://org.openecomp.mso/network">
-   <rollback>
-      <networkId>MNS-25180-L-01-dmz_direct_net_1/2c88a3a9-69b9-43a7-ada6-1aca577c3641</networkId>
-      <neutronNetworkId>c4f4e878-cde0-4b15-ae9a-bda857759cea</neutronNetworkId>
-      <networkStackId/>
-      <networkType>CONTRAIL_EXTERNAL</networkType>
-      <networkCreated>true</networkCreated>
-      <tenantId>7dd5365547234ee8937416c65507d266</tenantId>
-      <cloudSiteId>RDM2WAGPLCP</cloudSiteId>
-      <msoRequest>
-         <requestId>1ef47428-cade-45bd-a103-0751e8b2deb0</requestId>
-         <serviceInstanceId/>
-      </msoRequest>
-   </rollback>
-</NetworkAdapter:rollbackNetwork>"""
-
-					String rollbackActivateSDNCRequest =
-		"""<aetgt:SDNCAdapterWorkflowRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
-                                  xmlns:ns5="http://org.openecomp/mso/request/types/v1"
-                                  xmlns:sdncadapter="http://org.openecomp.mso/workflow/sdnc/adapter/schema/v1">
-   <sdncadapter:RequestHeader>
-      <sdncadapter:RequestId>88f65519-9a38-4c4b-8445-9eb4a5a5af56</sdncadapter:RequestId>
-      <sdncadapter:SvcInstanceId>f70e927b-6087-4974-9ef8-c5e4d5847ca4</sdncadapter:SvcInstanceId>
-      <sdncadapter:SvcAction>rollback</sdncadapter:SvcAction>
-      <sdncadapter:SvcOperation>network-topology-operation</sdncadapter:SvcOperation>
-      <sdncadapter:CallbackUrl>sdncCallback</sdncadapter:CallbackUrl>
-      <sdncadapter:MsoAction>generic-resource</sdncadapter:MsoAction>
-   </sdncadapter:RequestHeader>
-   <aetgt:SDNCRequestData>
-      <request-information>
-         <request-id>88f65519-9a38-4c4b-8445-9eb4a5a5af56</request-id>
-         <request-action>CreateNetworkInstance</request-action>
-         <source>VID</source>
-         <notification-url/>
-         <order-number/>
-         <order-version/>
-      </request-information>
-      <service-information>
-         <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
-         <service-type>MSO-dev-service-type</service-type>
-         <service-instance-id>f70e927b-6087-4974-9ef8-c5e4d5847ca4</service-instance-id>
-         <subscriber-name>MSO_1610_dev</subscriber-name>
-      </service-information>
-      <network-information>
-         <network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id>
-         <network-type>CONTRAIL_EXTERNAL</network-type>
-         <onap-model-information>
-            <model-invariant-uuid>invariant-uuid</model-invariant-uuid>
-            <model-customization-uuid>customization-uuid</model-customization-uuid>
-            <model-uuid>uuid</model-uuid>
-            <model-version>version</model-version>
-            <model-name>CONTRAIL_EXTERNAL</model-name>
-         </onap-model-information>
-      </network-information>
-      <network-request-information>
-         <network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id>
-         <network-type>CONTRAIL_EXTERNAL</network-type>
-         <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
-         <tenant>7dd5365547234ee8937416c65507d266</tenant>
-         <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>
-      </network-request-information>
-   </aetgt:SDNCRequestData>
-</aetgt:SDNCAdapterWorkflowRequest>"""
-
-					String rollbackSDNCRequest =
-		"""<aetgt:SDNCAdapterWorkflowRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
-                                  xmlns:ns5="http://org.openecomp/mso/request/types/v1"
-                                  xmlns:sdncadapter="http://org.openecomp.mso/workflow/sdnc/adapter/schema/v1">
-   <sdncadapter:RequestHeader>
-      <sdncadapter:RequestId>88f65519-9a38-4c4b-8445-9eb4a5a5af56</sdncadapter:RequestId>
-      <sdncadapter:SvcInstanceId>f70e927b-6087-4974-9ef8-c5e4d5847ca4</sdncadapter:SvcInstanceId>
-      <sdncadapter:SvcAction>rollback</sdncadapter:SvcAction>
-      <sdncadapter:SvcOperation>network-topology-operation</sdncadapter:SvcOperation>
-      <sdncadapter:CallbackUrl>sdncCallback</sdncadapter:CallbackUrl>
-      <sdncadapter:MsoAction>generic-resource</sdncadapter:MsoAction>
-   </sdncadapter:RequestHeader>
-   <aetgt:SDNCRequestData>
-      <request-information>
-         <request-id>88f65519-9a38-4c4b-8445-9eb4a5a5af56</request-id>
-         <request-action>CreateNetworkInstance</request-action>
-         <source>VID</source>
-         <notification-url/>
-         <order-number/>
-         <order-version/>
-      </request-information>
-      <service-information>
-         <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
-         <service-type>MSO-dev-service-type</service-type>
-         <service-instance-id>f70e927b-6087-4974-9ef8-c5e4d5847ca4</service-instance-id>
-         <subscriber-name>MSO_1610_dev</subscriber-name>
-      </service-information>
-      <network-information>
-         <network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id>
-         <network-type>CONTRAIL_EXTERNAL</network-type>
-         <onap-model-information>
-            <model-invariant-uuid>invariant-uuid</model-invariant-uuid>
-            <model-customization-uuid>customization-uuid</model-customization-uuid>
-            <model-uuid>uuid</model-uuid>
-            <model-version>version</model-version>
-            <model-name>CONTRAIL_EXTERNAL</model-name>
-         </onap-model-information>
-      </network-information>
-      <network-request-information>
-         <network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id>
-         <network-type>CONTRAIL_EXTERNAL</network-type>
-         <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
-         <tenant>7dd5365547234ee8937416c65507d266</tenant>
-         <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>
-      </network-request-information>
-   </aetgt:SDNCRequestData>
-</aetgt:SDNCAdapterWorkflowRequest>"""
-
-// - - - - - - - -
-
-
-	    @Before
-		public void init()
-		{
-			MockitoAnnotations.initMocks(this)
-
-		}
-
-		public void initializeVariables (Execution mockExecution) {
-
-			verify(mockExecution).setVariable(Prefix + "rollbackNetworkRequest", null)
-			verify(mockExecution).setVariable(Prefix + "rollbackSDNCRequest", null)
-			verify(mockExecution).setVariable(Prefix + "WorkflowException", null)
-
-			verify(mockExecution).setVariable(Prefix + "rollbackNetworkRequest", "")
-			verify(mockExecution).setVariable(Prefix + "rollbackNetworkResponse", "")
-			verify(mockExecution).setVariable(Prefix + "rollbackNetworkReturnCode", "")
-
-			verify(mockExecution).setVariable(Prefix + "rollbackSDNCRequest", "")
-			verify(mockExecution).setVariable(Prefix + "rollbackSDNCResponse", "")
-			verify(mockExecution).setVariable(Prefix + "rollbackSDNCReturnCode", "")
-
-			verify(mockExecution).setVariable(Prefix + "Success", false)
-			verify(mockExecution).setVariable(Prefix + "fullRollback", false)
-
-
-		}
-
-		@Test
-		//@Ignore
-		public void preProcessRequest() {
-
-			println "************ preProcessRequest ************* "
-
-			WorkflowException workflowException = new WorkflowException("DoUpdateNetworkInstanceRollback", 2500, "Received error from Network Adapter: JBWEB000065: HTTP Status 500.")
-			Map<String, String> rollbackData = new HashMap<String, String>();
-			rollbackData.put("rollbackSDNCRequest", rollbackSDNCRequest)
-			rollbackData.put("rollbackNetworkRequest", rollbackNetworkRequest)
-
-			ExecutionEntity mockExecution = setupMock()
-			// Initialize prerequisite variables
-			when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
-			when(mockExecution.getVariable("prefix")).thenReturn(Prefix + "")
-			when(mockExecution.getVariable("WorkflowException")).thenReturn(workflowException)
-			when(mockExecution.getVariable("rollbackData")).thenReturn(rollbackData)
-			when(mockExecution.getVariable("sdncVersion")).thenReturn("1610")
-			when(mockExecution.getVariable("URN_mso_adapters_po_auth")).thenReturn("3141634BF7E070AA289CF2892C986C0B")
-			when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
-
-			when(mockExecution.getVariable("URN_mso_adapters_sdnc_endpoint")).thenReturn("http://localhost:28090/SDNCAdapter")
-			when(mockExecution.getVariable("URN_mso_adapters_network_rest_endpoint")).thenReturn("http://localhost:28090/networks/NetworkAdapter")
-			when(mockExecution.getVariable("URN_mso_adapters_sdnc_resource_endpoint")).thenReturn("http://localhost:28090/SDNCAdapterRpc")
-
-
-			// preProcessRequest(Execution execution)
-			DoUpdateNetworkInstanceRollback DoUpdateNetworkInstanceRollback = new DoUpdateNetworkInstanceRollback()
-			DoUpdateNetworkInstanceRollback.preProcessRequest(mockExecution)
-
-			verify(mockExecution).getVariable("isDebugLogEnabled")
-			verify(mockExecution).setVariable("prefix", Prefix)
-
-			//verify variable initialization
-			initializeVariables(mockExecution)
-
-		}
-
-
-		@Test
-		@Ignore
-		public void validateRollbackResponses_Good() {
-
-			WorkflowException workflowException = new WorkflowException("DoUpdateNetworkInstanceRollback", 2500, "AAI Update Contrail Failed.  Error 404.")
-			WorkflowException expectedWorkflowException = new WorkflowException("DoUpdateNetworkInstanceRollback", 2500, "AAI Update Contrail Failed.  Error 404. + SNDC activate rollback completed. + PO Network rollback completed. + SNDC assign rollback completed.")
-
-			println "************ validateRollbackResponses_Good() ************* "
-			ExecutionEntity mockExecution = setupMock()
-			// Initialize prerequisite variables
-			when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
-			when(mockExecution.getVariable("prefix")).thenReturn(Prefix + "")
-			when(mockExecution.getVariable(Prefix + "rollbackNetworkRequest")).thenReturn("Good")
-			when(mockExecution.getVariable(Prefix + "rollbackSDNCRequest")).thenReturn("Good")
-			when(mockExecution.getVariable(Prefix + "rollbackNetworkReturnCode")).thenReturn("200")
-			when(mockExecution.getVariable(Prefix + "rollbackNetworkResponse")).thenReturn("GoodResponse")
-			when(mockExecution.getVariable(Prefix + "rollbackSDNCReturnCode")).thenReturn("200")
-			when(mockExecution.getVariable(Prefix + "rollbackSDNCResponse")).thenReturn("GoodResponse")
-			when(mockExecution.getVariable(Prefix + "WorkflowException")).thenReturn(workflowException)
-			when(mockExecution.getVariable(Prefix + "fullRollback")).thenReturn(false)
-
-			DoUpdateNetworkInstanceRollback DoUpdateNetworkInstanceRollback = new DoUpdateNetworkInstanceRollback()
-			DoUpdateNetworkInstanceRollback.validateRollbackResponses(mockExecution)
-
-			// verify set prefix = Prefix + ""
-			verify(mockExecution, atLeast(1)).setVariable("prefix", Prefix)
-			verify(mockExecution, atLeast(1)).setVariable("rolledBack", true)
-			verify(mockExecution, atLeast(1)).setVariable("wasDeleted", true)
-			verify(mockExecution).setVariable("WorkflowException", refEq(expectedWorkflowException, any(WorkflowException.class)))
-			//verify(mockExecution).setVariable("WorkflowException", expectedWorkflowException)
-		}
-
-		@Test
-		//@Ignore
-		public void validateRollbackResponses_FullRollback() {
-
-			Map<String, String> rollbackData = new HashMap<String, String>();
-			rollbackData.put("rollbackSDNCRequest", rollbackSDNCRequest)
-			rollbackData.put("rollbackNetworkRequest", rollbackNetworkRequest)
-
-			println "************ validateRollbackResponses_FullRollback() ************* "
-			ExecutionEntity mockExecution = setupMock()
-			// Initialize prerequisite variables
-			when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
-			when(mockExecution.getVariable("prefix")).thenReturn(Prefix)
-			when(mockExecution.getVariable(Prefix + "rollbackNetworkRequest")).thenReturn("Good")
-			when(mockExecution.getVariable(Prefix + "rollbackSDNCRequest")).thenReturn("Good")
-			when(mockExecution.getVariable(Prefix + "rollbackNetworkReturnCode")).thenReturn("200")
-			when(mockExecution.getVariable(Prefix + "rollbackNetworkResponse")).thenReturn("GoodResponse")
-			when(mockExecution.getVariable(Prefix + "rollbackSDNCReturnCode")).thenReturn("200")
-			when(mockExecution.getVariable(Prefix + "rollbackSDNCResponse")).thenReturn("GoodResponse")
-			when(mockExecution.getVariable(Prefix + "WorkflowException")).thenReturn(null)
-			when(mockExecution.getVariable(Prefix + "fullRollback")).thenReturn(true)
-			when(mockExecution.getVariable("rollbackData")).thenReturn(rollbackData)
-
-			DoUpdateNetworkInstanceRollback DoUpdateNetworkInstanceRollback = new DoUpdateNetworkInstanceRollback()
-			DoUpdateNetworkInstanceRollback.validateRollbackResponses(mockExecution)
-
-			// verify set prefix = Prefix + ""
-			verify(mockExecution, atLeast(1)).setVariable("prefix", Prefix)
-			verify(mockExecution, atLeast(1)).setVariable("rollbackSuccessful", true)
-			verify(mockExecution, atLeast(1)).setVariable("rollbackError", false)
-
-		}
-
-
-		private ExecutionEntity setupMock() {
-
-			ProcessDefinition mockProcessDefinition = mock(ProcessDefinition.class)
-			when(mockProcessDefinition.getKey()).thenReturn("DoUpdateNetworkInstanceRollback")
-			RepositoryService mockRepositoryService = mock(RepositoryService.class)
-			when(mockRepositoryService.getProcessDefinition()).thenReturn(mockProcessDefinition)
-			when(mockRepositoryService.getProcessDefinition().getKey()).thenReturn("DoUpdateNetworkInstanceRollback")
-			when(mockRepositoryService.getProcessDefinition().getId()).thenReturn("100")
-			ProcessEngineServices mockProcessEngineServices = mock(ProcessEngineServices.class)
-			when(mockProcessEngineServices.getRepositoryService()).thenReturn(mockRepositoryService)
-
-			ExecutionEntity mockExecution = mock(ExecutionEntity.class)
-			// Initialize prerequisite variables
-
-			when(mockExecution.getId()).thenReturn("100")
-			when(mockExecution.getProcessDefinitionId()).thenReturn("DoUpdateNetworkInstanceRollback")
-			when(mockExecution.getProcessInstanceId()).thenReturn("DoUpdateNetworkInstanceRollback")
-			when(mockExecution.getProcessEngineServices()).thenReturn(mockProcessEngineServices)
-			when(mockExecution.getProcessEngineServices().getRepositoryService().getProcessDefinition(mockExecution.getProcessDefinitionId())).thenReturn(mockProcessDefinition)
-
-			return mockExecution
-		}
-
-}
+package org.openecomp.mso.bpmn.infrastructure.scripts
+
+import static org.mockito.Mockito.*
+
+import org.camunda.bpm.engine.delegate.BpmnError
+import org.camunda.bpm.engine.ProcessEngineServices
+import org.camunda.bpm.engine.RepositoryService
+import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity
+import org.camunda.bpm.engine.impl.pvm.process.ProcessDefinitionImpl
+import org.camunda.bpm.engine.repository.ProcessDefinition
+import org.camunda.bpm.engine.delegate.DelegateExecution;
+import org.mockito.MockitoAnnotations
+import org.mockito.runners.MockitoJUnitRunner
+import org.mockito.internal.debugging.MockitoDebuggerImpl
+import org.openecomp.mso.bpmn.common.scripts.MsoUtils
+import org.openecomp.mso.bpmn.core.WorkflowException
+import org.junit.Before
+import org.junit.Rule;
+import org.junit.Test
+import org.junit.Ignore
+import org.junit.runner.RunWith
+
+import static org.junit.Assert.*;
+
+import com.github.tomakehurst.wiremock.client.WireMock;
+import com.github.tomakehurst.wiremock.junit.WireMockRule;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+import org.apache.commons.lang3.*
+
+
+@RunWith(MockitoJUnitRunner.class)
+class DoUpdateNetworkInstanceRollbackTest  {
+
+	@Rule
+	public WireMockRule wireMockRule = new WireMockRule(28090);
+
+		def utils = new MsoUtils()
+		String Prefix="UPDNETIR_"
+
+
+		String rollbackNetworkRequest =
+		"""<NetworkAdapter:rollbackNetwork xmlns:NetworkAdapter="http://org.openecomp.mso/network">
+   <rollback>
+      <networkId>MNS-25180-L-01-dmz_direct_net_1/2c88a3a9-69b9-43a7-ada6-1aca577c3641</networkId>
+      <neutronNetworkId>c4f4e878-cde0-4b15-ae9a-bda857759cea</neutronNetworkId>
+      <networkStackId/>
+      <networkType>CONTRAIL_EXTERNAL</networkType>
+      <networkCreated>true</networkCreated>
+      <tenantId>7dd5365547234ee8937416c65507d266</tenantId>
+      <cloudSiteId>RDM2WAGPLCP</cloudSiteId>
+      <msoRequest>
+         <requestId>1ef47428-cade-45bd-a103-0751e8b2deb0</requestId>
+         <serviceInstanceId/>
+      </msoRequest>
+   </rollback>
+</NetworkAdapter:rollbackNetwork>"""
+
+					String rollbackActivateSDNCRequest =
+		"""<aetgt:SDNCAdapterWorkflowRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
+                                  xmlns:ns5="http://org.openecomp/mso/request/types/v1"
+                                  xmlns:sdncadapter="http://org.openecomp.mso/workflow/sdnc/adapter/schema/v1">
+   <sdncadapter:RequestHeader>
+      <sdncadapter:RequestId>88f65519-9a38-4c4b-8445-9eb4a5a5af56</sdncadapter:RequestId>
+      <sdncadapter:SvcInstanceId>f70e927b-6087-4974-9ef8-c5e4d5847ca4</sdncadapter:SvcInstanceId>
+      <sdncadapter:SvcAction>rollback</sdncadapter:SvcAction>
+      <sdncadapter:SvcOperation>network-topology-operation</sdncadapter:SvcOperation>
+      <sdncadapter:CallbackUrl>sdncCallback</sdncadapter:CallbackUrl>
+      <sdncadapter:MsoAction>generic-resource</sdncadapter:MsoAction>
+   </sdncadapter:RequestHeader>
+   <aetgt:SDNCRequestData>
+      <request-information>
+         <request-id>88f65519-9a38-4c4b-8445-9eb4a5a5af56</request-id>
+         <request-action>CreateNetworkInstance</request-action>
+         <source>VID</source>
+         <notification-url/>
+         <order-number/>
+         <order-version/>
+      </request-information>
+      <service-information>
+         <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+         <service-type>MSO-dev-service-type</service-type>
+         <service-instance-id>f70e927b-6087-4974-9ef8-c5e4d5847ca4</service-instance-id>
+         <subscriber-name>MSO_1610_dev</subscriber-name>
+      </service-information>
+      <network-information>
+         <network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id>
+         <network-type>CONTRAIL_EXTERNAL</network-type>
+         <ecomp-model-information>
+            <model-invariant-uuid>invariant-uuid</model-invariant-uuid>
+            <model-customization-uuid>customization-uuid</model-customization-uuid>
+            <model-uuid>uuid</model-uuid>
+            <model-version>version</model-version>
+            <model-name>CONTRAIL_EXTERNAL</model-name>
+         </ecomp-model-information>
+      </network-information>
+      <network-request-information>
+         <network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id>
+         <network-type>CONTRAIL_EXTERNAL</network-type>
+         <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
+         <tenant>7dd5365547234ee8937416c65507d266</tenant>
+         <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>
+      </network-request-information>
+   </aetgt:SDNCRequestData>
+</aetgt:SDNCAdapterWorkflowRequest>"""
+
+					String rollbackSDNCRequest =
+		"""<aetgt:SDNCAdapterWorkflowRequest xmlns:aetgt="http://org.openecomp/mso/workflow/schema/v1"
+                                  xmlns:ns5="http://org.openecomp/mso/request/types/v1"
+                                  xmlns:sdncadapter="http://org.openecomp.mso/workflow/sdnc/adapter/schema/v1">
+   <sdncadapter:RequestHeader>
+      <sdncadapter:RequestId>88f65519-9a38-4c4b-8445-9eb4a5a5af56</sdncadapter:RequestId>
+      <sdncadapter:SvcInstanceId>f70e927b-6087-4974-9ef8-c5e4d5847ca4</sdncadapter:SvcInstanceId>
+      <sdncadapter:SvcAction>rollback</sdncadapter:SvcAction>
+      <sdncadapter:SvcOperation>network-topology-operation</sdncadapter:SvcOperation>
+      <sdncadapter:CallbackUrl>sdncCallback</sdncadapter:CallbackUrl>
+      <sdncadapter:MsoAction>generic-resource</sdncadapter:MsoAction>
+   </sdncadapter:RequestHeader>
+   <aetgt:SDNCRequestData>
+      <request-information>
+         <request-id>88f65519-9a38-4c4b-8445-9eb4a5a5af56</request-id>
+         <request-action>CreateNetworkInstance</request-action>
+         <source>VID</source>
+         <notification-url/>
+         <order-number/>
+         <order-version/>
+      </request-information>
+      <service-information>
+         <service-id>a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb</service-id>
+         <service-type>MSO-dev-service-type</service-type>
+         <service-instance-id>f70e927b-6087-4974-9ef8-c5e4d5847ca4</service-instance-id>
+         <subscriber-name>MSO_1610_dev</subscriber-name>
+      </service-information>
+      <network-information>
+         <network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id>
+         <network-type>CONTRAIL_EXTERNAL</network-type>
+         <ecomp-model-information>
+            <model-invariant-uuid>invariant-uuid</model-invariant-uuid>
+            <model-customization-uuid>customization-uuid</model-customization-uuid>
+            <model-uuid>uuid</model-uuid>
+            <model-version>version</model-version>
+            <model-name>CONTRAIL_EXTERNAL</model-name>
+         </ecomp-model-information>
+      </network-information>
+      <network-request-information>
+         <network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id>
+         <network-type>CONTRAIL_EXTERNAL</network-type>
+         <network-name>MNS-25180-L-01-dmz_direct_net_1</network-name>
+         <tenant>7dd5365547234ee8937416c65507d266</tenant>
+         <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>
+      </network-request-information>
+   </aetgt:SDNCRequestData>
+</aetgt:SDNCAdapterWorkflowRequest>"""
+
+// - - - - - - - -
+
+
+	    @Before
+		public void init()
+		{
+			MockitoAnnotations.initMocks(this)
+
+		}
+
+		public void initializeVariables (DelegateExecution mockExecution) {
+
+			verify(mockExecution).setVariable(Prefix + "rollbackNetworkRequest", null)
+			verify(mockExecution).setVariable(Prefix + "rollbackSDNCRequest", null)
+			verify(mockExecution).setVariable(Prefix + "WorkflowException", null)
+
+			verify(mockExecution).setVariable(Prefix + "rollbackNetworkRequest", "")
+			verify(mockExecution).setVariable(Prefix + "rollbackNetworkResponse", "")
+			verify(mockExecution).setVariable(Prefix + "rollbackNetworkReturnCode", "")
+
+			verify(mockExecution).setVariable(Prefix + "rollbackSDNCRequest", "")
+			verify(mockExecution).setVariable(Prefix + "rollbackSDNCResponse", "")
+			verify(mockExecution).setVariable(Prefix + "rollbackSDNCReturnCode", "")
+
+			verify(mockExecution).setVariable(Prefix + "Success", false)
+			verify(mockExecution).setVariable(Prefix + "fullRollback", false)
+
+
+		}
+
+		@Test
+		//@Ignore
+		public void preProcessRequest() {
+
+			println "************ preProcessRequest ************* "
+
+			WorkflowException workflowException = new WorkflowException("DoUpdateNetworkInstanceRollback", 2500, "Received error from Network Adapter: JBWEB000065: HTTP Status 500.")
+			Map<String, String> rollbackData = new HashMap<String, String>();
+			rollbackData.put("rollbackSDNCRequest", rollbackSDNCRequest)
+			rollbackData.put("rollbackNetworkRequest", rollbackNetworkRequest)
+
+			ExecutionEntity mockExecution = setupMock()
+			// Initialize prerequisite variables
+			when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+			when(mockExecution.getVariable("prefix")).thenReturn(Prefix + "")
+			when(mockExecution.getVariable("WorkflowException")).thenReturn(workflowException)
+			when(mockExecution.getVariable("rollbackData")).thenReturn(rollbackData)
+			when(mockExecution.getVariable("sdncVersion")).thenReturn("1610")
+			when(mockExecution.getVariable("URN_mso_adapters_po_auth")).thenReturn("3141634BF7E070AA289CF2892C986C0B")
+			when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
+
+			when(mockExecution.getVariable("URN_mso_adapters_sdnc_endpoint")).thenReturn("http://localhost:28090/SDNCAdapter")
+			when(mockExecution.getVariable("URN_mso_adapters_network_rest_endpoint")).thenReturn("http://localhost:28090/networks/NetworkAdapter")
+			when(mockExecution.getVariable("URN_mso_adapters_sdnc_resource_endpoint")).thenReturn("http://localhost:28090/SDNCAdapterRpc")
+
+
+			// preProcessRequest(DelegateExecution execution)
+			DoUpdateNetworkInstanceRollback DoUpdateNetworkInstanceRollback = new DoUpdateNetworkInstanceRollback()
+			DoUpdateNetworkInstanceRollback.preProcessRequest(mockExecution)
+
+			verify(mockExecution).getVariable("isDebugLogEnabled")
+			verify(mockExecution).setVariable("prefix", Prefix)
+
+			//verify variable initialization
+			initializeVariables(mockExecution)
+
+		}
+
+
+		@Test
+		@Ignore
+		public void validateRollbackResponses_Good() {
+
+			WorkflowException workflowException = new WorkflowException("DoUpdateNetworkInstanceRollback", 2500, "AAI Update Contrail Failed.  Error 404.")
+			WorkflowException expectedWorkflowException = new WorkflowException("DoUpdateNetworkInstanceRollback", 2500, "AAI Update Contrail Failed.  Error 404. + SNDC activate rollback completed. + PO Network rollback completed. + SNDC assign rollback completed.")
+
+			println "************ validateRollbackResponses_Good() ************* "
+			ExecutionEntity mockExecution = setupMock()
+			// Initialize prerequisite variables
+			when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+			when(mockExecution.getVariable("prefix")).thenReturn(Prefix + "")
+			when(mockExecution.getVariable(Prefix + "rollbackNetworkRequest")).thenReturn("Good")
+			when(mockExecution.getVariable(Prefix + "rollbackSDNCRequest")).thenReturn("Good")
+			when(mockExecution.getVariable(Prefix + "rollbackNetworkReturnCode")).thenReturn("200")
+			when(mockExecution.getVariable(Prefix + "rollbackNetworkResponse")).thenReturn("GoodResponse")
+			when(mockExecution.getVariable(Prefix + "rollbackSDNCReturnCode")).thenReturn("200")
+			when(mockExecution.getVariable(Prefix + "rollbackSDNCResponse")).thenReturn("GoodResponse")
+			when(mockExecution.getVariable(Prefix + "WorkflowException")).thenReturn(workflowException)
+			when(mockExecution.getVariable(Prefix + "fullRollback")).thenReturn(false)
+
+			DoUpdateNetworkInstanceRollback DoUpdateNetworkInstanceRollback = new DoUpdateNetworkInstanceRollback()
+			DoUpdateNetworkInstanceRollback.validateRollbackResponses(mockExecution)
+
+			// verify set prefix = Prefix + ""
+			verify(mockExecution, atLeast(1)).setVariable("prefix", Prefix)
+			verify(mockExecution, atLeast(1)).setVariable("rolledBack", true)
+			verify(mockExecution, atLeast(1)).setVariable("wasDeleted", true)
+			verify(mockExecution).setVariable("WorkflowException", refEq(expectedWorkflowException, any(WorkflowException.class)))
+			//verify(mockExecution).setVariable("WorkflowException", expectedWorkflowException)
+		}
+
+		@Test
+		//@Ignore
+		public void validateRollbackResponses_FullRollback() {
+
+			Map<String, String> rollbackData = new HashMap<String, String>();
+			rollbackData.put("rollbackSDNCRequest", rollbackSDNCRequest)
+			rollbackData.put("rollbackNetworkRequest", rollbackNetworkRequest)
+
+			println "************ validateRollbackResponses_FullRollback() ************* "
+			ExecutionEntity mockExecution = setupMock()
+			// Initialize prerequisite variables
+			when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+			when(mockExecution.getVariable("prefix")).thenReturn(Prefix)
+			when(mockExecution.getVariable(Prefix + "rollbackNetworkRequest")).thenReturn("Good")
+			when(mockExecution.getVariable(Prefix + "rollbackSDNCRequest")).thenReturn("Good")
+			when(mockExecution.getVariable(Prefix + "rollbackNetworkReturnCode")).thenReturn("200")
+			when(mockExecution.getVariable(Prefix + "rollbackNetworkResponse")).thenReturn("GoodResponse")
+			when(mockExecution.getVariable(Prefix + "rollbackSDNCReturnCode")).thenReturn("200")
+			when(mockExecution.getVariable(Prefix + "rollbackSDNCResponse")).thenReturn("GoodResponse")
+			when(mockExecution.getVariable(Prefix + "WorkflowException")).thenReturn(null)
+			when(mockExecution.getVariable(Prefix + "fullRollback")).thenReturn(true)
+			when(mockExecution.getVariable("rollbackData")).thenReturn(rollbackData)
+
+			DoUpdateNetworkInstanceRollback DoUpdateNetworkInstanceRollback = new DoUpdateNetworkInstanceRollback()
+			DoUpdateNetworkInstanceRollback.validateRollbackResponses(mockExecution)
+
+			// verify set prefix = Prefix + ""
+			verify(mockExecution, atLeast(1)).setVariable("prefix", Prefix)
+			verify(mockExecution, atLeast(1)).setVariable("rollbackSuccessful", true)
+			verify(mockExecution, atLeast(1)).setVariable("rollbackError", false)
+
+		}
+
+
+		private ExecutionEntity setupMock() {
+
+			ProcessDefinition mockProcessDefinition = mock(ProcessDefinition.class)
+			when(mockProcessDefinition.getKey()).thenReturn("DoUpdateNetworkInstanceRollback")
+			RepositoryService mockRepositoryService = mock(RepositoryService.class)
+			when(mockRepositoryService.getProcessDefinition()).thenReturn(mockProcessDefinition)
+			when(mockRepositoryService.getProcessDefinition().getKey()).thenReturn("DoUpdateNetworkInstanceRollback")
+			when(mockRepositoryService.getProcessDefinition().getId()).thenReturn("100")
+			ProcessEngineServices mockProcessEngineServices = mock(ProcessEngineServices.class)
+			when(mockProcessEngineServices.getRepositoryService()).thenReturn(mockRepositoryService)
+
+			ExecutionEntity mockExecution = mock(ExecutionEntity.class)
+			// Initialize prerequisite variables
+
+			when(mockExecution.getId()).thenReturn("100")
+			when(mockExecution.getProcessDefinitionId()).thenReturn("DoUpdateNetworkInstanceRollback")
+			when(mockExecution.getProcessInstanceId()).thenReturn("DoUpdateNetworkInstanceRollback")
+			when(mockExecution.getProcessEngineServices()).thenReturn(mockProcessEngineServices)
+			when(mockExecution.getProcessEngineServices().getRepositoryService().getProcessDefinition(mockExecution.getProcessDefinitionId())).thenReturn(mockProcessDefinition)
+
+			return mockExecution
+		}
+
+}
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoUpdateNetworkInstanceTest.groovy b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoUpdateNetworkInstanceTest.groovy
index 08088dd..e84d031 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoUpdateNetworkInstanceTest.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/DoUpdateNetworkInstanceTest.groovy
@@ -12,7 +12,7 @@
 import org.camunda.bpm.engine.RepositoryService
 import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity
 import org.camunda.bpm.engine.repository.ProcessDefinition
-import org.camunda.bpm.engine.runtime.Execution
+import org.camunda.bpm.engine.delegate.DelegateExecution
 import org.junit.Before
 import org.junit.Rule
 import org.junit.Test
@@ -507,6 +507,29 @@
                <orchestration-status>pending-update</orchestration-status>
                <dhcp-enabled>true</dhcp-enabled>
 	  		   <subnet-name>subnetName</subnet-name>
+	  		   <ip-assignment-direction>true</ip-assignment-direction>
+			   <host-routes>
+					<host-route>
+						<host-route-id>400d286b-7e44-4514-b9b3-f70f7360ff32</host-route-id>
+						<route-prefix>172.20.1.0/24</route-prefix>
+						<next-hop>10.102.200.1</next-hop>
+	  					<next-hop-type>ip-address</next-hop-type>
+						<resource-version>1505857300987</resource-version>
+					</host-route>
+						<host-route>
+						<host-route-id>6f038013-8b15-4eb8-914b-507489fbc8ee</host-route-id>
+						<route-prefix>10.102.0.0/16</route-prefix>
+						<next-hop>10.102.200.1</next-hop>
+	  					<next-hop-type>ip-address</next-hop-type>
+						<resource-version>1505857301151</resource-version>
+					</host-route>
+					<host-route>
+						<host-route-id>8811c5f8-f1ed-4fa0-a505-e1be60396e28</host-route-id>
+						<route-prefix>192.168.2.0/25</route-prefix>
+						<next-hop>10.102.200.1</next-hop>
+						<resource-version>1505857301954</resource-version>
+					</host-route>
+			   </host-routes>
                <relationship-list/>
             </subnet>
             <subnet>
@@ -518,6 +541,15 @@
                <orchestration-status>pending-delete</orchestration-status>
                <dhcp-enabled>true</dhcp-enabled>
 	  		   <subnet-name>subnetName</subnet-name>
+	  		   <ip-assignment-direction>true</ip-assignment-direction>
+			   <host-routes>
+					<host-route>
+						<host-route-id>400d286b-7e44-4514-b9b3-f70f7360ff32</host-route-id>
+						<route-prefix>172.20.1.0/24</route-prefix>
+						<next-hop>10.102.200.1</next-hop>
+						<resource-version>1505857300987</resource-version>
+					</host-route>
+			   </host-routes>
                <relationship-list/>
             </subnet>
          </subnets>
@@ -979,6 +1011,19 @@
       <ipVersion>4</ipVersion>
       <subnetId>57e9a1ff-d14f-4071-a828-b19ae98eb2fc</subnetId>
       <subnetName>subnetName</subnetName>
+      <addrFromStart>true</addrFromStart>
+      <hostRoutes>
+         <prefix>172.20.1.0/24</prefix>
+         <nextHop>10.102.200.1</nextHop>
+      </hostRoutes>
+      <hostRoutes>
+         <prefix>10.102.0.0/16</prefix>
+         <nextHop>10.102.200.1</nextHop>
+      </hostRoutes>
+      <hostRoutes>
+         <prefix>192.168.2.0/25</prefix>
+         <nextHop>10.102.200.1</nextHop>
+      </hostRoutes>
    </subnets>
    <skipAAI>true</skipAAI>
    <backout>true</backout>
@@ -1024,6 +1069,19 @@
       <ipVersion>4</ipVersion>
       <subnetId>57e9a1ff-d14f-4071-a828-b19ae98eb2fc</subnetId>
       <subnetName>subnetName</subnetName>
+      <addrFromStart>true</addrFromStart>
+      <hostRoutes>
+         <prefix>172.20.1.0/24</prefix>
+         <nextHop>10.102.200.1</nextHop>
+      </hostRoutes>
+      <hostRoutes>
+         <prefix>10.102.0.0/16</prefix>
+         <nextHop>10.102.200.1</nextHop>
+      </hostRoutes>
+      <hostRoutes>
+         <prefix>192.168.2.0/25</prefix>
+         <nextHop>10.102.200.1</nextHop>
+      </hostRoutes>
    </subnets>
    <skipAAI>true</skipAAI>
    <backout>true</backout>
@@ -1148,7 +1206,32 @@
          <ip-version>4</ip-version>
          <orchestration-status>Active</orchestration-status>
          <dhcp-enabled>true</dhcp-enabled>
+         <resource-version>1505857300987</resource-version>
          <subnet-name>subnetName</subnet-name>
+         <ip-assignment-direction>true</ip-assignment-direction>
+         <host-routes>
+            <host-route>
+               <host-route-id>400d286b-7e44-4514-b9b3-f70f7360ff32</host-route-id>
+               <route-prefix>172.20.1.0/24</route-prefix>
+               <next-hop>10.102.200.1</next-hop>
+               <next-hop-type>ip-address</next-hop-type>
+               <resource-version>1505857300987</resource-version>
+            </host-route>
+            <host-route>
+               <host-route-id>6f038013-8b15-4eb8-914b-507489fbc8ee</host-route-id>
+               <route-prefix>10.102.0.0/16</route-prefix>
+               <next-hop>10.102.200.1</next-hop>
+               <next-hop-type>ip-address</next-hop-type>
+               <resource-version>1505857301151</resource-version>
+            </host-route>
+            <host-route>
+               <host-route-id>8811c5f8-f1ed-4fa0-a505-e1be60396e28</host-route-id>
+               <route-prefix>192.168.2.0/25</route-prefix>
+               <next-hop>10.102.200.1</next-hop>
+               <next-hop-type/>
+               <resource-version>1505857301954</resource-version>
+            </host-route>
+         </host-routes>
       </subnet>
    </subnets>
    <segmentation-assignments>
@@ -1505,13 +1588,13 @@
       <network-information>
          <network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id>
          <network-type>CONTRAIL_EXTERNAL</network-type>
-         <onap-model-information>
+         <ecomp-model-information>
             <model-invariant-uuid>invariant-uuid</model-invariant-uuid>
             <model-customization-uuid>customization-uuid</model-customization-uuid>
             <model-uuid>uuid</model-uuid>
             <model-version>version</model-version>
             <model-name>CONTRAIL_EXTERNAL</model-name>
-         </onap-model-information>
+         </ecomp-model-information>
       </network-information>
       <network-request-information>
          <network-id>8abc633a-810b-4ca5-8b3a-09511d13a2ce</network-id>
@@ -1550,7 +1633,7 @@
 
 		}
 
-		public void initializeVariables (Execution mockExecution) {
+		public void initializeVariables (DelegateExecution mockExecution) {
 
 			verify(mockExecution).setVariable(Prefix + "messageId", "")
 			verify(mockExecution).setVariable("BasicAuthHeaderValuePO", "")
@@ -1665,7 +1748,7 @@
 			when(mockExecution.getVariable("URN_mso_rollback")).thenReturn("true")
 			when(mockExecution.getVariable("disableRollback")).thenReturn("true")
 
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			DoUpdateNetworkInstance DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
 			DoUpdateNetworkInstance.preProcessRequest(mockExecution)
 
@@ -1727,7 +1810,7 @@
 			when(mockExecution.getVariable("URN_mso_adapters_network_rest_endpoint")).thenReturn("http://localhost:8090/networks/NetworkAdapter")
 			when(mockExecution.getVariable("URN_mso_adapters_sdnc_resource_endpoint")).thenReturn("http://localhost:8090/SDNCAdapterRpc")
 			
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			DoUpdateNetworkInstance DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
 			DoUpdateNetworkInstance.preProcessRequest(mockExecution)
 
@@ -1779,7 +1862,7 @@
 			when(mockExecution.getVariable("URN_mso_rollback")).thenReturn("true")
 			when(mockExecution.getVariable("disableRollback")).thenReturn("true")
 
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			DoUpdateNetworkInstance DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
 			try {
 				DoUpdateNetworkInstance.preProcessRequest(mockExecution)
@@ -1835,7 +1918,7 @@
 			when(mockExecution.getVariable("URN_mso_rollback")).thenReturn("true")
 			when(mockExecution.getVariable("disableRollback")).thenReturn("true")
 
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			DoUpdateNetworkInstance DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
 			try {
 				DoUpdateNetworkInstance.preProcessRequest(mockExecution)
@@ -1884,7 +1967,7 @@
 			when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
 			when(mockExecution.getVariable(Prefix + "rollbackEnabled")).thenReturn("true")
 
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			DoUpdateNetworkInstance DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
 			DoUpdateNetworkInstance.prepareUpdateNetworkRequest(mockExecution)
 
@@ -1921,7 +2004,7 @@
 			when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
 			when(mockExecution.getVariable(Prefix + "rollbackEnabled")).thenReturn("true")
 
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			DoUpdateNetworkInstance DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
 			DoUpdateNetworkInstance.prepareUpdateNetworkRequest(mockExecution)
 
@@ -1954,7 +2037,7 @@
 			when(mockExecution.getVariable("GENGSI_siResourceLink")).thenReturn("https://aai-int1.test.com:8443/aai/v8/business/customers/customer/MSO_1610_dev/service-subscriptions/service-subscription/MSO-dev-service-type/service-instances/service-instance/6d4eb22a-82f1-4257-9f80-4176262cfe69/")
 
 
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			DoUpdateNetworkInstance DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
 			DoUpdateNetworkInstance.prepareSDNCRequest(mockExecution)
 
@@ -1984,7 +2067,7 @@
 			when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
 			when(mockExecution.getVariable("GENGSI_siResourceLink")).thenReturn("https://aai-int1.test.com:8443/aai/v8/business/customers/customer/MSO_1610_dev/service-subscriptions/service-subscription/MSO-dev-service-type/service-instances/service-instance/6d4eb22a-82f1-4257-9f80-4176262cfe69/")
 
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			DoUpdateNetworkInstance DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
 			DoUpdateNetworkInstance.prepareSDNCRollbackRequest(mockExecution)
 
@@ -2001,7 +2084,7 @@
 			println "************ callRESTQueryAAINetworkId ************* "
 
 			WireMock.reset();
-			MockGetNetworkByIdWithDepth("49c86598-f766-46f8-84f8-8d1c1b10f9b4", "UpdateNetworkV2/updateNetwork_queryNetworkId_AAIResponse_Success.xml", "1");
+			MockGetNetworkByIdWithDepth("49c86598-f766-46f8-84f8-8d1c1b10f9b4", "UpdateNetworkV2/updateNetwork_queryNetworkId_AAIResponse_Success.xml", "all");
 
 			ExecutionEntity mockExecution = setupMock()
 			when(mockExecution.getVariable(Prefix + "networkRequest")).thenReturn(expectedNetworkRequest)
@@ -2013,7 +2096,7 @@
 			when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
 			when(mockExecution.getVariable("URN_aai_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
 			
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			DoUpdateNetworkInstance DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
 			DoUpdateNetworkInstance.callRESTQueryAAINetworkId(mockExecution)
 
@@ -2022,7 +2105,7 @@
 			//preDebugger.printInvocations(mockExecution)
 
 			verify(mockExecution).setVariable("prefix", Prefix + "")
-			verify(mockExecution).setVariable(Prefix + "queryIdAAIRequest", "http://localhost:8090/aai/v9/network/l3-networks/l3-network/49c86598-f766-46f8-84f8-8d1c1b10f9b4"+"?depth=1")
+			verify(mockExecution).setVariable(Prefix + "queryIdAAIRequest", "http://localhost:8090/aai/v9/network/l3-networks/l3-network/49c86598-f766-46f8-84f8-8d1c1b10f9b4"+"?depth=all")
 			verify(mockExecution).setVariable(Prefix + "aaiIdReturnCode", "200")
 
 		}
@@ -2047,7 +2130,7 @@
 			when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
 			when(mockExecution.getVariable("URN_aai_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
 			
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			DoUpdateNetworkInstance DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
 			DoUpdateNetworkInstance.callRESTQueryAAICloudRegion(mockExecution)
 
@@ -2082,7 +2165,7 @@
 			when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
 			when(mockExecution.getVariable("URN_aai_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
 
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			DoUpdateNetworkInstance DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
 			DoUpdateNetworkInstance.callRESTQueryAAICloudRegion(mockExecution)
 
@@ -2117,7 +2200,7 @@
 			when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
 			when(mockExecution.getVariable("URN_aai_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
 
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			DoUpdateNetworkInstance DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
 			DoUpdateNetworkInstance.callRESTQueryAAICloudRegion(mockExecution)
 
@@ -2155,7 +2238,7 @@
 			when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
 			when(mockExecution.getVariable("URN_aai_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
 
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			DoUpdateNetworkInstance DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
 			DoUpdateNetworkInstance.callRESTQueryAAINetworkVpnBinding(mockExecution)
 
@@ -2174,6 +2257,41 @@
 
 		@Test
 		//@Ignore
+		public void callRESTQueryAAINetworkVpnBindingList_200() {
+
+			println "************ callRESTQueryAAINetworkVpnBinding_200 ************* "
+
+			WireMock.reset();
+			MockGetNetworkVpnBinding("UpdateNetworkV2/updateNetwork_queryVpnBindingList_AAIResponse_Success.xml", "85f015d0-2e32-4c30-96d2-87a1a27f8017");
+			MockGetNetworkVpnBinding("UpdateNetworkV2/updateNetwork_queryVpnBindingList_AAIResponse_Success.xml", "c980a6ef-3b88-49f0-9751-dbad8608d0a6");
+
+			ExecutionEntity mockExecution = setupMock()
+			when(mockExecution.getVariable(Prefix + "requeryIdAAIResponse")).thenReturn(queryIdAIIResponse) // v6
+			when(mockExecution.getVariable(Prefix + "messageId")).thenReturn("e8ebf6a0-f8ea-4dc0-8b99-fe98a87722d6")
+			when(mockExecution.getVariable("URN_aai_endpoint")).thenReturn("http://localhost:8090")
+			when(mockExecution.getVariable("URN_mso_workflow_global_default_aai_version")).thenReturn("8")
+			when(mockExecution.getVariable("URN_mso_workflow_default_aai_v8_vpn_binding_uri")).thenReturn("/aai/v8/network/vpn-bindings/vpn-binding")
+			when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
+			when(mockExecution.getVariable("URN_mso_workflow_global_default_aai_namespace")).thenReturn('http://org.openecomp.aai.inventory/')
+			when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
+			when(mockExecution.getVariable("URN_aai_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
+
+			// preProcessRequest(DelegateExecution execution)
+			DoUpdateNetworkInstance DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
+			DoUpdateNetworkInstance.callRESTQueryAAINetworkVpnBinding(mockExecution)
+
+			verify(mockExecution).setVariable("prefix", Prefix + "")
+			verify(mockExecution).setVariable(Prefix + "vpnCount", 2)
+			verify(mockExecution).setVariable(Prefix + "vpnBindings", ['/aai/v8/network/vpn-bindings/vpn-binding/85f015d0-2e32-4c30-96d2-87a1a27f8017/', '/aai/v8/network/vpn-bindings/vpn-binding/c980a6ef-3b88-49f0-9751-dbad8608d0a6/'])
+			// the last vpnBinding value is saved.
+			verify(mockExecution).setVariable(Prefix + "queryVpnBindingAAIRequest", "http://localhost:8090/aai/v8/network/vpn-bindings/vpn-binding/85f015d0-2e32-4c30-96d2-87a1a27f8017?depth=all")
+			verify(mockExecution, atLeast(2)).setVariable(Prefix + "aaiQqueryVpnBindingReturnCode", "200")
+
+		}
+
+		
+		@Test
+		//@Ignore
 		public void callRESTQueryAAINetworkVpnBinding_TestScenario01_200() {
 
 			println "************ callRESTQueryAAINetworkVpnBinding_200 ************* "
@@ -2192,7 +2310,7 @@
 			when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
 			when(mockExecution.getVariable("URN_aai_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
 
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			DoUpdateNetworkInstance DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
 			DoUpdateNetworkInstance.callRESTQueryAAINetworkVpnBinding(mockExecution)
 
@@ -2230,7 +2348,7 @@
 			when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
 			when(mockExecution.getVariable("URN_aai_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
 
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			DoUpdateNetworkInstance DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
 			DoUpdateNetworkInstance.callRESTQueryAAINetworkVpnBinding(mockExecution)
 
@@ -2269,7 +2387,7 @@
 			when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
 			when(mockExecution.getVariable("URN_aai_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
 
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			DoUpdateNetworkInstance DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
 			DoUpdateNetworkInstance.callRESTQueryAAINetworkVpnBinding(mockExecution)
 
@@ -2305,7 +2423,7 @@
 			when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
 			when(mockExecution.getVariable("URN_aai_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
 
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			DoUpdateNetworkInstance DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
 			DoUpdateNetworkInstance.callRESTQueryAAINetworkTableRef(mockExecution)
 
@@ -2342,7 +2460,7 @@
 			when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
 			when(mockExecution.getVariable("URN_aai_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
 
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			DoUpdateNetworkInstance DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
 			DoUpdateNetworkInstance.callRESTQueryAAINetworkPolicy(mockExecution)
 
@@ -2367,7 +2485,7 @@
 			println "************ callRESTReQueryAAINetworkId ************* "
 
 			WireMock.reset();
-			MockGetNetworkByIdWithDepth("49c86598-f766-46f8-84f8-8d1c1b10f9b4", "UpdateNetworkV2/updateNetwork_queryNetworkId_AAIResponse_Success.xml", "1");
+			MockGetNetworkByIdWithDepth("49c86598-f766-46f8-84f8-8d1c1b10f9b4", "UpdateNetworkV2/updateNetwork_queryNetworkId_AAIResponse_Success.xml", "all");
 
 			ExecutionEntity mockExecution = setupMock()
 			when(mockExecution.getVariable(Prefix + "networkRequest")).thenReturn(expectedNetworkRequest)
@@ -2380,7 +2498,7 @@
 			when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
 			when(mockExecution.getVariable("URN_aai_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
 
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			DoUpdateNetworkInstance DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
 			DoUpdateNetworkInstance.callRESTReQueryAAINetworkId(mockExecution)
 
@@ -2389,7 +2507,7 @@
 			//preDebugger.printInvocations(mockExecution)
 
 			verify(mockExecution).setVariable("prefix", Prefix + "")
-			verify(mockExecution).setVariable(Prefix + "requeryIdAAIRequest", "http://localhost:8090/aai/v9/network/l3-networks/l3-network/49c86598-f766-46f8-84f8-8d1c1b10f9b4"+"?depth=1")
+			verify(mockExecution).setVariable(Prefix + "requeryIdAAIRequest", "http://localhost:8090/aai/v9/network/l3-networks/l3-network/49c86598-f766-46f8-84f8-8d1c1b10f9b4"+"?depth=all")
 			verify(mockExecution).setVariable(Prefix + "aaiRequeryIdReturnCode", "200")
 
 		}
@@ -2402,7 +2520,7 @@
 			println "************ callRESTUpdateContrailAAINetwork ************* "
 
 			WireMock.reset();
-			MockPutNetworkIdWithDepth("UpdateNetworkV2/updateNetwork_updateContrail_AAIResponse_Success.xml", "49c86598-f766-46f8-84f8-8d1c1b10f9b4", "1");
+			MockPutNetworkIdWithDepth("UpdateNetworkV2/updateNetwork_updateContrail_AAIResponse_Success.xml", "49c86598-f766-46f8-84f8-8d1c1b10f9b4", "all");
 			
 			ExecutionEntity mockExecution = setupMock()
 			when(mockExecution.getVariable(Prefix + "networkRequest")).thenReturn(expectedNetworkRequest)
@@ -2417,7 +2535,7 @@
 			when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
 			when(mockExecution.getVariable("URN_aai_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
 
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			DoUpdateNetworkInstance DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
 			DoUpdateNetworkInstance.callRESTUpdateContrailAAINetwork(mockExecution)
 
@@ -2426,7 +2544,7 @@
 			//preDebugger.printInvocations(mockExecution)
 
 			verify(mockExecution).setVariable("prefix", Prefix + "")
-			verify(mockExecution).setVariable(Prefix + "updateContrailAAIUrlRequest", "http://localhost:8090/aai/v9/network/l3-networks/l3-network/49c86598-f766-46f8-84f8-8d1c1b10f9b4"+"?depth=1")
+			verify(mockExecution).setVariable(Prefix + "updateContrailAAIUrlRequest", "http://localhost:8090/aai/v9/network/l3-networks/l3-network/49c86598-f766-46f8-84f8-8d1c1b10f9b4"+"?depth=all")
 			verify(mockExecution).setVariable(Prefix + "updateContrailAAIPayloadRequest", updateContrailAAIPayloadRequest)
 			verify(mockExecution).setVariable(Prefix + "aaiUpdateContrailReturnCode", "200")
 			//verify(mockExecution).setVariable(Prefix + "updateContrailAAIResponse", updateContrailAAIResponse)
@@ -2564,7 +2682,7 @@
 			when(mockExecution.getVariable(Prefix + "rollbackNetworkRequest")).thenReturn(rollbackNetworkRequest)
 			when(mockExecution.getVariable("WorkflowException")).thenReturn(workflowException)
 
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			DoUpdateNetworkInstance DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
 			DoUpdateNetworkInstance.prepareRollbackData(mockExecution)
 
@@ -2588,7 +2706,7 @@
 			when(mockExecution.getVariable(Prefix + "networkRequest")).thenReturn(expectedNetworkRequest)
 			when(mockExecution.getVariable("mso-request-id")).thenReturn("requestId")
 
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			DoUpdateNetworkInstance DoUpdateNetworkInstance = new DoUpdateNetworkInstance()
 			DoUpdateNetworkInstance.postProcessResponse(mockExecution)
 
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/UpdateNetworkInstanceTest.groovy b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/UpdateNetworkInstanceTest.groovy
index e987d59..4c77a04 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/UpdateNetworkInstanceTest.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/infrastructure/scripts/UpdateNetworkInstanceTest.groovy
@@ -6,7 +6,7 @@
 import org.camunda.bpm.engine.RepositoryService
 import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity
 import org.camunda.bpm.engine.repository.ProcessDefinition
-import org.camunda.bpm.engine.runtime.Execution
+import org.camunda.bpm.engine.delegate.DelegateExecution
 import org.junit.Before
 import org.junit.Ignore
 import org.junit.Rule
@@ -125,7 +125,7 @@
 
 		}
 
-		public void initializeVariables(Execution mockExecution) {
+		public void initializeVariables(DelegateExecution mockExecution) {
 
 			verify(mockExecution).setVariable(Prefix + "source", "")
 			verify(mockExecution).setVariable(Prefix + "Success", false)
@@ -148,7 +148,7 @@
 			when(mockExecution.getVariable("URN_mso_adapters_db_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
 			when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
 			
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			UpdateNetworkInstance UpdateNetworkInstance = new UpdateNetworkInstance()
 			UpdateNetworkInstance.preProcessRequest(mockExecution)
 
@@ -171,7 +171,7 @@
 			// Initialize prerequisite variables
 			when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
 
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			UpdateNetworkInstance UpdateNetworkInstance = new UpdateNetworkInstance()
 			UpdateNetworkInstance.getNetworkModelInfo(mockExecution)
 
@@ -192,7 +192,7 @@
 			when(mockExecution.getVariable("mso-request-id")).thenReturn("e8ebf6a0-f8ea-4dc0-8b99-fe98a87722d6")
 			when(mockExecution.getVariable("serviceInstanceId")).thenReturn("f70e927b-6087-4974-9ef8-c5e4d5847ca4")
 
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			UpdateNetworkInstance UpdateNetworkInstance = new UpdateNetworkInstance()
 			UpdateNetworkInstance.sendSyncResponse(mockExecution)
 
@@ -241,7 +241,7 @@
 			when(mockExecution.getVariable("URN_mso_adapters_db_auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
 			when(mockExecution.getVariable("URN_mso_msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
 			
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			UpdateNetworkInstance UpdateNetworkInstance = new UpdateNetworkInstance()
 			UpdateNetworkInstance.prepareDBRequestError(mockExecution)
 
@@ -262,7 +262,7 @@
 			when(mockExecution.getVariable("mso-request-id")).thenReturn("88f65519-9a38-4c4b-8445-9eb4a5a5af56")
 			when(mockExecution.getVariable(Prefix + "dbReturnCode")).thenReturn("200")
 
-			// postProcessResponse(Execution execution)
+			// postProcessResponse(DelegateExecution execution)
 			UpdateNetworkInstance UpdateNetworkInstance = new UpdateNetworkInstance()
 			UpdateNetworkInstance.prepareCompletion(mockExecution)
 
@@ -292,7 +292,7 @@
 			//when(mockExecution.getVariable("WorkflowException")).thenReturn(sndcWorkflowException)
 			when(mockExecution.getVariable("WorkflowException")).thenReturn(sndcWorkflowException)
 
-			// buildErrorResponse(Execution execution)
+			// buildErrorResponse(DelegateExecution execution)
 			UpdateNetworkInstance UpdateNetworkInstance = new UpdateNetworkInstance()
 			UpdateNetworkInstance.buildErrorResponse(mockExecution)
 
@@ -313,7 +313,7 @@
 			when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
 			when(mockExecution.getVariable("CMSO_ResponseCode")).thenReturn("200")
 
-			// postProcessResponse(Execution execution)
+			// postProcessResponse(DelegateExecution execution)
 			UpdateNetworkInstance UpdateNetworkInstance = new UpdateNetworkInstance()
 			UpdateNetworkInstance.postProcessResponse(mockExecution)
 
@@ -333,7 +333,7 @@
 			// Initialize prerequisite variables
 			when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
 
-			// preProcessRequest(Execution execution)
+			// preProcessRequest(DelegateExecution execution)
 			UpdateNetworkInstance UpdateNetworkInstance = new UpdateNetworkInstance()
 			UpdateNetworkInstance.processRollbackData(mockExecution)
 
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/vcpe/scripts/CreateVcpeResCustServiceTest.groovy b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/vcpe/scripts/CreateVcpeResCustServiceTest.groovy
index 7a494db..2c9d591 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/vcpe/scripts/CreateVcpeResCustServiceTest.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/vcpe/scripts/CreateVcpeResCustServiceTest.groovy
@@ -24,7 +24,6 @@
 import org.camunda.bpm.engine.RepositoryService
 import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity
 import org.camunda.bpm.engine.repository.ProcessDefinition
-import org.camunda.bpm.engine.runtime.Execution
 import org.junit.Before
 import org.junit.BeforeClass
 import org.junit.Rule
@@ -84,7 +83,7 @@
 	// ***** preProcessRequest *****
 			
 	@Test
-	// @Ignore  
+	@Ignore // 1802 merge
 	public void preProcessRequest() {
 		ExecutionEntity mex = setupMock()
 		def map = setupMap(mex)
@@ -133,7 +132,7 @@
 	}
 			
 	@Test
-	// @Ignore  
+	@Ignore // 1802 merge
 	public void preProcessRequest_EmptyParts() {
 		ExecutionEntity mex = setupMock()
 		def map = setupMap(mex)
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DeleteVcpeResCustServiceTest.groovy b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DeleteVcpeResCustServiceTest.groovy
index af56f34..fdc470f 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DeleteVcpeResCustServiceTest.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DeleteVcpeResCustServiceTest.groovy
@@ -24,7 +24,6 @@
 import org.camunda.bpm.engine.RepositoryService
 import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity
 import org.camunda.bpm.engine.repository.ProcessDefinition
-import org.camunda.bpm.engine.runtime.Execution
 import org.junit.Before
 import org.junit.BeforeClass
 import org.junit.Rule
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DoCreateAllottedResourceBRGRollbackTest.groovy b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DoCreateAllottedResourceBRGRollbackTest.groovy
index bbe9d52..71c0f8b 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DoCreateAllottedResourceBRGRollbackTest.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DoCreateAllottedResourceBRGRollbackTest.groovy
@@ -24,7 +24,6 @@
 import org.camunda.bpm.engine.RepositoryService
 import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity
 import org.camunda.bpm.engine.repository.ProcessDefinition
-import org.camunda.bpm.engine.runtime.Execution
 import org.junit.Before
 import org.junit.BeforeClass
 import org.junit.Rule
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DoCreateAllottedResourceBRGTest.groovy b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DoCreateAllottedResourceBRGTest.groovy
index acc6970..c8afb22 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DoCreateAllottedResourceBRGTest.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DoCreateAllottedResourceBRGTest.groovy
@@ -24,7 +24,6 @@
 import org.camunda.bpm.engine.RepositoryService
 import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity
 import org.camunda.bpm.engine.repository.ProcessDefinition
-import org.camunda.bpm.engine.runtime.Execution
 import org.junit.Before
 import org.junit.BeforeClass
 import org.junit.Rule
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DoCreateAllottedResourceTXCRollbackTest.groovy b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DoCreateAllottedResourceTXCRollbackTest.groovy
index 02352cf..9b4283b 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DoCreateAllottedResourceTXCRollbackTest.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DoCreateAllottedResourceTXCRollbackTest.groovy
@@ -24,7 +24,6 @@
 import org.camunda.bpm.engine.RepositoryService
 import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity
 import org.camunda.bpm.engine.repository.ProcessDefinition
-import org.camunda.bpm.engine.runtime.Execution
 import org.junit.Before
 import org.junit.BeforeClass
 import org.junit.Rule
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DoCreateAllottedResourceTXCTest.groovy b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DoCreateAllottedResourceTXCTest.groovy
index 2de6e44..e1fc143 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DoCreateAllottedResourceTXCTest.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DoCreateAllottedResourceTXCTest.groovy
@@ -24,7 +24,6 @@
 import org.camunda.bpm.engine.RepositoryService
 import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity
 import org.camunda.bpm.engine.repository.ProcessDefinition
-import org.camunda.bpm.engine.runtime.Execution
 import org.junit.Before
 import org.junit.BeforeClass
 import org.junit.Rule
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DoDeleteAllottedResourceBRGTest.groovy b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DoDeleteAllottedResourceBRGTest.groovy
index 4e62a56..14c382e 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DoDeleteAllottedResourceBRGTest.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DoDeleteAllottedResourceBRGTest.groovy
@@ -24,7 +24,6 @@
 import org.camunda.bpm.engine.RepositoryService
 import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity
 import org.camunda.bpm.engine.repository.ProcessDefinition
-import org.camunda.bpm.engine.runtime.Execution
 import org.junit.Before
 import org.junit.BeforeClass
 import org.junit.Rule
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DoDeleteAllottedResourceTXCTest.groovy b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DoDeleteAllottedResourceTXCTest.groovy
index 33273c5..115f298 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DoDeleteAllottedResourceTXCTest.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/vcpe/scripts/DoDeleteAllottedResourceTXCTest.groovy
@@ -24,7 +24,6 @@
 import org.camunda.bpm.engine.RepositoryService
 import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity
 import org.camunda.bpm.engine.repository.ProcessDefinition
-import org.camunda.bpm.engine.runtime.Execution
 import org.junit.Before
 import org.junit.BeforeClass
 import org.junit.Rule
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/vcpe/scripts/GroovyTestBase.groovy b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/vcpe/scripts/GroovyTestBase.groovy
index 01ca53b..ef67a75 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/vcpe/scripts/GroovyTestBase.groovy
+++ b/bpmn/MSOInfrastructureBPMN/src/test/groovy/org/openecomp/mso/bpmn/vcpe/scripts/GroovyTestBase.groovy
@@ -24,7 +24,6 @@
 import org.camunda.bpm.engine.RepositoryService
 import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity
 import org.camunda.bpm.engine.repository.ProcessDefinition
-import org.camunda.bpm.engine.runtime.Execution
 import org.junit.Before
 import org.junit.BeforeClass
 import org.junit.Rule
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/CreateGenericALaCarteServiceInstanceTest.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/CreateGenericALaCarteServiceInstanceTest.java
index 5496645..07fa4eb 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/CreateGenericALaCarteServiceInstanceTest.java
+++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/CreateGenericALaCarteServiceInstanceTest.java
@@ -29,6 +29,7 @@
 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockNodeQueryServiceInstanceById;
 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockNodeQueryServiceInstanceByName;
 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPutServiceInstance;
+import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.MockGetServiceResourcesCatalogData;
 import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.mockUpdateRequestDB;
 import static org.openecomp.mso.bpmn.mock.StubResponseSDNCAdapter.mockSDNCAdapter;
 
@@ -38,6 +39,7 @@
 import java.util.UUID;
 
 import org.camunda.bpm.engine.test.Deployment;
+import org.junit.Ignore;
 import org.junit.Test;
 import org.openecomp.mso.bpmn.common.BPMNUtil;
 import org.openecomp.mso.bpmn.common.WorkflowTest;
@@ -62,8 +64,10 @@
 	 */
 	//@Ignore // File not found - unable to run the test.  Also, Stubs need updating..
 	@Test
+	@Ignore // 1802 merge
 	@Deployment(resources = {
 			"process/CreateGenericALaCarteServiceInstance.bpmn",
+			"subprocess/BuildingBlock/DecomposeService.bpmn",
 			"subprocess/DoCreateServiceInstance.bpmn",
 			"subprocess/DoCreateServiceInstanceRollback.bpmn",
 			"subprocess/SDNCAdapterV1.bpmn",
@@ -84,7 +88,9 @@
 		//SDNC
 		mockSDNCAdapter(200);
 		//DB
+		MockGetServiceResourcesCatalogData("uuid-miu-svc-011-abcdef","2","/VIPR/getCatalogServiceResourcesData.json");
 		mockUpdateRequestDB(200, "DBUpdateResponse.xml");
+		MockGetServiceResourcesCatalogData("uuid-miu-svc-011-abcdef","InfrastructureFlows/DoCreateServiceInstance_request.json");
 
 
 		String businessKey = UUID.randomUUID().toString();
@@ -118,11 +124,13 @@
 		variables.put("bpmnRequest", getRequest());
 		variables.put("mso-request-id", "RaaCSIRequestId-1");
 		variables.put("serviceInstanceId","RaaTest-1-id");
+		variables.put("sdncVersion", "1802");
+		variables.put("serviceInstanceName", "some-junk-name");
 		return variables;
 	}
 
 	public String getRequest() {
-		String request = "{\"requestDetails\":{\"modelInfo\":{\"modelType\":\"service\",\"modelInvariantUuid\":\"uuid-miu-svc-011-abcdef\",\"modelVersionUuid\":\"ASDC_TOSCA_UUID\",\"modelName\":\"SIModelName1\",\"modelVersion\":\"2\"},\"subscriberInfo\":{\"globalSubscriberId\":\"MCBH-1610\",\"subscriberName\":\"Kaneohe\"},\"requestInfo\":{\"instanceName\":\"RAATest-1\",\"source\":\"VID\",\"suppressRollback\":\"true\",\"productFamilyId\":\"a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb\"},\"cloudConfiguration\":{\"lcpCloudRegionId\":\"mdt1\",\"tenantId\":\"8b1df54faa3b49078e3416e21370a3ba\"},\"requestParameters\":{\"subscriptionServiceType\":\"viprsvc\",\"aLaCarte\":\"false\",\"userParams\":[]}}}";
+		String request = "{\"requestDetails\":{\"project\": {\"projectName\": \"projectName\"},\"owningEntity\": {\"owningEntityId\": \"randomStrings\",\"owningEntityName\": \"randomStrings\"},\"modelInfo\":{\"modelType\":\"service\",\"modelInvariantUuid\":\"uuid-miu-svc-011-abcdef\",\"modelVersionUuid\":\"ASDC_TOSCA_UUID\",\"modelName\":\"SIModelName1\",\"modelVersion\":\"2\"},\"subscriberInfo\":{\"globalSubscriberId\":\"MCBH-1610\",\"subscriberName\":\"Kaneohe\"},\"requestInfo\":{\"instanceName\":\"RAATest-1\",\"source\":\"VID\",\"suppressRollback\":\"true\",\"productFamilyId\":\"a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb\"},\"cloudConfiguration\":{\"lcpCloudRegionId\":\"mdt1\",\"tenantId\":\"8b1df54faa3b49078e3416e21370a3ba\"},\"requestParameters\":{\"subscriptionServiceType\":\"viprsvc\",\"aLaCarte\":\"false\",\"userParams\":[]}}}";
 		return request;
 	}
 
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/CreateNetworkInstanceTest.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/CreateNetworkInstanceTest.java
index b95ebb5..d31f6e7 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/CreateNetworkInstanceTest.java
+++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/CreateNetworkInstanceTest.java
@@ -88,13 +88,13 @@
 		MockNetworkAdapterPost("CreateNetworkV2/createNetworkResponse_Success.xml", "createNetworkRequest");
 		MockGetNetworkByName("MNS-25180-L-01-dmz_direct_net_1", "CreateNetworkV2/createNetwork_queryName_AAIResponse_Success.xml");
 		MockGetNetworkCloudRegion("CreateNetworkV2/cloudRegion25_AAIResponse_Success.xml", "RDM2WAGPLCP");
-		MockGetNetworkByIdWithDepth("49c86598-f766-46f8-84f8-8d1c1b10f9b4", "CreateNetworkV2/createNetwork_queryNetworkId_AAIResponse_Success.xml", "1");
+		MockGetNetworkByIdWithDepth("49c86598-f766-46f8-84f8-8d1c1b10f9b4", "CreateNetworkV2/createNetwork_queryNetworkId_AAIResponse_Success.xml", "all");
 		MockGetNetworkVpnBinding("CreateNetworkV2/createNetwork_queryVpnBinding_AAIResponse_Success.xml", "85f015d0-2e32-4c30-96d2-87a1a27f8017");
 		MockGetNetworkVpnBinding("CreateNetworkV2/createNetwork_queryVpnBinding_AAIResponse_Success.xml", "c980a6ef-3b88-49f0-9751-dbad8608d0a6");
 		MockGetNetworkPolicy("CreateNetworkV2/createNetwork_queryNetworkPolicy_AAIResponse_Success.xml", "cee6d136-e378-4678-a024-2cd15f0ee0cg");
 		MockGetNetworkTableReference("CreateNetworkV2/createNetwork_queryNetworkTableRef1_AAIResponse_Success.xml", "refFQDN1");
 		MockGetNetworkTableReference("CreateNetworkV2/createNetwork_queryNetworkTableRef2_AAIResponse_Success.xml", "refFQDN2");
-		MockPutNetworkIdWithDepth("CreateNetworkV2/createNetwork_updateContrail_AAIResponse_Success.xml", "49c86598-f766-46f8-84f8-8d1c1b10f9b4", "1");
+		MockPutNetworkIdWithDepth("CreateNetworkV2/createNetwork_updateContrail_AAIResponse_Success.xml", "49c86598-f766-46f8-84f8-8d1c1b10f9b4", "all");
 		MockUpdateRequestDB("DBUpdateResponse.xml");
 		//MockNodeQueryServiceInstanceById("f70e927b-6087-4974-9ef8-c5e4d5847ca4", "CreateNetworkV2/createNetwork_queryInstance_Success.xml", "v8");
 		MockNodeQueryServiceInstanceById("f70e927b-6087-4974-9ef8-c5e4d5847ca4", "CreateNetworkV2/createNetwork_queryInstance_Success.xml");
@@ -142,13 +142,13 @@
 		MockNetworkAdapterPost("CreateNetworkV2/createNetworkResponse_Success.xml", "createNetworkRequest");
 		MockGetNetworkByName_404("CreateNetworkV2/createNetwork_queryName_AAIResponse_Success.xml", "myOwn_Network");
 		MockGetNetworkCloudRegion("CreateNetworkV2/cloudRegion25_AAIResponse_Success.xml", "RDM2WAGPLCP");
-		MockGetNetworkByIdWithDepth("49c86598-f766-46f8-84f8-8d1c1b10f9b4", "CreateNetworkV2/createNetwork_queryNetworkId_AAIResponse_Success.xml", "1");
+		MockGetNetworkByIdWithDepth("49c86598-f766-46f8-84f8-8d1c1b10f9b4", "CreateNetworkV2/createNetwork_queryNetworkId_AAIResponse_Success.xml", "all");
 		MockGetNetworkVpnBinding("CreateNetworkV2/createNetwork_queryVpnBinding_AAIResponse_Success.xml", "85f015d0-2e32-4c30-96d2-87a1a27f8017");
 		MockGetNetworkVpnBinding("CreateNetworkV2/createNetwork_queryVpnBinding_AAIResponse_Success.xml", "c980a6ef-3b88-49f0-9751-dbad8608d0a6");
 		MockGetNetworkPolicy("CreateNetworkV2/createNetwork_queryNetworkPolicy_AAIResponse_Success.xml", "cee6d136-e378-4678-a024-2cd15f0ee0cg");
 		MockGetNetworkTableReference("CreateNetworkV2/createNetwork_queryNetworkTableRef1_AAIResponse_Success.xml", "refFQDN1");
 		MockGetNetworkTableReference("CreateNetworkV2/createNetwork_queryNetworkTableRef2_AAIResponse_Success.xml", "refFQDN2");
-		MockPutNetworkIdWithDepth("CreateNetworkV2/createNetwork_updateContrail_AAIResponse_Success.xml", "49c86598-f766-46f8-84f8-8d1c1b10f9b4", "1");
+		MockPutNetworkIdWithDepth("CreateNetworkV2/createNetwork_updateContrail_AAIResponse_Success.xml", "49c86598-f766-46f8-84f8-8d1c1b10f9b4", "all");
 		MockUpdateRequestDB("DBUpdateResponse.xml");
 		//MockNodeQueryServiceInstanceById("f70e927b-6087-4974-9ef8-c5e4d5847ca4", "CreateNetworkV2/createNetwork_queryInstance_Success.xml", "v8");
 		MockNodeQueryServiceInstanceById("f70e927b-6087-4974-9ef8-c5e4d5847ca4", "CreateNetworkV2/createNetwork_queryInstance_Success.xml");
@@ -378,13 +378,13 @@
 		MockNetworkAdapterPost("CreateNetworkV2/createNetworkResponse_Success.xml", "createNetworkRequest");
 		MockGetNetworkByName("MNS-25180-L-01-dmz_direct_net_1", "CreateNetworkV2/createNetwork_queryName_AAIResponse_Success.xml");
 		MockGetNetworkCloudRegion("CreateNetworkV2/cloudRegion25_AAIResponse_Success.xml", "RDM2WAGPLCP");
-		MockGetNetworkByIdWithDepth("49c86598-f766-46f8-84f8-8d1c1b10f9b4", "CreateNetworkV2/createNetwork_queryNetworkId_AAIResponse_Success.xml", "1");
+		MockGetNetworkByIdWithDepth("49c86598-f766-46f8-84f8-8d1c1b10f9b4", "CreateNetworkV2/createNetwork_queryNetworkId_AAIResponse_Success.xml", "all");
 		MockGetNetworkVpnBinding("CreateNetworkV2/createNetwork_queryVpnBinding_AAIResponse_Success.xml", "85f015d0-2e32-4c30-96d2-87a1a27f8017");
 		MockGetNetworkVpnBinding("CreateNetworkV2/createNetwork_queryVpnBinding_AAIResponse_Success.xml", "c980a6ef-3b88-49f0-9751-dbad8608d0a6");
 		MockGetNetworkPolicy("CreateNetworkV2/createNetwork_queryNetworkPolicy_AAIResponse_Success.xml", "cee6d136-e378-4678-a024-2cd15f0ee0cg");
 		MockGetNetworkTableReference("CreateNetworkV2/createNetwork_queryNetworkTableRef1_AAIResponse_Success.xml", "refFQDN1");
 		MockGetNetworkTableReference("CreateNetworkV2/createNetwork_queryNetworkTableRef2_AAIResponse_Success.xml", "refFQDN2");
-		MockPutNetworkIdWithDepth("CreateNetworkV2/createNetwork_updateContrail_AAIResponse_Success.xml", "49c86598-f766-46f8-84f8-8d1c1b10f9b4", "1");
+		MockPutNetworkIdWithDepth("CreateNetworkV2/createNetwork_updateContrail_AAIResponse_Success.xml", "49c86598-f766-46f8-84f8-8d1c1b10f9b4", "all");
 		MockUpdateRequestDB("DBUpdateResponse.xml");
 		//MockNodeQueryServiceInstanceById("f70e927b-6087-4974-9ef8-c5e4d5847ca4", "CreateNetworkV2/createNetwork_queryInstance_Success.xml", "v8");
 		MockNodeQueryServiceInstanceById("f70e927b-6087-4974-9ef8-c5e4d5847ca4", "CreateNetworkV2/createNetwork_queryInstance_Success.xml");
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/CreateVfModuleInfraTest.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/CreateVfModuleInfraTest.java
index a28e95a..390882e 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/CreateVfModuleInfraTest.java
+++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/CreateVfModuleInfraTest.java
@@ -286,6 +286,63 @@
 				return variables;
 				
 			}
+			/**
+			 * Sunny day VID scenario with no preloads.
+			 * 
+			 * @throws Exception
+			 */
+			@Test	
+			@Deployment(resources = {
+					"process/CreateVfModuleInfra.bpmn",
+					"subprocess/DoCreateVfModule.bpmn",
+					"subprocess/GenericGetVnf.bpmn",
+					"subprocess/SDNCAdapterV1.bpmn",
+					"subprocess/VnfAdapterRestV1.bpmn",
+					"subprocess/ConfirmVolumeGroupTenant.bpmn",
+					"subprocess/GenericNotificationService.bpmn",
+					"subprocess/ConfirmVolumeGroupName.bpmn",
+					"subprocess/CreateAAIVfModule.bpmn",
+					"subprocess/UpdateAAIVfModule.bpmn",
+					"subprocess/UpdateAAIGenericVnf.bpmn",
+					"subprocess/CompleteMsoProcess.bpmn",
+					"subprocess/FalloutHandler.bpmn"
+				})
+			public void sunnyDayVIDMultipleUserParamValues() throws Exception {
+						
+				logStart();
+				
+				MockAAIVfModule();
+				MockPatchGenericVnf("skask");
+				MockPatchVfModuleId("skask", ".*");
+				MockSDNCAdapterVfModule();		
+				MockVNFAdapterRestVfModule();
+				MockDBUpdateVfModule();
+				
+				String businessKey = UUID.randomUUID().toString();
+				String createVfModuleRequest =
+					FileUtil.readResourceFile("__files/CreateVfModule_VID_request_userParam.json");
+				
+				Map<String, Object> variables = setupVariablesSunnyDayVID();		
+				
+				TestAsyncResponse asyncResponse = invokeAsyncProcess("CreateVfModuleInfra",
+					"v1", businessKey, createVfModuleRequest, variables);
+						
+				WorkflowResponse response = receiveResponse(businessKey, asyncResponse, 10000);
+				
+				String responseBody = response.getResponse();
+				System.out.println("Workflow (Synch) Response:\n" + responseBody);
+				
+				injectSDNCCallbacks(callbacks, "assign, query");
+				injectVNFRestCallbacks(callbacks, "vnfCreate");
+				injectSDNCCallbacks(callbacks, "activate");
+				
+				// TODO add appropriate assertions
+				
+				waitForProcessEnd(businessKey, 10000);
+				checkVariable(businessKey, "CreateVfModuleSuccessIndicator", true);
+				
+				logEnd();
+			}
 		
 	
 }
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/CreateVnfInfraTest.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/CreateVnfInfraTest.java
index d5f9496..075ddab 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/CreateVnfInfraTest.java
+++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/CreateVnfInfraTest.java
@@ -35,6 +35,7 @@
 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockNodeQueryServiceInstanceById;
 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockNodeQueryServiceInstanceById_404;
 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPutGenericVnf;
+import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.MockGetVnfCatalogDataCustomizationUuid;
 import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.mockUpdateRequestDB;
 import static org.openecomp.mso.bpmn.mock.StubResponseSDNCAdapter.mockSDNCAdapter;
 
@@ -83,6 +84,7 @@
 		MockGetServiceInstance("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET", "GenericFlows/getServiceInstance.xml");
 		MockGetGenericVnfByName_404();
 		MockPutGenericVnf();
+		MockGetVnfCatalogDataCustomizationUuid("customizationId123", "VIPR/getCatalogVnfData.json");
 		mockSDNCAdapter("/SDNCAdapter", "vnf-type>STMTN", 200, "VfModularity/StandardSDNCSynchResponse.xml");
 		mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
 
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DeleteNetworkInstanceTest.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DeleteNetworkInstanceTest.java
index 4317a57..06eb79c 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DeleteNetworkInstanceTest.java
+++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DeleteNetworkInstanceTest.java
@@ -83,7 +83,7 @@
 		// setup simulators
 		mockSDNCAdapterTopology("DeleteNetworkV2mock/sdncDeleteNetworkTopologySimResponse.xml", "SvcAction>delete");
 		MockNetworkAdapter("bdc5efe8-404a-409b-85f6-0dcc9eebae30", 200, "deleteNetworkResponse_Success.xml");
-		MockGetNetworkByIdWithDepth("bdc5efe8-404a-409b-85f6-0dcc9eebae30", "DeleteNetworkV2/deleteNetworkAAIResponse_Success.xml", "1");
+		MockGetNetworkByIdWithDepth("bdc5efe8-404a-409b-85f6-0dcc9eebae30", "DeleteNetworkV2/deleteNetworkAAIResponse_Success.xml", "all");
 		mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
 		MockGetCloudRegion("RDM2WAGPLCP", 200, "DeleteNetworkV2/cloudRegion30_AAIResponse_Success.xml");
 
@@ -153,7 +153,7 @@
 		mockSDNCAdapterTopology("DeleteNetworkV2mock/sdncDeleteNetworkTopologySimResponse.xml", "SvcAction>unassign");
 		mockSDNCAdapterTopology("DeleteNetworkV2mock/sdncDeleteNetworkTopologySimResponse.xml", "SvcAction>deactivate");
 		MockNetworkAdapter("bdc5efe8-404a-409b-85f6-0dcc9eebae30", 200, "deleteNetworkResponse_Success.xml");
-		MockGetNetworkByIdWithDepth("bdc5efe8-404a-409b-85f6-0dcc9eebae30", "DeleteNetworkV2/deleteNetworkAAIResponse_Success.xml", "1");
+		MockGetNetworkByIdWithDepth("bdc5efe8-404a-409b-85f6-0dcc9eebae30", "DeleteNetworkV2/deleteNetworkAAIResponse_Success.xml", "all");
 		mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
 		MockGetCloudRegion("RDM2WAGPLCP", 200, "DeleteNetworkV2/cloudRegion30_AAIResponse_Success.xml");
 
@@ -229,7 +229,7 @@
 		mockSDNCAdapterTopology("CreateNetworkV2mock/sdncCreateNetworkTopologySimResponse.xml", "SvcAction>activate");
 		MockNetworkAdapter("bdc5efe8-404a-409b-85f6-0dcc9eebae30", 200, "deleteNetworkResponse_Success.xml");
 		MockNetworkAdapterContainingRequest("createNetworkRequest", 200, "CreateNetworkV2/createNetworkResponse_Success.xml");
-		MockGetNetworkByIdWithDepth	("bdc5efe8-404a-409b-85f6-0dcc9eebae30", "DeleteNetworkV2/deleteNetworkAAIResponse_Success.xml", "1");
+		MockGetNetworkByIdWithDepth	("bdc5efe8-404a-409b-85f6-0dcc9eebae30", "DeleteNetworkV2/deleteNetworkAAIResponse_Success.xml", "all");
 		mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
 		MockGetCloudRegion("RDM2WAGPLCP", 200, "DeleteNetworkV2/cloudRegion30_AAIResponse_Success.xml");
 
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DeleteVfModuleInfraTest.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DeleteVfModuleInfraTest.java
index 4c478e6..cdc547c 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DeleteVfModuleInfraTest.java
+++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DeleteVfModuleInfraTest.java
@@ -29,6 +29,8 @@
 import static com.github.tomakehurst.wiremock.client.WireMock.stubFor;
 import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;
 import static com.github.tomakehurst.wiremock.client.WireMock.urlMatching;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPatchVfModuleId;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockVNFAdapterRestVfModule;
 import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.mockUpdateRequestDB;
 import static org.openecomp.mso.bpmn.mock.StubResponseVNFAdapter.mockVNFDelete;
 
@@ -53,32 +55,40 @@
 	private final CallbackSet callbacks = new CallbackSet();
 	
 	private static final String EOL = "\n";
-
+	
 	private final String vnfAdapterDeleteCallback = 
 			"<deleteVfModuleResponse>" + EOL +
 			"    <vnfId>a27ce5a9-29c4-4c22-a017-6615ac73c721</vnfId>" + EOL +
 			"    <vfModuleId>973ed047-d251-4fb9-bf1a-65b8949e0a73</vfModuleId>" + EOL +
 			"    <vfModuleDeleted>true</vfModuleDeleted>" + EOL +
 			"    <messageId>{{MESSAGE-ID}}</messageId>" + EOL +
-			" 	<vfModuleOutputs>" + EOL +  
-			" 	 <entry>" + EOL +
-			"	 <key>policyKey1_contrail_network_policy_fqdn</key>" + EOL +
-			" <value>MSOTest:DefaultPolicyFQDN1</value>" + EOL +
-			"</entry>" + EOL +
-			"<entry>" + EOL +
-			"<key>policyKey2_contrail_network_policy_fqdn</key>" + EOL +
-			"<value>MSOTest:DefaultPolicyFQDN2</value>" + EOL +
-			"</entry>" + EOL +
-			" 	 <entry>" + EOL +
-			"	 <key>oam_management_v4_address</key>" + EOL +
-			" <value>1234</value>" + EOL +
-			"</entry>" + EOL +
-			" 	 <entry>" + EOL +
-			"	 <key>oam_management_v6_address</key>" + EOL +
-			" <value>1234</value>" + EOL +
-			"</entry>" + EOL +
-			"</vfModuleOutputs>" + EOL +
 			"</deleteVfModuleResponse>" + EOL;
+
+	//private final String vnfAdapterDeleteCallback = 
+		//	"<deleteVfModuleResponse>" + EOL +
+	//		"    <vnfId>a27ce5a9-29c4-4c22-a017-6615ac73c721</vnfId>" + EOL +
+	//		"    <vfModuleId>973ed047-d251-4fb9-bf1a-65b8949e0a73</vfModuleId>" + EOL +
+	//		"    <vfModuleDeleted>true</vfModuleDeleted>" + EOL +
+	//		"    <messageId>{{MESSAGE-ID}}</messageId>" + EOL +
+	//		" 	<vfModuleOutputs>" + EOL +  
+	//		" 	 <entry>" + EOL +
+	//		"	 <key>policyKey1_contrail_network_policy_fqdn</key>" + EOL +
+	//		" <value>MSOTest:DefaultPolicyFQDN1</value>" + EOL +
+	//		"</entry>" + EOL +
+	//		"<entry>" + EOL +
+	//		"<key>policyKey2_contrail_network_policy_fqdn</key>" + EOL +
+	//		"<value>MSOTest:DefaultPolicyFQDN2</value>" + EOL +
+	//		"</entry>" + EOL +
+	//		" 	 <entry>" + EOL +
+	//		"	 <key>oam_management_v4_address</key>" + EOL +
+	//		" <value>1234</value>" + EOL +
+	//		"</entry>" + EOL +
+	//		" 	 <entry>" + EOL +
+	//		"	 <key>oam_management_v6_address</key>" + EOL +
+	//		" <value>1234</value>" + EOL +
+	//		"</entry>" + EOL +
+	//		"</vfModuleOutputs>" + EOL +
+	//		"</deleteVfModuleResponse>" + EOL;
 				
 	private final String vnfAdapterDeleteCallbackFail = 
 			"<vfModuleException>" + EOL +
@@ -97,13 +107,16 @@
 	public DeleteVfModuleInfraTest() throws IOException {
 		callbacks.put("sdncChangeDelete", sdncAdapterDeleteCallback);
 		callbacks.put("sdncDelete", sdncAdapterDeleteCallback);
-		callbacks.put("vnfDelete", vnfAdapterDeleteCallback);
+		callbacks.put("vnfDelete", FileUtil.readResourceFile(
+				"__files/DeleteVfModuleCallbackResponse.xml"));
+		//callbacks.put("vnfDelete", vnfAdapterDeleteCallback);
 		callbacks.put("vnfDeleteFail", vnfAdapterDeleteCallbackFail);
 	}
 
 	@Test
+	@Ignore // 1802 merge
 	@Deployment(resources = {
-			"process/Infrastructure/DeleteVfModuleInfra.bpmn",
+			"process/DeleteVfModuleInfra.bpmn",
 			"subprocess/DoDeleteVfModule.bpmn",
 			"subprocess/PrepareUpdateAAIVfModule.bpmn",
 			"subprocess/UpdateAAIVfModule.bpmn",
@@ -114,7 +127,7 @@
 			"subprocess/CompleteMsoProcess.bpmn",
 			"subprocess/FalloutHandler.bpmn"
 		})
-	@Ignore
+	
 	public void  TestDeleteVfModuleSuccess() throws Exception {
 		// delete the Base Module
 		// vnf-id=a27ce5a9-29c4-4c22-a017-6615ac73c721, vf-module-id=973ed047-d251-4fb9-bf1a-65b8949e0a73
@@ -155,7 +168,10 @@
 				  .withHeader("Content-Type", "text/xml")
 				  .withBodyFile("DeleteGenericVNFV1/sdncAdapterResponse.xml")));
 		
-		mockVNFDelete(".*", "/.*", 202);
+		//mockVNFDelete("a27ce5a9-29c4-4c22-a017-6615ac73c721", "973ed047-d251-4fb9-bf1a-65b8949e0a73", 202);
+		MockDoDeleteVfModule_DeleteVNFSuccess();
+		MockPatchVfModuleId("a27ce5a9-29c4-4c22-a017-6615ac73c721", "973ed047-d251-4fb9-bf1a-65b8949e0a73");
+	//	MockVNFAdapterRestVfModule();
 //		MockAAIGenericVnfSearch();
 //		MockAAIVfModulePUT(false);
 //		MockAAIDeleteGenericVnf();
@@ -519,7 +535,7 @@
 		String businessKey = UUID.randomUUID().toString();
 		String deleteVfModuleRequest =
 				FileUtil.readResourceFile("__files/DeleteVfModule_VID_request.json");
-		//Map<String, Object> variables = new HashMap<String, Object>();	
+		//Map<String, Object> variables = new HashMap<>();	
 		
 		//variables.put("isDebugLogEnabled","true");
 //		variables.put("mso-request-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
@@ -575,5 +591,15 @@
 				
 			}
 
-	
+			public static void MockDoDeleteVfModule_DeleteVNFSuccess() {
+				stubFor(delete(urlMatching("/vnfs/v1/vnfs/.*/vf-modules/.*"))
+						.willReturn(aResponse()
+						.withStatus(202)
+						.withHeader("Content-Type", "application/xml")));
+				stubFor(delete(urlMatching("/vnfs/v1/volume-groups/78987"))
+						.willReturn(aResponse()
+						.withStatus(202)
+						.withHeader("Content-Type", "application/xml")));
+			}
+
 }
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoCreateSIRollbackTest.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoCreateSIRollbackTest.java
index 16433ca..8a6c61c 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoCreateSIRollbackTest.java
+++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoCreateSIRollbackTest.java
@@ -136,12 +136,12 @@
 					"<service-information>" + EOL + 
 					"<service-id/>" + EOL + 
 					"<subscription-service-type>123456789</subscription-service-type>" + EOL + 
-					"<onap-model-information>" + EOL + 
+					"<ecomp-model-information>" + EOL + 
 					"<model-invariant-uuid/>" + EOL + 
 					"<model-uuid/>" + EOL + 
 					"<model-version/>" + EOL + 
 					"<model-name/>" + EOL + 
-					"</onap-model-information>" + EOL + 
+					"</ecomp-model-information>" + EOL + 
 					"<service-instance-id>MIS%252F1604%252F0026%252FSW_INTERNET</service-instance-id>" + EOL + 
 					"<subscriber-name/>" + EOL + 
 					"<global-customer-id>SDN-ETHERNET-INTERNET</global-customer-id>" + EOL + 
@@ -174,12 +174,12 @@
 				"<service-information>" + EOL + 
 				"<service-id/>" + EOL + 
 				"<subscription-service-type>123456789</subscription-service-type>" + EOL + 
-				"<onap-model-information>" + EOL + 
+				"<ecomp-model-information>" + EOL + 
 				"<model-invariant-uuid/>" + EOL + 
 				"<model-uuid/>" + EOL + 
 				"<model-version/>" + EOL + 
 				"<model-name/>" + EOL + 
-				"</onap-model-information>" + EOL + 
+				"</ecomp-model-information>" + EOL + 
 				"<service-instance-id>MIS%252F1604%252F0026%252FSW_INTERNET</service-instance-id>" + EOL + 
 				"<subscriber-name/>" + EOL + 
 				"<global-customer-id>SDN-ETHERNET-INTERNET</global-customer-id>" + EOL + 
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoCreateServiceInstanceTest.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoCreateServiceInstanceTest.java
index f6c5d90..4619d33 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoCreateServiceInstanceTest.java
+++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoCreateServiceInstanceTest.java
@@ -28,6 +28,7 @@
 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPutServiceInstance;
 import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.mockUpdateRequestDB;
 import static org.openecomp.mso.bpmn.mock.StubResponseSDNCAdapter.mockSDNCAdapter;
+import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.MockGetServiceResourcesCatalogData;
 
 import java.io.IOException;
 import java.util.HashMap;
@@ -36,9 +37,11 @@
 
 import org.camunda.bpm.engine.test.Deployment;
 import org.junit.Assert;
+import org.junit.Ignore;
 import org.junit.Test;
 import org.openecomp.mso.bpmn.common.BPMNUtil;
 import org.openecomp.mso.bpmn.common.WorkflowTest;
+import org.openecomp.mso.bpmn.mock.FileUtil;
 
 /**
  * Unit test cases for DoCreateServiceInstance.bpmn
@@ -51,7 +54,9 @@
 			"  <svc-request-id>((REQUEST-ID))</svc-request-id>" + EOL +
 			"  <ack-final-indicator>Y</ack-final-indicator>" + EOL +
 			"</output>" + EOL;
-		
+	private final String input = FileUtil.readResourceFile("__files/CreateServiceInstance/DoCreateServiceInstanceInput.json");
+	
+	
 	public DoCreateServiceInstanceTest() throws IOException {
 		callbacks.put("assign", sdncAdapterCallback);
 	}
@@ -61,8 +66,8 @@
 	 *
 	 * @throws Exception
 	 */
-	//@Ignore // File not found - unable to run the test.  Also, Stubs need updating..
 	@Test
+	@Ignore // 1802 merge
 	@Deployment(resources = {
 			"subprocess/DoCreateServiceInstance.bpmn",
 			"subprocess/SDNCAdapterV1.bpmn",
@@ -88,6 +93,9 @@
 		mockSDNCAdapter(200);
 		//DB
 		mockUpdateRequestDB(200, "DBUpdateResponse.xml");
+		//Catalog DB
+		MockGetServiceResourcesCatalogData("uuid-miu-svc-011-abcdef","InfrastructureFlows/DoCreateServiceInstance_request.json");
+		
 		String businessKey = UUID.randomUUID().toString();
 
 		Map<String, Object> variables = new HashMap<>();
@@ -109,10 +117,14 @@
 		variables.put("isDebugLogEnabled", "true");
 		variables.put("msoRequestId", "RaaDSITestRequestId-1");
 		variables.put("serviceInstanceId","RaaTest-si-id");
-		variables.put("serviceModelInfo", "{\"modelType\":\"service\",\"modelInvariantUuid\":\"uuid-miu-svc-011-abcdef\",\"modelVersionUuid\":\"ASDC_TOSCA_UUID\",\"modelName\":\"SIModelName1\",\"modelVersion\":\"2\"}");
+		variables.put("serviceModelInfo", "{\"modelType\":\"service\",\"modelInvariantUuid\":\"uuid-miu-svc-011-abcdef\",\"modelVersionUuid\":\"ASDC_TOSCA_UUID\",\"modelName\":\"SIModelName1\",\"modelVersion\":\"2\",\"projectName\":\"proj123\",\"owningEntityId\":\"id123\",\"owningEntityName\":\"name123\"}");
 		variables.put("productFamilyId", "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb");
 		variables.put("globalSubscriberId", "MCBH-1610");
 		variables.put("subscriptionServiceType", "viprsvc");
 		variables.put("instanceName", "RAATest-1");
+		variables.put("serviceInstanceName", "RAT-123");
+		variables.put("sdncVersion", "1611");
+		variables.put("serviceType", "PORT-MIRROR");
+		variables.put("requestJson", input);
 	}
 }
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoCreateServiceInstanceV2Test.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoCreateServiceInstanceV2Test.java
new file mode 100644
index 0000000..a61c829
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoCreateServiceInstanceV2Test.java
@@ -0,0 +1,109 @@
+/*-
+ * ============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.bpmn.infrastructure;
+
+import static org.junit.Assert.assertEquals;
+import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.MockGetServiceResourcesCatalogData;
+import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.mockUpdateRequestDB;
+import static org.openecomp.mso.bpmn.mock.StubResponseSDNCAdapter.mockSDNCAdapter;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+import org.camunda.bpm.engine.test.Deployment;
+import org.junit.Assert;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.openecomp.mso.bpmn.common.BPMNUtil;
+import org.openecomp.mso.bpmn.common.WorkflowTest;
+import org.openecomp.mso.bpmn.core.domain.ServiceDecomposition;
+import org.openecomp.mso.bpmn.mock.FileUtil;
+/**
+ * Unit test cases for DoCreateServiceInstanceV2.bpmn
+ */
+public class DoCreateServiceInstanceV2Test extends WorkflowTest {
+	
+	private final String input = FileUtil.readResourceFile("__files/CreateServiceInstance/DoCreateServiceInstanceInput.json");
+	ServiceDecomposition serviceDecomposition = new ServiceDecomposition("{\"serviceResources\":{\"project\": {\"projectName\": \"projectName\"},\"owningEntity\": {\"owningEntityId\": \"id123\",\"owningEntityName\": \"name123\"}}}","abc123");
+
+	public DoCreateServiceInstanceV2Test() throws IOException {
+		
+		
+	}
+		
+	/**
+	 * Sunny day VID scenario.
+	 *
+	 * @throws Exception
+	 */
+	@Ignore // 1802 merge
+	@Test
+	@Deployment(resources = {
+			"subprocess/DoCreateServiceInstanceV2.bpmn",
+			"subprocess/SDNCAdapterV1.bpmn",
+			"subprocess/CompleteMsoProcess.bpmn",
+			"subprocess/DoCreateServiceInstanceRollback.bpmn",
+			"subprocess/DoCreateServiceInstanceRollbackV2.bpmn",
+			"subprocess/FalloutHandler.bpmn" })
+	
+	public void sunnyDay() throws Exception {
+
+		logStart();
+		
+		//SDNC
+		mockSDNCAdapter(200);
+		//DB
+		mockUpdateRequestDB(200, "DBUpdateResponse.xml");
+		//Catalog DB
+		MockGetServiceResourcesCatalogData("uuid-miu-svc-011-abcdef","InfrastructureFlows/DoCreateServiceInstance_request.json");
+		
+		String businessKey = UUID.randomUUID().toString();
+
+		Map<String, Object> variables =  new HashMap<String, Object>();
+		setupVariables(variables);
+		invokeSubProcess("DoCreateServiceInstanceV2", businessKey, variables);
+		waitForProcessEnd(businessKey, 10000);
+		Assert.assertTrue(isProcessEnded(businessKey));
+		String workflowException = BPMNUtil.getVariable(processEngineRule, "DoCreateServiceInstanceV2", "WorkflowException");
+		System.out.println("workflowException:\n" + workflowException);
+		assertEquals(null, workflowException);
+		
+		logEnd();
+	}
+
+	// Success Scenario
+	private void setupVariables(Map<String, Object> variables) {
+		variables.put("isDebugLogEnabled", "true");
+		variables.put("msoRequestId", "RaaDSITestRequestId-1");
+		variables.put("serviceInstanceId","RaaTest-si-id");
+		//variables.put("serviceModelInfo", "{\"modelType\":\"service\",\"modelInvariantUuid\":\"uuid-miu-svc-011-abcdef\",\"modelVersionUuid\":\"ASDC_TOSCA_UUID\",\"modelName\":\"SIModelName1\",\"modelVersion\":\"2\",\"projectName\":\"proj123\",\"owningEntityId\":\"id123\",\"owningEntityName\":\"name123\"}");
+		variables.put("productFamilyId", "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb");
+		variables.put("globalSubscriberId", "MCBH-1610");
+		variables.put("subscriptionServiceType", "viprsvc");
+		variables.put("serviceInstanceName", "RAT-123");
+		variables.put("sdncVersion", "1611");
+		variables.put("serviceModelInfo", input);
+		variables.put("serviceDecomposition", serviceDecomposition);
+		variables.put("serviceType", "12e");
+	}
+}
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoCreateServiceInstanceV3Test.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoCreateServiceInstanceV3Test.java
new file mode 100644
index 0000000..88a329b
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoCreateServiceInstanceV3Test.java
@@ -0,0 +1,70 @@
+/*-
+ * ============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.bpmn.infrastructure;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+import org.camunda.bpm.engine.test.Deployment;
+import org.junit.Assert;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.openecomp.mso.bpmn.common.WorkflowTest;
+import org.openecomp.mso.bpmn.core.domain.ServiceDecomposition;
+import org.openecomp.mso.bpmn.core.json.JsonDecomposingException;
+
+/**
+ * Unit test cases for DoCreateServiceInstanceV3.bpmn
+ */
+public class DoCreateServiceInstanceV3Test extends WorkflowTest {
+
+	public DoCreateServiceInstanceV3Test() throws IOException {
+
+	}
+
+	@Test
+	@Deployment(resources = { "subprocess/DoCreateServiceInstanceV3.bpmn",
+							  "subprocess/DoCreateServiceInstanceV3Rollback.bpmn"
+							})
+	@Ignore // 1802 merge
+	public void sunnyDay() throws Exception {
+		logStart();
+		String businessKey = UUID.randomUUID().toString();
+		Map<String, Object> variables = new HashMap<String, Object>();
+		setupVariables(variables);
+		invokeSubProcess("DoCreateServiceInstanceV3", businessKey, variables);
+		waitForProcessEnd(businessKey, 10000);
+		Assert.assertTrue(isProcessEnded(businessKey));
+		logEnd();
+	}
+
+	// Success Scenario
+	private void setupVariables(Map<String, Object> variables) throws JsonDecomposingException {
+		variables.put("abc", "thevalueisabc");
+		variables.put("mso-request-id", "213");
+		ServiceDecomposition serviceDecomp = new ServiceDecomposition("{\"serviceResources\":{}}", "123");
+		serviceDecomp.setServiceType("PORT-MIRRO");
+		serviceDecomp.setSdncVersion("1610");
+		variables.put("serviceDecomposition", serviceDecomp);
+	}
+}
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoCreateVfModuleTest.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoCreateVfModuleTest.java
index d62c759..490d310 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoCreateVfModuleTest.java
+++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoCreateVfModuleTest.java
@@ -25,11 +25,14 @@
 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockAAIVfModule;
 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfByIdWithDepth;
 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfByIdWithPriority;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetVfModuleByName;
 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPatchGenericVnf;
 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPatchVfModuleId;
 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPutGenericVnf;
 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPutNetwork;
 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPutVfModuleIdNoResponse;
+import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.MockGetServiceResourcesCatalogData;
+import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.MockGetVnfCatalogDataCustomizationUuid;
 import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.mockUpdateRequestDB;
 import static org.openecomp.mso.bpmn.mock.StubResponseSDNCAdapter.mockSDNCAdapter;
 import static org.openecomp.mso.bpmn.mock.StubResponseVNFAdapter.mockVNFPost;
@@ -96,6 +99,8 @@
 		mockSDNCAdapter("VfModularity/StandardSDNCSynchResponse.xml");
 		mockVNFPost("", 202, "skask");	
 		mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
+		//Catalog DB
+		MockGetServiceResourcesCatalogData("aa5256d2-5a33-55df-13ab-12abad84e7ff","InfrastructureFlows/DoCreateServiceInstance_request.json");
 		
 		String businessKey = UUID.randomUUID().toString();
 		//RuntimeService runtimeService = processEngineRule.getRuntimeService();				
@@ -149,6 +154,9 @@
 		mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
 		MockPatchGenericVnf("skask");
 		MockPatchVfModuleId("skask", ".*");
+		//Catalog DB
+		MockGetServiceResourcesCatalogData("aa5256d2-5a33-55df-13ab-12abad84e7ff","InfrastructureFlows/DoCreateServiceInstance_request.json");
+				
 		
 		String businessKey = UUID.randomUUID().toString();
 		//RuntimeService runtimeService = processEngineRule.getRuntimeService();				
@@ -205,6 +213,8 @@
 		mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
 		MockPatchGenericVnf("skask");
 		MockPatchVfModuleId("skask", ".*");
+		//Catalog DB
+		MockGetServiceResourcesCatalogData("aa5256d2-5a33-55df-13ab-12abad84e7ff","InfrastructureFlows/DoCreateServiceInstance_request.json");
 		
 		String businessKey = UUID.randomUUID().toString();
 		//RuntimeService runtimeService = processEngineRule.getRuntimeService();				
@@ -228,6 +238,177 @@
 		logEnd();
 	}
 	
+	/**
+	 * Test the sunny day scenario for the aLaCarte request with no multiStageDesign
+	 */
+	@Test	
+	
+	@Deployment(resources = {
+			"subprocess/DoCreateVfModule.bpmn",
+			"subprocess/GenericGetVnf.bpmn",
+			"subprocess/SDNCAdapterV1.bpmn",
+			"subprocess/VnfAdapterRestV1.bpmn",
+			"subprocess/ConfirmVolumeGroupTenant.bpmn",
+			"subprocess/ConfirmVolumeGroupName.bpmn",
+			"subprocess/CreateAAIVfModule.bpmn",
+			"subprocess/UpdateAAIVfModule.bpmn",
+			"subprocess/CreateAAIVfModuleVolumeGroup.bpmn",
+			"subprocess/UpdateAAIGenericVnf.bpmn"
+		})
+	public void sunnyDay_aLaCarte_noMultistage() throws IOException {
+		
+		logStart();
+		
+		MockGetGenericVnfByIdWithPriority("skask", ".*", 200, "VfModularity/VfModule-new.xml", 5);
+		MockGetGenericVnfByIdWithDepth("skask", 1, "VfModularity/GenericVnf.xml");
+		MockPutVfModuleIdNoResponse("skask", "PCRF", ".*");
+		MockPutNetwork(".*", "VfModularity/AddNetworkPolicy_AAIResponse_Success.xml", 200);
+		MockPutGenericVnf("skask");
+		mockSDNCAdapter("/SDNCAdapter", "vnf-type>STMTN", 200, "VfModularity/StandardSDNCSynchResponse.xml");
+		mockSDNCAdapter("/SDNCAdapter", "SvcAction>query", 200, "VfModularity/StandardSDNCSynchResponse.xml");
+		mockVNFPost("", 202, "skask");
+		mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
+		MockPatchGenericVnf("skask");
+		MockPatchVfModuleId("skask", ".*");
+		//Catalog DB
+		MockGetServiceResourcesCatalogData("aa5256d2-5a33-55df-13ab-12abad84e7ff","InfrastructureFlows/DoCreateServiceInstance_request.json");
+		MockGetVnfCatalogDataCustomizationUuid("VNF-MODEL-123", "VIPR/getCatalogVnfNoTwoPhasedForVfModule.json");		
+		
+		String businessKey = UUID.randomUUID().toString();
+		//RuntimeService runtimeService = processEngineRule.getRuntimeService();				
+		
+		Map<String, Object> variables = setupVariablesSunnyDayBuildingBlocks();
+		variables.put("sdncVersion", "1702");
+		variables.put("aLaCarte", true);
+		//runtimeService.startProcessInstanceByKey("DoCreateVfModule", variables);
+		invokeSubProcess("DoCreateVfModule", businessKey, variables);
+		
+		
+		injectSDNCCallbacks(callbacks, "assign, queryModule");
+		injectVNFRestCallbacks(callbacks, "vnfCreate");
+		injectSDNCCallbacks(callbacks, "activate");
+
+		waitForProcessEnd(businessKey, 10000);
+		
+		Assert.assertTrue(isProcessEnded(businessKey));
+		Assert.assertTrue((boolean) getRawVariable(processEngineRule, "DoCreateVfModule", "DCVFM_SuccessIndicator"));
+		
+		logEnd();
+	}
+	
+	/**
+	 * Test the sunny day scenario for the first stage of multistage design.
+	 */
+	@Test	
+	
+	@Deployment(resources = {
+			"subprocess/DoCreateVfModule.bpmn",
+			"subprocess/GenericGetVnf.bpmn",
+			"subprocess/SDNCAdapterV1.bpmn",
+			"subprocess/VnfAdapterRestV1.bpmn",
+			"subprocess/ConfirmVolumeGroupTenant.bpmn",
+			"subprocess/ConfirmVolumeGroupName.bpmn",
+			"subprocess/CreateAAIVfModule.bpmn",
+			"subprocess/UpdateAAIVfModule.bpmn",
+			"subprocess/CreateAAIVfModuleVolumeGroup.bpmn",
+			"subprocess/UpdateAAIGenericVnf.bpmn"
+		})
+	public void sunnyDay_1st_of_multistage() throws IOException {
+		
+		logStart();
+		
+		MockGetGenericVnfByIdWithPriority("skask", ".*", 200, "VfModularity/VfModule-new.xml", 5);
+		MockGetGenericVnfByIdWithDepth("skask", 1, "VfModularity/GenericVnf.xml");
+		MockPutVfModuleIdNoResponse("skask", "PCRF", ".*");
+		MockPutNetwork(".*", "VfModularity/AddNetworkPolicy_AAIResponse_Success.xml", 200);
+		MockPutGenericVnf("skask");
+		mockSDNCAdapter("/SDNCAdapter", "vnf-type>STMTN", 200, "VfModularity/StandardSDNCSynchResponse.xml");
+		mockSDNCAdapter("/SDNCAdapter", "SvcAction>query", 200, "VfModularity/StandardSDNCSynchResponse.xml");
+		mockVNFPost("", 202, "skask");
+		mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
+		MockPatchGenericVnf("skask");
+		MockPatchVfModuleId("skask", ".*");
+		//Catalog DB
+		MockGetServiceResourcesCatalogData("aa5256d2-5a33-55df-13ab-12abad84e7ff","InfrastructureFlows/DoCreateServiceInstance_request.json");
+		MockGetVnfCatalogDataCustomizationUuid("VNF-MODEL-123", "VIPR/getCatalogVnfYesTwoPhasedForVfModule.json");		
+		
+		String businessKey = UUID.randomUUID().toString();
+		//RuntimeService runtimeService = processEngineRule.getRuntimeService();				
+		
+		Map<String, Object> variables = setupVariablesSunnyDayBuildingBlocks();
+		variables.put("sdncVersion", "1702");
+		variables.put("aLaCarte", true);
+		//runtimeService.startProcessInstanceByKey("DoCreateVfModule", variables);
+		invokeSubProcess("DoCreateVfModule", businessKey, variables);
+		
+		injectSDNCCallbacks(callbacks, "assign");
+		
+		waitForProcessEnd(businessKey, 10000);
+		
+		Assert.assertTrue(isProcessEnded(businessKey));
+		Assert.assertTrue((boolean) getRawVariable(processEngineRule, "DoCreateVfModule", "DCVFM_SuccessIndicator"));
+		
+		logEnd();
+	}
+	
+	/**
+	 * Test the sunny day scenario for the second stage of multiStageDesign
+	 */
+	@Test	
+	
+	@Deployment(resources = {
+			"subprocess/DoCreateVfModule.bpmn",
+			"subprocess/GenericGetVnf.bpmn",
+			"subprocess/SDNCAdapterV1.bpmn",
+			"subprocess/VnfAdapterRestV1.bpmn",
+			"subprocess/ConfirmVolumeGroupTenant.bpmn",
+			"subprocess/ConfirmVolumeGroupName.bpmn",
+			"subprocess/CreateAAIVfModule.bpmn",
+			"subprocess/UpdateAAIVfModule.bpmn",
+			"subprocess/CreateAAIVfModuleVolumeGroup.bpmn",
+			"subprocess/UpdateAAIGenericVnf.bpmn"
+		})
+	public void sunnyDay_2nd_of_multistage() throws IOException {
+		
+		logStart();
+		
+		MockGetGenericVnfByIdWithPriority("skask", ".*", 200, "VfModularity/VfModule-new.xml", 5);
+		MockGetVfModuleByName("skask", "PCRF%3A%3Amodule-0-2","VfModularity/VfModule-new-PendingActivation.xml", 200);
+		MockGetGenericVnfByIdWithDepth("skask", 1, "VfModularity/GenericVnf.xml");		
+		MockPutVfModuleIdNoResponse("skask", "PCRF", ".*");
+		MockPutNetwork(".*", "VfModularity/AddNetworkPolicy_AAIResponse_Success.xml", 200);
+		MockPutGenericVnf("skask");
+		mockSDNCAdapter("/SDNCAdapter", "vnf-type>STMTN", 200, "VfModularity/StandardSDNCSynchResponse.xml");
+		mockSDNCAdapter("/SDNCAdapter", "SvcAction>query", 200, "VfModularity/StandardSDNCSynchResponse.xml");
+		mockVNFPost("", 202, "skask");
+		mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
+		MockPatchGenericVnf("skask");
+		MockPatchVfModuleId("skask", ".*");
+		//Catalog DB
+		MockGetServiceResourcesCatalogData("aa5256d2-5a33-55df-13ab-12abad84e7ff","InfrastructureFlows/DoCreateServiceInstance_request.json");
+		
+		
+		String businessKey = UUID.randomUUID().toString();
+		//RuntimeService runtimeService = processEngineRule.getRuntimeService();				
+		
+		Map<String, Object> variables = setupVariablesSunnyDayBuildingBlocks();
+		variables.put("sdncVersion", "1702");
+		variables.put("aLaCarte", true);
+		//runtimeService.startProcessInstanceByKey("DoCreateVfModule", variables);
+		invokeSubProcess("DoCreateVfModule", businessKey, variables);		
+		
+		injectSDNCCallbacks(callbacks, "queryModule");
+		injectVNFRestCallbacks(callbacks, "vnfCreate");
+		injectSDNCCallbacks(callbacks, "activate");
+
+		waitForProcessEnd(businessKey, 10000);
+		
+		Assert.assertTrue(isProcessEnded(businessKey));
+		Assert.assertTrue((boolean) getRawVariable(processEngineRule, "DoCreateVfModule", "DCVFM_SuccessIndicator"));
+		
+		logEnd();
+	}
+	
 	
 	private Map<String, Object> setupVariablesSunnyDayBuildingBlocks() {
 		Map<String, Object> variables = new HashMap<>();
@@ -293,4 +474,4 @@
 		return variables;
 		
 	}
-}
\ No newline at end of file
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoCreateVnfAndModulesTest.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoCreateVnfAndModulesTest.java
index c8f97ca..dc0af41 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoCreateVnfAndModulesTest.java
+++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoCreateVnfAndModulesTest.java
@@ -78,7 +78,7 @@
 	}
 
 	@Test
-    @Ignore // IGNORED FOR 1710 MERGE TO ONAP
+    
 	@Deployment(resources = {"subprocess/GenericGetService.bpmn",
 			"subprocess/GenericGetVnf.bpmn",
 			"subprocess/GenericPutVnf.bpmn", 
@@ -133,7 +133,7 @@
 	}
 	
 	@Test
-    @Ignore // IGNORED FOR 1710 MERGE TO ONAP
+    
 	@Deployment(resources = {"subprocess/GenericGetService.bpmn",
 			"subprocess/GenericGetVnf.bpmn",
 			"subprocess/GenericPutVnf.bpmn", 
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoCreateVnfTest.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoCreateVnfTest.java
index 90d562e..7537ffa 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoCreateVnfTest.java
+++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoCreateVnfTest.java
@@ -42,6 +42,7 @@
 import org.openecomp.mso.bpmn.common.BPMNUtil;
 import org.openecomp.mso.bpmn.common.WorkflowTest;
 import org.openecomp.mso.bpmn.common.WorkflowTest.CallbackSet;
+import org.openecomp.mso.bpmn.core.domain.VnfResource;
 import org.openecomp.mso.bpmn.mock.FileUtil;
 
 /**
@@ -123,6 +124,8 @@
 				"}";
 		variables.put("serviceModelInfo", serviceModelInfo);
 		variables.put("globalSubscriberId", "MSO-1610");
+		VnfResource vnfResource = new VnfResource();
+		variables.put("vnfResourceDecomposition", vnfResource);
 	}
 
 }
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoDeleteVfModuleTest.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoDeleteVfModuleTest.java
index 578fda3..8f5f63d 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoDeleteVfModuleTest.java
+++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoDeleteVfModuleTest.java
@@ -128,7 +128,7 @@
 		MockPatchVfModuleId("a27ce5a9-29c4-4c22-a017-6615ac73c721", "973ed047-d251-4fb9-bf1a-65b8949e0a73");
 		
 		String businessKey = UUID.randomUUID().toString();
-		Map<String, Object> variables = new HashMap<>();
+		Map<String, Object> variables = new HashMap<>();		
 		variables.put("isDebugLogEnabled","true");
 		variables.put("mso-request-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
 		variables.put("mso-service-instance-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
@@ -173,7 +173,7 @@
 		MockPatchVfModuleId("a27ce5a9-29c4-4c22-a017-6615ac73c721", "973ed047-d251-4fb9-bf1a-65b8949e0a73");
 		
 		String businessKey = UUID.randomUUID().toString();
-		Map<String, Object> variables = new HashMap<>();
+		Map<String, Object> variables = new HashMap<>();		
 		
 		variables.put("mso-request-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");	
 		variables.put("requestId", "a27ce5a9-29c4-4c22-a017-6615ac73c721");		
@@ -217,6 +217,73 @@
 		}
 		logEnd();
 	}
+	
+	@Test
+	@Deployment(resources = {
+			"subprocess/DoDeleteVfModule.bpmn",
+			"subprocess/PrepareUpdateAAIVfModule.bpmn",
+			"subprocess/UpdateAAIVfModule.bpmn",
+			"subprocess/UpdateAAIGenericVnf.bpmn",
+			"subprocess/DeleteAAIVfModule.bpmn",
+			"subprocess/SDNCAdapterV1.bpmn",
+			"subprocess/VnfAdapterRestV1.bpmn"
+		})
+	public void  TestDoDeleteVfModule_Building_Block_ModuleInAssignedState() {
+		logStart();
+		MockDoDeleteVfModule_SDNCSuccess();
+		MockDoDeleteVfModule_DeleteVNFSuccess();
+		MockAAIGenericVnfSearch();
+		MockAAIVfModulePUT(false);
+		MockAAIDeleteGenericVnf();
+		MockAAIDeleteVfModule();
+		MockPatchVfModuleId("a27ce5a9-29c4-4c22-a017-6615ac73c721", "973ed047-d251-4fb9-bf1a-65b8949e0a73");
+		
+		String businessKey = UUID.randomUUID().toString();
+		Map<String, Object> variables = new HashMap<>();		
+		
+		variables.put("mso-request-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");	
+		variables.put("requestId", "a27ce5a9-29c4-4c22-a017-6615ac73c721");		
+		variables.put("isDebugLogEnabled","true");
+		variables.put("vnfId", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
+		variables.put("vfModuleId", "973ed047-d251-4fb9-bf1a-65b8949e0a73");
+		variables.put("serviceInstanceId", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
+		variables.put("vfModuleName", "STMTN5MMSC21-MMSC::module-0-0");
+		variables.put("sdncVersion", "1610");
+		variables.put("isVidRequest", "true");
+		variables.put("retainResources", false);
+		variables.put("aLaCarte", true);
+		String vfModuleModelInfo = "{" + "\"modelType\": \"vnf\"," +
+				"\"modelInvariantUuid\": \"ff5256d2-5a33-55df-13ab-12abad84e7ff\"," + 
+				"\"modelUuid\": \"fe6478e5-ea33-3346-ac12-ab121484a3fe\"," +
+				"\"modelName\": \"vSAMP12\"," +
+				"\"modelVersion\": \"1.0\"," + 
+				"\"modelCustomizationUuid\": \"MODEL-ID-1234\"," + 
+				"}";
+		variables.put("vfModuleModelInfo", vfModuleModelInfo);
+			
+		String cloudConfiguration = "{" + 
+				"\"lcpCloudRegionId\": \"RDM2WAGPLCP\"," +		
+				"\"tenantId\": \"fba1bd1e195a404cacb9ce17a9b2b421\"" + "}";
+		variables.put("cloudConfiguration", cloudConfiguration);
+	
+		
+		invokeSubProcess("DoDeleteVfModule", businessKey, variables);
+
+		// "changedelete" operation not required for deleting a Vf Module
+//		injectSDNCCallbacks(callbacks, "sdncChangeDelete");
+		injectVNFRestCallbacks(callbacks, "vnfDelete");
+		waitForRunningProcessCount("vnfAdapterDeleteV1", 0, 120000);
+		injectSDNCCallbacks(callbacks, "sdncDelete");
+
+		waitForProcessEnd(businessKey, 10000);
+		WorkflowException wfe = (WorkflowException) getVariableFromHistory(businessKey, wfeString);
+		checkVariable(businessKey, wfeString, null);
+		if (wfe != null) {
+			System.out.println("TestDoDeleteVfModule_Building_Block_Success: ErrorCode=" + wfe.getErrorCode() +
+					", ErrorMessage=" + wfe.getErrorMessage());
+		}
+		logEnd();
+	}
 
 	
 	@Test
@@ -263,7 +330,7 @@
 		MockPatchVfModuleId("a27ce5a9-29c4-4c22-a017-6615ac73c721", "973ed047-d251-4fb9-bf1a-65b8949e0a73");
 		
 		String businessKey = UUID.randomUUID().toString();
-		Map<String, Object> variables = new HashMap<>();
+		Map<String, Object> variables = new HashMap<>();		
 		variables.put("isDebugLogEnabled","true");
 		variables.put("mso-request-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
 		variables.put("mso-service-instance-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
@@ -334,7 +401,7 @@
 		MockPatchVfModuleId("a27ce5a9-29c4-4c22-a017-6615ac73c721", "973ed047-d251-4fb9-bf1a-65b8949e0a73");
 		
 		String businessKey = UUID.randomUUID().toString();
-		Map<String, Object> variables = new HashMap<>();
+		Map<String, Object> variables = new HashMap<>();		
 		variables.put("isDebugLogEnabled","true");
 		variables.put("mso-request-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
 		variables.put("mso-service-instance-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
@@ -405,7 +472,7 @@
 		MockPatchVfModuleId("a27ce5a9-29c4-4c22-a017-6615ac73c721", "973ed047-d251-4fb9-bf1a-65b8949e0a73");
 		
 		String businessKey = UUID.randomUUID().toString();
-		Map<String, Object> variables = new HashMap<>();
+		Map<String, Object> variables = new HashMap<>();		
 		variables.put("isDebugLogEnabled","true");
 		variables.put("mso-request-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
 		variables.put("mso-service-instance-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
@@ -475,7 +542,7 @@
 		MockPatchVfModuleId("a27ce5a9-29c4-4c22-a017-6615ac73c721", "973ed047-d251-4fb9-bf1a-65b8949e0a73");
 		
 		String businessKey = UUID.randomUUID().toString();
-		Map<String, Object> variables = new HashMap<>();
+		Map<String, Object> variables = new HashMap<>();		
 		variables.put("isDebugLogEnabled","true");
 		variables.put("mso-request-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
 		variables.put("mso-service-instance-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoDeleteVnfAndModulesTest.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoDeleteVnfAndModulesTest.java
index a9dde90..c53beb1 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoDeleteVnfAndModulesTest.java
+++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoDeleteVnfAndModulesTest.java
@@ -24,14 +24,18 @@
 import static com.github.tomakehurst.wiremock.client.WireMock.containing;
 import static com.github.tomakehurst.wiremock.client.WireMock.delete;
 import static com.github.tomakehurst.wiremock.client.WireMock.post;
+import static com.github.tomakehurst.wiremock.client.WireMock.put;
 import static com.github.tomakehurst.wiremock.client.WireMock.stubFor;
 import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;
 import static com.github.tomakehurst.wiremock.client.WireMock.urlMatching;
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
+import static org.openecomp.mso.bpmn.common.DeleteAAIVfModuleTest.MockAAIDeleteGenericVnf;
 import static org.openecomp.mso.bpmn.common.DeleteAAIVfModuleTest.MockAAIDeleteVfModule;
 import static org.openecomp.mso.bpmn.common.DeleteAAIVfModuleTest.MockAAIGenericVnfSearch;
 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockDeleteGenericVnf;
 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfById;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPatchVfModuleId;
 import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.mockUpdateRequestDB;
 import static org.openecomp.mso.bpmn.mock.StubResponseSDNCAdapter.mockSDNCAdapter;
 
@@ -47,6 +51,10 @@
 import org.openecomp.mso.bpmn.common.BPMNUtil;
 import org.openecomp.mso.bpmn.common.WorkflowTest;
 import org.openecomp.mso.bpmn.mock.FileUtil;
+import org.openecomp.mso.bpmn.core.domain.ModelInfo;
+import org.openecomp.mso.bpmn.core.domain.ModuleResource;
+import org.openecomp.mso.bpmn.core.domain.ServiceDecomposition;
+import org.openecomp.mso.bpmn.core.domain.VnfResource;
 
 public class DoDeleteVnfAndModulesTest extends WorkflowTest {
 	private final CallbackSet callbacks = new CallbackSet();
@@ -58,6 +66,11 @@
 			"    <vfModuleDeleted>true</vfModuleDeleted>" + EOL +
 			"    <messageId>{{MESSAGE-ID}}</messageId>" + EOL +
 			"</deleteVfModuleResponse>" + EOL;
+	private final String sdncAdapterDeleteCallback =
+			"<output xmlns=\"org:openecomp:sdnctl:l3api\">" + EOL +
+			"  <svc-request-id>{{REQUEST-ID}}</svc-request-id>" + EOL +
+			"  <ack-final-indicator>Y</ack-final-indicator>" + EOL +
+			"</output>" + EOL;
 
 	public DoDeleteVnfAndModulesTest () throws IOException {
 		callbacks.put("deactivate", FileUtil.readResourceFile(
@@ -65,6 +78,7 @@
 		callbacks.put("unassign", FileUtil.readResourceFile(
 				"__files/VfModularity/SDNCTopologyActivateCallback.xml"));
 		callbacks.put("vnfDelete", vnfAdapterDeleteCallback);
+		callbacks.put("sdncDelete", sdncAdapterDeleteCallback);
 
 	}
 
@@ -178,8 +192,136 @@
 		
 		variables.put("sdncVersion", "1707");
 		
+		
+		ServiceDecomposition sd = new ServiceDecomposition();		
+		ModelInfo serviceModel = new ModelInfo();
+		serviceModel.setModelName("servicewithVNFs");
+		sd.setModelInfo(serviceModel);			
+		VnfResource vr = new VnfResource();
+		ModelInfo mvr = new ModelInfo();
+		mvr.setModelName("vSAMP12");
+		mvr.setModelInstanceName("v123");
+		mvr.setModelInvariantUuid("");
+		mvr.setModelVersion("1.0");
+		mvr.setModelCustomizationUuid("MODEL-ID-1234");
+		vr.setModelInfo(mvr);
+		vr.constructVnfType("vnf1");			
+		vr.setNfType("somenftype");
+		vr.setNfRole("somenfrole");
+		vr.setNfFunction("somenffunction");
+		vr.setNfNamingCode("somenamingcode");	
+		ModuleResource mr = new ModuleResource();
+		ModelInfo mvmr = new ModelInfo();
+		mvmr.setModelInvariantUuid("ff5256d2-5a33-55df-13ab-12abad84e7ff");
+		mvmr.setModelName("STMTN5MMSC21-MMSC::model-1-0");
+		mvmr.setModelUuid("1.0");
+		mvmr.setModelCustomizationUuid("MODEL-123");
+		mr.setModelInfo(mvmr);
+		mr.setIsBase(true);
+		mr.setVfModuleLabel("MODULELABEL");
+		vr.addVfModule(mr);
+		sd.addVnfResource(vr);			
+		variables.put("serviceDecomposition", sd);
+		
 	}
 	
+	@Test	
+	@Deployment(resources = {"subprocess/DoDeleteVnfAndModules.bpmn", "subprocess/SDNCAdapterV1.bpmn", "subprocess/GenericGetVnf.bpmn", "subprocess/GenericDeleteVnf.bpmn", "subprocess/DoDeleteVnf.bpmn", "subprocess/DoDeleteVfModule.bpmn", "subprocess/UpdateAAIVfModule.bpmn", "subprocess/PrepareUpdateAAIVfModule.bpmn", "subprocess/DoDeleteVfModuleFromVnf.bpmn", "subprocess/VnfAdapterRestV1.bpmn", "subprocess/DeleteAAIVfModule.bpmn"})
+	public void testDoDeleteVnfAndModulesDirectDelete_successVnfAndModules() throws Exception{
+		MockDoDeleteVfModule_SDNCSuccess();
+		MockDoDeleteVfModule_DeleteVNFSuccess();
+		mockSDNCAdapter(200);
+		MockAAIGenericVnfSearch();
+		MockAAIVfModulePUT(false);
+		MockAAIDeleteGenericVnf();
+		MockAAIDeleteVfModule();
+		MockPatchVfModuleId("a27ce5a9-29c4-4c22-a017-6615ac73c721", "973ed047-d251-4fb9-bf1a-65b8949e0a73");
+
+		String businessKey = UUID.randomUUID().toString();
+		Map<String, Object> variables = new HashMap<>();
+		setVariablesVnfAndModulesDirectDelete(variables);
+		invokeSubProcess("DoDeleteVnfAndModules", businessKey, variables);
+		
+		injectVNFRestCallbacks(callbacks, "vnfDelete");		
+		injectSDNCCallbacks(callbacks, "sdncDelete");
+		MockGetGenericVnfById("a27ce5a9-29c4-4c22-a017-6615ac73c721", "GenericFlows/getGenericVnfByNameResponse.xml");				
+
+		waitForProcessEnd(businessKey, 10000);
+
+		Assert.assertTrue(isProcessEnded(businessKey));		
+
+		String workflowException = BPMNUtil.getVariable(processEngineRule, "DoDeleteVnfAndModules", "WorkflowException");
+		
+		// WorkflowException is expected here, since empty VNF cannot be simulated here
+		assertNotEquals(null, workflowException);
+	}
+
+	
+	private void setVariablesVnfAndModulesDirectDelete(Map<String, Object> variables) {
+		variables.put("mso-request-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");		
+		variables.put("isDebugLogEnabled", "true");
+		variables.put("vnfId","a27ce5a9-29c4-4c22-a017-6615ac73c721");
+		variables.put("serviceInstanceId", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
+				
+		variables.put("msoRequestId", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
+		//variables.put("testVnfId","testVnfId123");
+		
+		variables.put("lcpCloudRegionId", "RDM2WAGPLCP");
+		variables.put("tenantId", "fba1bd1e195a404cacb9ce17a9b2b421");
+		
+		variables.put("sdncVersion", "1702");
+		
+		
+		ServiceDecomposition sd = new ServiceDecomposition();		
+		ModelInfo serviceModel = new ModelInfo();
+		serviceModel.setModelName("servicewithVNFs");
+		sd.setModelInfo(serviceModel);			
+		VnfResource vr = new VnfResource();
+		ModelInfo mvr = new ModelInfo();
+		mvr.setModelName("vSAMP12");
+		mvr.setModelInstanceName("v123");
+		mvr.setModelInvariantUuid("");
+		mvr.setModelVersion("1.0");
+		mvr.setModelCustomizationUuid("MODEL-ID-1234");
+		vr.setModelInfo(mvr);
+		vr.constructVnfType("vnf1");			
+		vr.setNfType("somenftype");
+		vr.setNfRole("somenfrole");
+		vr.setNfFunction("somenffunction");
+		vr.setNfNamingCode("somenamingcode");	
+		ModuleResource mr = new ModuleResource();
+		ModelInfo mvmr = new ModelInfo();
+		mvmr.setModelInvariantUuid("ff5256d2-5a33-55df-13ab-12abad84e7ff");
+		mvmr.setModelName("STMTN5MMSC21-MMSC::model-1-0");
+		mvmr.setModelUuid("1.0");
+		mvmr.setModelCustomizationUuid("MODEL-123");
+		mr.setModelInfo(mvmr);
+		mr.setIsBase(true);
+		mr.setVfModuleLabel("MODULELABEL");
+		vr.addVfModule(mr);
+		sd.addVnfResource(vr);			
+		variables.put("serviceDecomposition", sd);
+		
+	}
+	
+	public static void MockAAIVfModulePUT(boolean isCreate){
+		stubFor(put(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/.*/vf-modules/vf-module/.*"))
+				.withRequestBody(containing("MMSC"))
+				.willReturn(aResponse()
+						.withStatus(isCreate ? 201 : 200)));
+		stubFor(put(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/.*/vf-modules/vf-module/.*"))
+				.withRequestBody(containing("PCRF"))
+				.willReturn(aResponse()
+						.withStatus(500)
+						.withHeader("Content-Type", "text/xml")
+						.withBodyFile("aaiFault.xml")));
+		stubFor(put(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/a27ce5a9-29c4-4c22-a017-6615ac73c721"))				
+				.willReturn(aResponse()
+					.withStatus(200)));
+	}
+	
+
+	
 
 	public static void MockDoDeleteVfModule_SDNCSuccess() {
 		stubFor(post(urlEqualTo("/SDNCAdapter"))
@@ -207,4 +349,4 @@
 				.withStatus(202)
 				.withHeader("Content-Type", "application/xml")));
 	}
-}
\ No newline at end of file
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoUpdateVfModuleTest.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoUpdateVfModuleTest.java
index 9fa9323..a955c4e 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoUpdateVfModuleTest.java
+++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoUpdateVfModuleTest.java
@@ -37,6 +37,7 @@
 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPatchVfModuleId;
 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPutGenericVnf;
 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPutVfModuleIdNoResponse;
+import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.MockGetServiceResourcesCatalogData;
 import static org.openecomp.mso.bpmn.mock.StubResponseSDNCAdapter.mockSDNCAdapter;
 import static org.openecomp.mso.bpmn.mock.StubResponseVNFAdapter.mockVNFPut;
 
@@ -98,6 +99,8 @@
 		mockVNFPut("skask", "/supercool", 202);
 		MockPutGenericVnf("skask");
 		MockGetGenericVnfByIdWithPriority("skask", "supercool", 200, "VfModularity/VfModule-supercool.xml", 1);
+		//Catalog DB
+		MockGetServiceResourcesCatalogData("aa5256d2-5a33-55df-13ab-12abad84e7ff","InfrastructureFlows/DoCreateServiceInstance_request.json");
 		
 		String businessKey = UUID.randomUUID().toString();
 		Map<String, Object> variables = new HashMap<>();
@@ -144,6 +147,8 @@
 		MockPatchVfModuleId("skask", ".*");
 		MockSDNCAdapterVfModule();
 		MockVNFAdapterRestVfModule();
+		//Catalog DB
+		MockGetServiceResourcesCatalogData("aa5256d2-5a33-55df-13ab-12abad84e7ff","InfrastructureFlows/DoCreateServiceInstance_request.json");
 		
 		String businessKey = UUID.randomUUID().toString();
 		Map<String, Object> variables = new HashMap<>();
@@ -181,6 +186,14 @@
 				"\"modelVersion\": \"1\"," + 
 				"\"modelCustomizationUuid\": \"VNF-MODEL-123\"" + "}";
 	variables.put("vnfModelInfo", vnfModelInfo);
+	
+	String serviceModelInfo = "{ "+ "\"modelType\": \"service\"," +
+			"\"modelInvariantUuid\": \"aa5256d2-5a33-55df-13ab-12abad84e7ff\"," + 
+			"\"modelUuid\": \"bb6478e5-ea33-3346-ac12-ab121484a3fe\"," +
+			"\"modelName\": \"SVC-STMTN5MMSC21-MMSC::model-1-0\"," +
+			"\"modelVersion\": \"1\"," + 
+			 "}";
+	variables.put("serviceModelInfo", serviceModelInfo);
 		
 		invokeSubProcess("DoUpdateVfModule", businessKey, variables);
 		
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoUpdateVnfAndModulesTest.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoUpdateVnfAndModulesTest.java
index 4def56c..2a5a646 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoUpdateVnfAndModulesTest.java
+++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/DoUpdateVnfAndModulesTest.java
@@ -153,7 +153,7 @@
 		//variables.put("testVnfId","testVnfId123");
 		variables.put("vnfType", "STMTN");
 		variables.put("vnfId", "skask");
-		variables.put("tenantId", "88a6ca3ee0394ade9403f075db23167e");
+		variables.put("tenantId", "fba1bd1e195a404cacb9ce17a9b2b421");
 		variables.put("lcpCloudRegionId", "mdt1");
 		
 		String serviceModelInfo = "{ "+ "\"modelType\": \"service\"," +
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/ReplaceVnfInfraTest.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/ReplaceVnfInfraTest.java
index 64852df..f7cf3f4 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/ReplaceVnfInfraTest.java
+++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/ReplaceVnfInfraTest.java
@@ -34,6 +34,7 @@
 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockDeleteGenericVnf;
 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockDeleteVfModuleId;
 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfById;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetDefaultCloudRegionByCloudRegionId;
 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfByIdWithDepth;
 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfByIdWithPriority;
 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetServiceInstance;
@@ -102,9 +103,10 @@
 	 * @throws Exception
 	 */
 	@Test	
-    @Ignore
+	@Ignore // 1802 merge
 	@Deployment(resources = {
-		"process/ReplaceVnfInfra.bpmn",		
+		"process/ReplaceVnfInfra.bpmn",	
+		"subprocess/RollbackVnf.bpmn",
 		"subprocess/DoDeleteVfModule.bpmn",
 		"subprocess/DoDeleteVnfAndModules.bpmn",
 		"subprocess/DeleteAAIVfModule.bpmn",
@@ -133,7 +135,8 @@
 		"subprocess/DoCreateVnfAndModulesRollback.bpmn",
 		"subprocess/BuildingBlock/DecomposeService.bpmn",
 		"subprocess/BuildingBlock/RainyDayHandler.bpmn",
-		"subprocess/BuildingBlock/ManualHandling.bpmn"
+		"subprocess/BuildingBlock/ManualHandling.bpmn",
+		"subprocess/BuildingBlock/AppCClient.bpmn"
 		
 		})
 	public void sunnyDay() throws Exception {
@@ -152,19 +155,21 @@
 		MockGetServiceInstance("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET", "GenericFlows/getServiceInstance.xml");
 		//MockGetGenericVnfById_404("testVnfId");
 		MockGetServiceResourcesCatalogData("995256d2-5a33-55df-13ab-12abad84e7ff", "1.0", "VIPR/getCatalogServiceResourcesDataForReplaceVnfInfra.json");
+		MockGetServiceResourcesCatalogData("995256d2-5a33-55df-13ab-12abad84e7ff", "VIPR/getCatalogServiceResourcesDataForReplaceVnfInfra.json");
 		//MockGetGenericVnfByIdWithDepth("skask", 1, "VfModularity/GenericVnf.xml");
 		//MockPutGenericVnf(".*");
+		MockGetDefaultCloudRegionByCloudRegionId("mdt1", "AAI/AAI_defaultCloudRegionByCloudRegionId.json", 200);
 		MockAAIVfModule();
 		MockPatchGenericVnf("a27ce5a9-29c4-4c22-a017-6615ac73c721");
 		MockPatchVfModuleId("a27ce5a9-29c4-4c22-a017-6615ac73c721", ".*");
-		//mockSDNCAdapter("VfModularity/StandardSDNCSynchResponse.xml");	
-		//mockVNFPut("skask", "/supercool", 202);
-		//mockVNFPut("skask", "/lukewarm", 202);
-		//MockVNFAdapterRestVfModule();
-		//MockDBUpdateVfModule();	
-		//MockGetPserverByVnfId("skask", "AAI/AAI_pserverByVnfId.json", 200);
-		//MockGetGenericVnfsByVnfId("skask", "AAI/AAI_genericVnfsByVnfId.json", 200);
-		MockSetInMaintFlagByVnfId("skask", 200);
+		mockSDNCAdapter("VfModularity/StandardSDNCSynchResponse.xml");	
+		mockVNFPut("skask", "/supercool", 202);
+		mockVNFPut("skask", "/lukewarm", 202);
+		MockVNFAdapterRestVfModule();
+		MockDBUpdateVfModule();	
+		MockGetPserverByVnfId("skask", "AAI/AAI_pserverByVnfId.json", 200);
+		MockGetGenericVnfsByVnfId("skask", "AAI/AAI_genericVnfsByVnfId.json", 200);
+		MockSetInMaintFlagByVnfId("skask", "AAI/AAI_genericVnfsByVnfId.json", 200);		
 		MockPolicySkip();
 		
 		//mockSDNCAdapter("VfModularity/StandardSDNCSynchResponse.xml");
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/RollbackVnfTest.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/RollbackVnfTest.java
new file mode 100644
index 0000000..598e783
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/RollbackVnfTest.java
@@ -0,0 +1,134 @@
+/*- 
+ * ============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.bpmn.infrastructure;
+
+import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
+import static com.github.tomakehurst.wiremock.client.WireMock.get;
+import static com.github.tomakehurst.wiremock.client.WireMock.put;
+import static com.github.tomakehurst.wiremock.client.WireMock.stubFor;
+import static com.github.tomakehurst.wiremock.client.WireMock.urlMatching;
+import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockAAIVfModule;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockDBUpdateVfModule;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfByIdWithDepth;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfByIdWithPriority;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetServiceInstance;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockNodeQueryServiceInstanceById;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetPserverByVnfId;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfsByVnfId;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockSetInMaintFlagByVnfId;
+import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.MockGetServiceResourcesCatalogData;
+import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.mockUpdateRequestDB;
+import static org.openecomp.mso.bpmn.mock.StubResponsePolicy.MockPolicySkip;
+import static org.openecomp.mso.bpmn.mock.StubResponseAPPC.MockAppcError;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+import org.camunda.bpm.engine.test.Deployment;
+import org.junit.Assert;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.openecomp.mso.bpmn.common.WorkflowTest;
+import org.openecomp.mso.bpmn.common.workflow.service.WorkflowResponse;
+import org.openecomp.mso.bpmn.mock.FileUtil;
+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;
+
+/**
+ * Unit test cases for RollbackVnf.bpmn
+ */
+public class RollbackVnfTest extends WorkflowTest {	
+
+	public RollbackVnfTest() throws IOException {
+		
+	}
+	
+	/**
+	 * Sunny day scenario.
+	 * 
+	 * @throws Exception
+	 */
+	@Test	
+
+	
+	@Deployment(resources = {		
+		"subprocess/RollbackVnf.bpmn",		
+		"subprocess/BuildingBlock/AppCClient.bpmn"
+		
+		})
+	public void sunnyDay() throws Exception {
+				
+		//logStart();
+		System.setProperty("mso.config.path", "src/test/resources");
+		AAIResourceUri path = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, "skask");
+		wireMockRule.stubFor(get(
+				urlPathEqualTo("/aai/v11" + path.build()))
+				.willReturn(
+					aResponse()
+					.withHeader("Content-Type", "application/json")
+					.withBodyFile("AAI/mockObject.json")
+					.withStatus(200)));		
+	
+		
+		MockNodeQueryServiceInstanceById("MIS%2F1604%2F0026%2FSW_INTERNET", "GenericFlows/getSIUrlByIdVipr.xml");		
+		MockGetGenericVnfByIdWithDepth("skask", 1, "VfModularity/GenericVnf.xml");		
+		MockAAIVfModule();			
+		MockGetGenericVnfsByVnfId("skask", "AAI/AAI_genericVnfsByVnfId.json", 200);
+		MockSetInMaintFlagByVnfId("skask", "AAI/AAI_genericVnfsByVnfId.json", 200);		
+		MockAppcError();		
+	
+		String businessKey = UUID.randomUUID().toString();
+		Map<String, Object> variables = setupVariablesSunnyDayVID();
+		
+		invokeSubProcess("RollbackVnf", businessKey,  variables);	
+		
+		// TODO add appropriate assertions
+
+		waitForProcessEnd(businessKey, 10000);
+		Assert.assertTrue(isProcessEnded(businessKey));
+	//	assertVariables("true", "true", "false", "true", "Success", null);
+		
+		//logEnd();
+	}
+	
+	// Active Scenario
+	private Map<String, Object> setupVariablesSunnyDayVID() {
+				Map<String, Object> variables = new HashMap<String, Object>();
+				
+				variables.put("msoRequestId", "testRequestId");				
+				variables.put("isDebugLogEnabled", "true");				
+				variables.put("vnfId", "skask");
+				variables.put("rollbackVnfStop", true);
+				variables.put("rollbackVnfLock", true);
+				variables.put("rollbackQuiesceTraffic", false);
+				variables.put("rollbackSetClosedLoopDisabledFlag", true);
+				variables.put("rollbackSetVnfInMaintenanceFlag", true);
+				variables.put("errorCode", "1005");					
+						
+				return variables;
+				
+			}
+	
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/SetupServiceDecompTest.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/SetupServiceDecompTest.java
new file mode 100644
index 0000000..264bf6e
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/SetupServiceDecompTest.java
@@ -0,0 +1,65 @@
+/*-
+ * ============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.bpmn.infrastructure;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+import org.camunda.bpm.engine.test.Deployment;
+import org.junit.Test;
+import org.openecomp.mso.bpmn.common.WorkflowTest;
+import org.openecomp.mso.bpmn.mock.FileUtil;
+
+public class SetupServiceDecompTest extends WorkflowTest {
+
+	private String input = FileUtil.readResourceFile("__files/CreateServiceInstance/SetupServiceDecompJson.json");
+
+	public SetupServiceDecompTest() throws IOException {
+	}
+
+	@Test
+	@Deployment(resources = {
+			"subprocess/CreateServiceInstanceV3.bpmn",
+			"subprocess/CreateServiceInstanceV3Rollback.bpmn",
+			"subprocess/SetRefactorServiceDecomp.bpmn"
+			})
+	public void sunnyDay() throws Exception {
+
+		logStart();
+
+		String businessKey = UUID.randomUUID().toString();
+
+		Map<String, Object> variables = new HashMap<String, Object>();
+		setupVariables(variables);
+		invokeSubProcess("SetRefactorServiceDecomp", businessKey, variables);
+		waitForProcessEnd(businessKey, 10000);
+		logEnd();
+	}
+
+	// Success Scenario
+	private void setupVariables(Map<String, Object> variables) {
+		variables.put("bpmnRequest", input);
+		variables.put("msoRequestId", "RaaDSITestRequestId-1");
+		variables.put("isDebugLogEnabled", "true");
+	}
+}
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/UpdateNetworkInstanceTest.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/UpdateNetworkInstanceTest.java
index 5b5e4e5..7a43bbd 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/UpdateNetworkInstanceTest.java
+++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/UpdateNetworkInstanceTest.java
@@ -33,6 +33,7 @@
 
 import org.camunda.bpm.engine.test.Deployment;
 import org.junit.Assert;
+import org.junit.Ignore;
 import org.junit.Rule;
 import org.junit.Test;
 
@@ -63,7 +64,7 @@
 	 */
 
 	@Test
-	//@Ignore
+	@Ignore // 1802 merge
 	@Deployment(resources = {"process/UpdateNetworkInstance.bpmn",
 							 "subprocess/DoUpdateNetworkInstance.bpmn",
 			                 "subprocess/FalloutHandler.bpmn",
@@ -81,8 +82,8 @@
 		mockSDNCAdapterTopology("UpdateNetworkV2mock/sdncUpdateNetworkTopologySimResponse.xml", "SvcAction>changeassign");
 		MockNetworkAdapterRestPut("UpdateNetworkV2/updateNetworkResponse_Success.xml", "49c86598-f766-46f8-84f8-8d1c1b10f9b4");
 		MockGetNetworkCloudRegion("CreateNetworkV2/cloudRegion25_AAIResponse_Success.xml", "RDM2WAGPLCP");
-		MockGetNetworkByIdWithDepth("49c86598-f766-46f8-84f8-8d1c1b10f9b4", "UpdateNetworkV2/updateNetwork_queryNetworkId_AAIResponse_Success.xml", "1");
-		MockPutNetworkIdWithDepth("UpdateNetworkV2/updateNetwork_updateContrail_AAIResponse_Success.xml", "49c86598-f766-46f8-84f8-8d1c1b10f9b4", "1");
+		MockGetNetworkByIdWithDepth("49c86598-f766-46f8-84f8-8d1c1b10f9b4", "UpdateNetworkV2/updateNetwork_queryNetworkId_AAIResponse_Success.xml", "all");
+		MockPutNetworkIdWithDepth("UpdateNetworkV2/updateNetwork_updateContrail_AAIResponse_Success.xml", "49c86598-f766-46f8-84f8-8d1c1b10f9b4", "all");
 		MockGetNetworkVpnBinding("UpdateNetworkV2/updateNetwork_queryVpnBinding_AAIResponse_Success.xml", "85f015d0-2e32-4c30-96d2-87a1a27f8017");
 		MockGetNetworkVpnBinding("UpdateNetworkV2/updateNetwork_queryVpnBinding_AAIResponse_Success.xml", "c980a6ef-3b88-49f0-9751-dbad8608d0a6");
 		MockGetNetworkPolicy("UpdateNetworkV2/updateNetwork_queryNetworkPolicy_AAIResponse_Success.xml", "cee6d136-e378-4678-a024-2cd15f0ee0cg");
@@ -113,7 +114,7 @@
 	}
 
 	@Test
-	//@Ignore
+	@Ignore // 1802 merge
 	@Deployment(resources = {"process/UpdateNetworkInstance.bpmn",
 			                 "subprocess/DoUpdateNetworkInstance.bpmn",
 			                 "subprocess/FalloutHandler.bpmn",
@@ -131,8 +132,8 @@
 		mockSDNCAdapterTopology("UpdateNetworkV2mock/sdncUpdateNetworkTopologySimResponse.xml", "SvcAction>changeassign");
 		MockNetworkAdapterRestPut("UpdateNetworkV2/updateNetworkResponse_Success.xml", "49c86598-f766-46f8-84f8-8d1c1b10f9b4");
 		MockGetNetworkCloudRegion("CreateNetworkV2/cloudRegion25_AAIResponse_Success.xml", "RDM2WAGPLCP");
-		MockGetNetworkByIdWithDepth("49c86598-f766-46f8-84f8-8d1c1b10f9b4", "UpdateNetworkV2/updateNetwork_queryNetworkId_AAIResponse_Success.xml", "1");
-		MockPutNetworkIdWithDepth("UpdateNetworkV2/updateNetwork_updateContrail_AAIResponse_Success.xml", "49c86598-f766-46f8-84f8-8d1c1b10f9b4", "1");
+		MockGetNetworkByIdWithDepth("49c86598-f766-46f8-84f8-8d1c1b10f9b4", "UpdateNetworkV2/updateNetwork_queryNetworkId_AAIResponse_Success.xml", "all");
+		MockPutNetworkIdWithDepth("UpdateNetworkV2/updateNetwork_updateContrail_AAIResponse_Success.xml", "49c86598-f766-46f8-84f8-8d1c1b10f9b4", "all");
 		MockGetNetworkVpnBinding("UpdateNetworkV2/updateNetwork_queryVpnBinding_AAIResponse_Success.xml", "85f015d0-2e32-4c30-96d2-87a1a27f8017");
 		MockGetNetworkVpnBinding("UpdateNetworkV2/updateNetwork_queryVpnBinding_AAIResponse_Success.xml", "c980a6ef-3b88-49f0-9751-dbad8608d0a6");
 		MockGetNetworkPolicy("UpdateNetworkV2/updateNetwork_queryNetworkPolicy_AAIResponse_Success.xml", "cee6d136-e378-4678-a024-2cd15f0ee0cg");
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/UpdateVnfInfraTest.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/UpdateVnfInfraTest.java
index 391fc23..36e9f2b 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/UpdateVnfInfraTest.java
+++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/UpdateVnfInfraTest.java
@@ -26,6 +26,7 @@
 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfByIdWithPriority;
 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetServiceInstance;
 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockNodeQueryServiceInstanceById;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetDefaultCloudRegionByCloudRegionId;
 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetPserverByVnfId;
 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfsByVnfId;
 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPatchGenericVnf;
@@ -76,9 +77,10 @@
 	 * @throws Exception
 	 */
 	@Test	
-	@Ignore // IGNORED FOR 1710 MERGE TO ONAP
+	@Ignore // 1802 merge
 	@Deployment(resources = {
-		"process/UpdateVnfInfra.bpmn",		
+		"process/UpdateVnfInfra.bpmn",
+		"subprocess/RollbackVnf.bpmn",
 		"subprocess/DoUpdateVfModule.bpmn",
 		"subprocess/DoUpdateVnfAndModules.bpmn",
 		"subprocess/PrepareUpdateAAIVfModule.bpmn",
@@ -91,7 +93,8 @@
 		"subprocess/FalloutHandler.bpmn",
 		"subprocess/BuildingBlock/DecomposeService.bpmn",
 		"subprocess/BuildingBlock/RainyDayHandler.bpmn",
-		"subprocess/BuildingBlock/ManualHandling.bpmn"
+		"subprocess/BuildingBlock/ManualHandling.bpmn",
+		"subprocess/BuildingBlock/AppCClient.bpmn"
 		
 		})
 	public void sunnyDay() throws Exception {
@@ -102,7 +105,9 @@
 		MockGetServiceInstance("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET", "GenericFlows/getServiceInstance.xml");
 		//MockGetGenericVnfById_404("testVnfId");
 		MockGetServiceResourcesCatalogData("995256d2-5a33-55df-13ab-12abad84e7ff", "1.0", "VIPR/getCatalogServiceResourcesDataForUpdateVnfInfra.json");
+		MockGetServiceResourcesCatalogData("995256d2-5a33-55df-13ab-12abad84e7ff", "VIPR/getCatalogServiceResourcesDataForUpdateVnfInfra.json");
 		MockGetGenericVnfByIdWithDepth("skask", 1, "VfModularity/GenericVnf.xml");
+		MockGetDefaultCloudRegionByCloudRegionId("mdt1", "AAI/AAI_defaultCloudRegionByCloudRegionId.json", 200);
 		MockPutGenericVnf(".*");
 		MockAAIVfModule();
 		MockPatchGenericVnf("skask");
@@ -114,7 +119,7 @@
 		MockDBUpdateVfModule();	
 		MockGetPserverByVnfId("skask", "AAI/AAI_pserverByVnfId.json", 200);
 		MockGetGenericVnfsByVnfId("skask", "AAI/AAI_genericVnfsByVnfId.json", 200);
-		MockSetInMaintFlagByVnfId("skask", 200);
+		MockSetInMaintFlagByVnfId("skask", "AAI/AAI_genericVnfsByVnfId.json", 200);
 		MockPolicySkip();
 		
 		mockSDNCAdapter("VfModularity/StandardSDNCSynchResponse.xml");
@@ -153,13 +158,7 @@
 	// Active Scenario
 	private Map<String, Object> setupVariablesSunnyDayVID() {
 				Map<String, Object> variables = new HashMap<>();
-				//try {
-				//	variables.put("bpmnRequest", FileUtil.readResourceFile("__files/CreateVfModule_VID_request.json"));
-				//}
-				//catch (Exception e) {
-					
-				//}
-				//variables.put("mso-request-id", "testRequestId");
+				
 				variables.put("requestId", "testRequestId");				
 				variables.put("isDebugLogEnabled", "true");				
 				variables.put("serviceInstanceId", "f70e927b-6087-4974-9ef8-c5e4d5847ca4");
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/VnfConfigUpdateTest.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/VnfConfigUpdateTest.java
new file mode 100644
index 0000000..1a1e377
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/VnfConfigUpdateTest.java
@@ -0,0 +1,146 @@
+/*- 
+ * ============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.bpmn.infrastructure;
+
+import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
+import static com.github.tomakehurst.wiremock.client.WireMock.get;
+import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockAAIVfModule;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockDBUpdateVfModule;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfByIdWithDepth;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetServiceInstance;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockNodeQueryServiceInstanceById;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetPserverByVnfId;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfsByVnfId;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockSetInMaintFlagByVnfId;
+import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.MockGetServiceResourcesCatalogData;
+import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.mockUpdateRequestDB;
+import static org.openecomp.mso.bpmn.mock.StubResponsePolicy.MockPolicySkip;
+import static org.openecomp.mso.bpmn.mock.StubResponseAPPC.MockAppcError;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+import org.camunda.bpm.engine.test.Deployment;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.openecomp.mso.bpmn.common.WorkflowTest;
+import org.openecomp.mso.bpmn.common.workflow.service.WorkflowResponse;
+import org.openecomp.mso.bpmn.mock.FileUtil;
+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;
+
+/**
+ * Unit test cases for VnfConfigUpdate.bpmn
+ */
+public class VnfConfigUpdateTest extends WorkflowTest {	
+
+	public VnfConfigUpdateTest() throws IOException {
+		
+	}
+	
+	/**
+	 * Sunny day scenario.
+	 * 
+	 * @throws Exception
+	 */
+	@Test	
+	@Ignore // 1802 merge
+	@Deployment(resources = {
+		"process/VnfConfigUpdate.bpmn",
+		"subprocess/RollbackVnf.bpmn",
+		"subprocess/CompleteMsoProcess.bpmn",
+		"subprocess/FalloutHandler.bpmn",		
+		"subprocess/BuildingBlock/RainyDayHandler.bpmn",
+		"subprocess/BuildingBlock/ManualHandling.bpmn",
+		"subprocess/BuildingBlock/AppCClient.bpmn"
+		
+		})
+	public void sunnyDay() throws Exception {
+				
+		logStart();
+		
+		System.setProperty("mso.config.path", "src/test/resources");
+		AAIResourceUri path = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, "comx9906v");
+		wireMockRule.stubFor(get(
+				urlPathEqualTo("/aai/v11" + path.build()))
+				.willReturn(
+					aResponse()
+					.withHeader("Content-Type", "application/json")
+					.withBodyFile("AAI/mockObject.json")
+					.withStatus(200)));
+		
+		
+		MockNodeQueryServiceInstanceById("MIS%2F1604%2F0026%2FSW_INTERNET", "GenericFlows/getSIUrlByIdVipr.xml");
+		MockGetServiceInstance("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET", "GenericFlows/getServiceInstance.xml");
+		//MockGetGenericVnfById_404("testVnfId");		
+		MockGetGenericVnfByIdWithDepth("comx9906v", 1, "AAI/AAI_genericVnfsByVnfIdVnfConfig.json");			
+		MockAAIVfModule();		
+		MockDBUpdateVfModule();	
+		MockGetPserverByVnfId("comx9906v", "AAI/AAI_pserverByVnfId.json", 200);
+		MockGetGenericVnfsByVnfId("comx9906v", "AAI/AAI_genericVnfsByVnfIdVnfConfig.json", 200);
+		MockSetInMaintFlagByVnfId("comx9906v", "AAI/AAI_genericVnfsByVnfIdVnfConfig.json", 200);
+		MockPolicySkip();
+		MockAppcError();		
+		mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
+		
+		String businessKey = UUID.randomUUID().toString();
+		String updaetVnfRequest =
+			FileUtil.readResourceFile("__files/InfrastructureFlows/ConfigVnf_VID_request.json");
+		
+		Map<String, Object> variables = setupVariablesSunnyDayVID();
+		
+		
+		TestAsyncResponse asyncResponse = invokeAsyncProcess("VnfConfigUpdate",
+			"v1", businessKey, updaetVnfRequest, variables);
+		
+		WorkflowResponse response = receiveResponse(businessKey, asyncResponse, 10000);
+		
+		String responseBody = response.getResponse();
+		System.out.println("Workflow (Synch) Response:\n" + responseBody);		
+	
+		// TODO add appropriate assertions
+
+		waitForProcessEnd(businessKey, 1000000);
+		checkVariable(businessKey, "VnfConfigUpdateSuccessIndicator", true);
+		
+		logEnd();
+	}
+	
+	// Active Scenario
+	private Map<String, Object> setupVariablesSunnyDayVID() {
+				Map<String, Object> variables = new HashMap<String, Object>();
+				
+				variables.put("requestId", "testRequestId");				
+				variables.put("isDebugLogEnabled", "true");				
+				variables.put("serviceInstanceId", "f70e927b-6087-4974-9ef8-c5e4d5847ca4");
+				variables.put("vnfId", "comx9906v");
+				variables.put("vnfType", "vSAMP12");					
+				variables.put("serviceType", "MOG");	
+						
+				return variables;
+				
+			}
+	
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/VnfInPlaceUpdateTest.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/VnfInPlaceUpdateTest.java
new file mode 100644
index 0000000..17c4819
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/VnfInPlaceUpdateTest.java
@@ -0,0 +1,159 @@
+/*- 
+ * ============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.bpmn.infrastructure;
+
+import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
+import static com.github.tomakehurst.wiremock.client.WireMock.get;
+import static com.github.tomakehurst.wiremock.client.WireMock.put;
+import static com.github.tomakehurst.wiremock.client.WireMock.stubFor;
+import static com.github.tomakehurst.wiremock.client.WireMock.urlMatching;
+import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockAAIVfModule;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockDBUpdateVfModule;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfByIdWithDepth;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfByIdWithPriority;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetServiceInstance;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockNodeQueryServiceInstanceById;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetPserverByVnfId;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfsByVnfId;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockSetInMaintFlagByVnfId;
+import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetDefaultCloudRegionByCloudRegionId;
+import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.MockGetServiceResourcesCatalogData;
+import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.mockUpdateRequestDB;
+import static org.openecomp.mso.bpmn.mock.StubResponsePolicy.MockPolicySkip;
+import static org.openecomp.mso.bpmn.mock.StubResponseAPPC.MockAppcError;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+import org.camunda.bpm.engine.test.Deployment;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.openecomp.mso.bpmn.common.WorkflowTest;
+import org.openecomp.mso.bpmn.common.workflow.service.WorkflowResponse;
+import org.openecomp.mso.bpmn.mock.FileUtil;
+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;
+
+/**
+ * Unit test cases for VnfInPlaceUpdate.bpmn
+ */
+public class VnfInPlaceUpdateTest extends WorkflowTest {	
+
+	public VnfInPlaceUpdateTest() throws IOException {
+		
+	}
+	
+	/**
+	 * Sunny day scenario.
+	 * 
+	 * @throws Exception
+	 */
+	@Test	
+
+	
+	@Deployment(resources = {
+		"process/VnfInPlaceUpdate.bpmn",		
+		"subprocess/CompleteMsoProcess.bpmn",
+		"subprocess/FalloutHandler.bpmn",		
+		"subprocess/BuildingBlock/RainyDayHandler.bpmn",
+		"subprocess/BuildingBlock/ManualHandling.bpmn",
+		"subprocess/BuildingBlock/AppCClient.bpmn"
+		
+		})
+	public void sunnyDay() throws Exception {
+				
+		logStart();
+		System.setProperty("mso.config.path", "src/test/resources");
+		AAIResourceUri path = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, "skask");
+		wireMockRule.stubFor(get(
+				urlPathEqualTo("/aai/v11" + path.build()))
+				.willReturn(
+					aResponse()
+					.withHeader("Content-Type", "application/json")
+					.withBodyFile("AAI/mockObject.json")
+					.withStatus(200)));
+		
+		//
+		
+		//AAIResourceUri path1 = AAIUriFactory.createResourceUri(AAIObjectType.CUSTOM_QUERY).queryParam("format", "RESOURCE");
+		//wireMockRule.stubFor(put(
+		//		urlMatching("/aai/v10/query/pservers-fromVnf"))
+		//		.willReturn(
+		//			aResponse()
+		//			.withHeader("Content-Type", "application/json")
+		//			.withBodyFile("AAI/AAI_pserversByVnfId.json")
+		//			.withStatus(200)));
+		
+		MockNodeQueryServiceInstanceById("MIS%2F1604%2F0026%2FSW_INTERNET", "GenericFlows/getSIUrlByIdVipr.xml");
+		MockGetServiceInstance("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET", "GenericFlows/getServiceInstance.xml");
+		//MockGetGenericVnfById_404("testVnfId");		
+		MockGetGenericVnfByIdWithDepth("skask", 1, "AAI/AAI_genericVnfsByVnfId.json");		
+		MockAAIVfModule();		
+		MockDBUpdateVfModule();	
+		MockGetPserverByVnfId("skask", "AAI/AAI_pserverByVnfId.json", 200);		
+		MockSetInMaintFlagByVnfId("skask", "AAI/AAI_genericVnfsByVnfId.json", 200);
+		MockGetGenericVnfsByVnfId("skask", "AAI/AAI_genericVnfsByVnfId.json", 200);
+		MockGetDefaultCloudRegionByCloudRegionId("mdt1", "AAI/AAI_defaultCloudRegionByCloudRegionId.json", 200);
+		MockPolicySkip();
+		MockAppcError();		
+		mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
+		
+		String businessKey = UUID.randomUUID().toString();
+		String updaetVnfRequest =
+			FileUtil.readResourceFile("__files/InfrastructureFlows/VnfInPlaceUpdate_VID_request.json");
+		
+		Map<String, Object> variables = setupVariablesSunnyDayVID();
+		
+		
+		TestAsyncResponse asyncResponse = invokeAsyncProcess("VnfInPlaceUpdate",
+			"v1", businessKey, updaetVnfRequest, variables);
+		
+		WorkflowResponse response = receiveResponse(businessKey, asyncResponse, 100000);
+		
+		String responseBody = response.getResponse();
+		System.out.println("Workflow (Synch) Response:\n" + responseBody);		
+	
+		// TODO add appropriate assertions
+
+		waitForProcessEnd(businessKey, 100000);
+		checkVariable(businessKey, "VnfInPlaceUpdateSuccessIndicator", true);
+		
+		logEnd();
+	}
+	
+	// Active Scenario
+	private Map<String, Object> setupVariablesSunnyDayVID() {
+				Map<String, Object> variables = new HashMap<String, Object>();
+				
+				variables.put("requestId", "testRequestId");				
+				variables.put("isDebugLogEnabled", "true");				
+				variables.put("serviceInstanceId", "f70e927b-6087-4974-9ef8-c5e4d5847ca4");
+				variables.put("vnfId", "skask");			
+						
+				return variables;
+				
+			}
+	
+}
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/vcpe/CreateVcpeResCustServiceTest.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/vcpe/CreateVcpeResCustServiceTest.java
index 1b3bfa8..d9534f3 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/vcpe/CreateVcpeResCustServiceTest.java
+++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/vcpe/CreateVcpeResCustServiceTest.java
@@ -40,6 +40,7 @@
 import java.util.UUID;
 
 import org.camunda.bpm.engine.test.Deployment;
+import org.junit.Ignore;
 import org.junit.Test;
 import org.openecomp.mso.bpmn.common.BPMNUtil;
 import org.openecomp.mso.bpmn.mock.FileUtil;
@@ -66,6 +67,7 @@
 	}
 	
 	@Test
+	@Ignore // 1802 merge
 	@Deployment(resources = {
 			"process/CreateVcpeResCustService.bpmn",
 			"subprocess/SDNCAdapterV1.bpmn",
@@ -142,6 +144,7 @@
 	}
 	
 	@Test
+	@Ignore // 1802 merge
 	@Deployment(resources = {
 			"process/CreateVcpeResCustService.bpmn",
 			"subprocess/SDNCAdapterV1.bpmn",
@@ -208,6 +211,7 @@
 	}
 	
 	@Test
+	@Ignore // 1802 merge
 	@Deployment(resources = {
 			"process/CreateVcpeResCustService.bpmn",
 			"subprocess/SDNCAdapterV1.bpmn",
@@ -275,6 +279,7 @@
 	}
 	
 	@Test
+	@Ignore // 1802 merge
 	@Deployment(resources = {
 			"process/CreateVcpeResCustService.bpmn",
 			"subprocess/SDNCAdapterV1.bpmn",
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/AAI/AAI_defaultCloudRegionByCloudRegionId.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/AAI/AAI_defaultCloudRegionByCloudRegionId.json
new file mode 100644
index 0000000..364afed
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/AAI/AAI_defaultCloudRegionByCloudRegionId.json
@@ -0,0 +1,12 @@
+{ 
+   "cloud-owner": "att-aic",
+   "cloud-region-id": "mdt1",
+   "cloud-type": "openstack",
+   "owner-defined-type": "lcp",
+   "cloud-region-version": "aic3.0",
+   "identity-url": "https://identity-aic.mdt1.cci.att.com:5000/v2.0",
+   "cloud-zone": "z1",
+   "complex-name": "c1",
+   "sriov-automation": false,
+   "resource-version": "1503072127235"
+}
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/AAI/AAI_genericVnfsByVnfId.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/AAI/AAI_genericVnfsByVnfId.json
index c7361f8..dd352fa 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/AAI/AAI_genericVnfsByVnfId.json
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/AAI/AAI_genericVnfsByVnfId.json
@@ -14,7 +14,7 @@
   "heat-stack-id": "example-heat-stack-id-val-96869",
   "mso-catalog-key": "example-mso-catalog-key-val-30721",
   "management-option": "example-management-option-val-61927",
-  "ipv4-oam-address": "example-ipv4-oam-address-val-23494",
+  "ipv4-oam-address": "135.25.10.14",
   "ipv4-loopback0-address": "example-ipv4-loopback0-address-val-87072",
   "nm-lan-v6-address": "example-nm-lan-v6-address-val-91063",
   "management-v6-address": "example-management-v6-address-val-80466",
@@ -45,6 +45,112 @@
   "nf-naming-code": "example-nf-naming-code-val-25118",
   "selflink": "example-selflink-val-68404",
   
+  "relationship-list": {"relationship":    [
+            {
+         "related-to": "service-instance",
+         "relationship-label": "org.onap.relationships.inventory.ComposedOf",
+         "related-link": "/aai/v12/business/customers/customer/e433710f-9217-458d-a79d-1c7aff376d89/service-subscriptions/service-subscription/VIRTUAL%20USP/service-instances/service-instance/2c323333-af4f-4849-af03-c862c0e93e3b",
+         "relationship-data":          [
+                        {
+               "relationship-key": "customer.global-customer-id",
+               "relationship-value": "e433710f-9217-458d-a79d-1c7aff376d89"
+            },
+                        {
+               "relationship-key": "service-subscription.service-type",
+               "relationship-value": "VIRTUAL USP"
+            },
+                        {
+               "relationship-key": "service-instance.service-instance-id",
+               "relationship-value": "2c323333-af4f-4849-af03-c862c0e93e3b"
+            }
+         ],
+         "related-to-property": [         {
+            "property-key": "service-instance.service-instance-name",
+            "property-value": "kjhgfd1"
+         }]
+      },
+            {
+         "related-to": "vserver",
+         "relationship-label": "tosca.relationships.HostedOn",
+         "related-link": "/aai/v12/cloud-infrastructure/cloud-regions/cloud-region/att-aic/mtn23a/tenants/tenant/e6beab145f6b49098277ac163ac1b4f3/vservers/vserver/1b3f44e5-d96d-4aac-bd9a-310e8cfb0af5",
+         "relationship-data":          [
+                        {
+               "relationship-key": "cloud-region.cloud-owner",
+               "relationship-value": "att-aic"
+            },
+                        {
+               "relationship-key": "cloud-region.cloud-region-id",
+               "relationship-value": "mtn23a"
+            },
+                        {
+               "relationship-key": "tenant.tenant-id",
+               "relationship-value": "e6beab145f6b49098277ac163ac1b4f3"
+            },
+                        {
+               "relationship-key": "vserver.vserver-id",
+               "relationship-value": "1b3f44e5-d96d-4aac-bd9a-310e8cfb0af5"
+            }
+         ],
+         "related-to-property": [         {
+            "property-key": "vserver.vserver-name",
+            "property-value": "comx5000vm003"
+         }]
+      },
+            {
+         "related-to": "vserver",
+         "relationship-label": "tosca.relationships.HostedOn",
+         "related-link": "/aai/v12/cloud-infrastructure/cloud-regions/cloud-region/att-aic/mtn23a/tenants/tenant/e6beab145f6b49098277ac163ac1b4f3/vservers/vserver/14551849-1e70-45cd-bc5d-a256d49548a2",
+         "relationship-data":          [
+                        {
+               "relationship-key": "cloud-region.cloud-owner",
+               "relationship-value": "att-aic"
+            },
+                        {
+               "relationship-key": "cloud-region.cloud-region-id",
+               "relationship-value": "mtn23a"
+            },
+                        {
+               "relationship-key": "tenant.tenant-id",
+               "relationship-value": "e6beab145f6b49098277ac163ac1b4f3"
+            },
+                        {
+               "relationship-key": "vserver.vserver-id",
+               "relationship-value": "14551849-1e70-45cd-bc5d-a256d49548a2"
+            }
+         ],
+         "related-to-property": [         {
+            "property-key": "vserver.vserver-name",
+            "property-value": "comx5000vm002"
+         }]
+      },
+            {
+         "related-to": "vserver",
+         "relationship-label": "tosca.relationships.HostedOn",
+         "related-link": "/aai/v12/cloud-infrastructure/cloud-regions/cloud-region/att-aic/mtn23a/tenants/tenant/e6beab145f6b49098277ac163ac1b4f3/vservers/vserver/48bd7f11-408f-417c-b834-b41c1b98f7d7",
+         "relationship-data":          [
+                        {
+               "relationship-key": "cloud-region.cloud-owner",
+               "relationship-value": "att-aic"
+            },
+                        {
+               "relationship-key": "cloud-region.cloud-region-id",
+               "relationship-value": "mtn23a"
+            },
+                        {
+               "relationship-key": "tenant.tenant-id",
+               "relationship-value": "e6beab145f6b49098277ac163ac1b4f3"
+            },
+                        {
+               "relationship-key": "vserver.vserver-id",
+               "relationship-value": "48bd7f11-408f-417c-b834-b41c1b98f7d7"
+            }
+         ],
+         "related-to-property": [         {
+            "property-key": "vserver.vserver-name",
+            "property-value": "comx5000vm001"
+         }]
+      }
+   ]},  
   
  
  
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/AAI/mockObject.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/AAI/mockObject.json
new file mode 100644
index 0000000..2f97b47
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/AAI/mockObject.json
@@ -0,0 +1,10 @@
+{
+	"id" : "something",
+	"resource-version" : "1234",
+	"plural" : {
+		"singular" : [{
+			"id" : "something2",
+			"resource-version" : "5678"
+		}]
+	}
+}
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/APPC/appc_error.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/APPC/appc_error.json
new file mode 100644
index 0000000..e28878d
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/APPC/appc_error.json
@@ -0,0 +1,21 @@
+{
+  "output": {
+    "status": {
+      "code": 200,
+      "message": "RESULT_MESSAGE"
+    },
+    "common-header": {
+      "api-ver": "API_VERSION",
+      "request-id": "ECOMP_REQUEST_ID",
+      "originator-id": "ECOMP_SYSTEM_ID",
+      "sub-request-id": "ECOMP_SUBREQUEST_ID",
+      "timestamp": "2016-08-08T23:09:00.11Z",
+      "flags": {
+        "ttl": 1000,
+        "force": "TRUE",
+        "mode": "EXCLUSIVE"
+      }
+    },
+    "locked": "TRUE"
+  }
+}
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/CreateNetworkV2/createNetworkResponse_500.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/CreateNetworkV2/createNetworkResponse_500.xml
index c67e980..07730e2 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/CreateNetworkV2/createNetworkResponse_500.xml
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/CreateNetworkV2/createNetworkResponse_500.xml
@@ -2,77 +2,79 @@
 	<head>
 		<title>JBoss Web/7.2.2.Final-redhat-1 - JBWEB000064: Error report
 		</title>
-		<style><!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;}
-				H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;}
-				H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;}
-				BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;}
-				B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;}
-				P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A
+		<style><!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} 
+				H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} 
+				H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} 
+				BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} 
+				B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} 
+				P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A 
 				{color : black;}A.name {color : black;}HR {color : #525D76;} -->
 		</style>
 	</head>
 	<body>
 		<h1>JBWEB000065: HTTP Status 500 - java.lang.NullPointerException</h1>
-		<HR size="1" noshade="noshade">
-			<p>
-				<b>JBWEB000309: type</b>
-				JBWEB000066: Exception report
-			</p>
-			<p>
-				<b>JBWEB000068: message</b>
-				<u>java.lang.NullPointerException</u>
-			</p>
-			<p>
-				<b>JBWEB000069: description</b>
-				<u>JBWEB000145: The server encountered an internal error that
-					prevented it from fulfilling this request.</u>
-			</p>
-			<p>
-				<b>JBWEB000070: exception</b>
-				<pre>org.jboss.resteasy.spi.UnhandledException:
-					java.lang.NullPointerException
-					org.jboss.resteasy.core.SynchronousDispatcher.handleApplicationException(SynchronousDispatcher.java:365)
-					org.jboss.resteasy.core.SynchronousDispatcher.handleException(SynchronousDispatcher.java:233)
-					org.jboss.resteasy.core.SynchronousDispatcher.handleInvokerException(SynchronousDispatcher.java:209)
-					org.jboss.resteasy.core.SynchronousDispatcher.getResponse(SynchronousDispatcher.java:557)
-					org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:524)
-					org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:126)
-					org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:208)
-					org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:55)
-					org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:50)
-					javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
-					org.openecomp.mso.logger.LogFilter.doFilter(LogFilter.java:35)
-				</pre>
-			</p>
-			<p>
-				<b>JBWEB000071: root cause</b>
-				<pre>java.lang.NullPointerException
-					org.openecomp.mso.adapters.network.NetworkAdapterRest$CreateNetworkVolumesTask.run(NetworkAdapterRest.java:128)
-					org.openecomp.mso.adapters.network.NetworkAdapterRest.createNetwork(NetworkAdapterRest.java:64)
-					sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
-					sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
-					sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
-					java.lang.reflect.Method.invoke(Method.java:606)
-					org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:167)
-					org.jboss.resteasy.core.ResourceMethod.invokeOnTarget(ResourceMethod.java:269)
-					org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:227)
-					org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:216)
-					org.jboss.resteasy.core.SynchronousDispatcher.getResponse(SynchronousDispatcher.java:542)
-					org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:524)
-					org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:126)
-					org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:208)
-					org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:55)
-					org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:50)
-					javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
-					org.openecomp.mso.logger.LogFilter.doFilter(LogFilter.java:35)
-				</pre>
-			</p>
-			<p>
-				<b>JBWEB000072: note</b>
-				<u>JBWEB000073: The full stack trace of the root cause is available
-					in the JBoss Web/7.2.2.Final-redhat-1 logs.</u>
-			</p>
-			<HR size="1" noshade="noshade">
-				<h3>JBoss Web/7.2.2.Final-redhat-1</h3>
+		<HR size="1" noshade="noshade" />
+		<p>
+			<b>JBWEB000309: type</b>
+			JBWEB000066: Exception report
+		</p>
+		<p>
+			<b>JBWEB000068: message</b>
+			<u>java.lang.NullPointerException</u>
+		</p>
+		<p>
+			<b>JBWEB000069: description</b>
+			<u>JBWEB000145: The server encountered an internal error that
+				prevented it from fulfilling this request.
+			</u>
+		</p>
+		<p>
+			<b>JBWEB000070: exception</b>
+			<pre>org.jboss.resteasy.spi.UnhandledException:
+				java.lang.NullPointerException
+				org.jboss.resteasy.core.SynchronousDispatcher.handleApplicationException(SynchronousDispatcher.java:365)
+				org.jboss.resteasy.core.SynchronousDispatcher.handleException(SynchronousDispatcher.java:233)
+				org.jboss.resteasy.core.SynchronousDispatcher.handleInvokerException(SynchronousDispatcher.java:209)
+				org.jboss.resteasy.core.SynchronousDispatcher.getResponse(SynchronousDispatcher.java:557)
+				org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:524)
+				org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:126)
+				org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:208)
+				org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:55)
+				org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:50)
+				javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
+				org.openecomp.mso.logger.LogFilter.doFilter(LogFilter.java:35)
+			</pre>
+		</p>
+		<p>
+			<b>JBWEB000071: root cause</b>
+			<pre>java.lang.NullPointerException
+				org.openecomp.mso.adapters.network.NetworkAdapterRest$CreateNetworkVolumesTask.run(NetworkAdapterRest.java:128)
+				org.openecomp.mso.adapters.network.NetworkAdapterRest.createNetwork(NetworkAdapterRest.java:64)
+				sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+				sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
+				sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+				java.lang.reflect.Method.invoke(Method.java:606)
+				org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:167)
+				org.jboss.resteasy.core.ResourceMethod.invokeOnTarget(ResourceMethod.java:269)
+				org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:227)
+				org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:216)
+				org.jboss.resteasy.core.SynchronousDispatcher.getResponse(SynchronousDispatcher.java:542)
+				org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:524)
+				org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:126)
+				org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:208)
+				org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:55)
+				org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:50)
+				javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
+				org.openecomp.mso.logger.LogFilter.doFilter(LogFilter.java:35)
+			</pre>
+		</p>
+		<p>
+			<b>JBWEB000072: note</b>
+			<u>JBWEB000073: The full stack trace of the root cause is available
+				in the JBoss Web/7.2.2.Final-redhat-1 logs.
+			</u>
+		</p>
+		<HR size="1" noshade="noshade" />
+		<h3>JBoss Web/7.2.2.Final-redhat-1</h3>
 	</body>
 </html>
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/CreateNetworkV2/createNetwork_queryNetworkId_AAIResponse_Success.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/CreateNetworkV2/createNetwork_queryNetworkId_AAIResponse_Success.xml
index 59deca9..6e33a53 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/CreateNetworkV2/createNetwork_queryNetworkId_AAIResponse_Success.xml
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/CreateNetworkV2/createNetwork_queryNetworkId_AAIResponse_Success.xml
@@ -33,6 +33,21 @@
                <orchestration-status>pending-create</orchestration-status>
                <dhcp-enabled>true</dhcp-enabled>
    	  		   <subnet-name>subnetName</subnet-name>
+	  		   <ip-assignment-direction>true</ip-assignment-direction>   	  		   
+	  		   <host-routes>
+                 <host-route>
+                   <host-route-id>string</host-route-id>
+                   <route-prefix>192.10.16.0/24</route-prefix>
+                   <next-hop>192.10.16.100/24</next-hop>
+                   <next-hop-type>ip-address</next-hop-type> 
+                 </host-route>
+                 <host-route>
+                  <host-route-id>string</host-route-id>
+                  <route-prefix>192.110.17.0/24</route-prefix>
+                  <next-hop>192.110.17.110/24</next-hop>
+                  <next-hop-type>ip-address</next-hop-type>
+                 </host-route>
+               </host-routes>   	  		   
                <relationship-list/>
             </subnet>
          </subnets>
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/CreateNetworkV2/createNetwork_queryVpnBindingList_AAIResponse_Success.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/CreateNetworkV2/createNetwork_queryVpnBindingList_AAIResponse_Success.xml
new file mode 100644
index 0000000..d1b7ea7
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/CreateNetworkV2/createNetwork_queryVpnBindingList_AAIResponse_Success.xml
@@ -0,0 +1,57 @@
+<rest:RESTResponse xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd"
+                   statusCode="200">
+   <rest:headers>
+      <rest:header name="Transfer-Encoding" value="chunked"/>
+      <rest:header name="Date" value="Mon,14 Mar 2016 20:53:33 GMT"/>
+      <rest:header name="Expires" value="Thu,01 Jan 1970 00:00:00 UTC"/>
+      <rest:header name="X-AAI-TXID"
+                   value="mtcnjv9aaas01.mtcnj.aic.cip.com-20160314-20:53:33:487-134392"/>
+      <rest:header name="Content-Type" value="application/xml"/>
+      <rest:header name="Server" value="Apache-Coyote/1.1"/>
+      <rest:header name="Cache-Control" value="private"/>
+   </rest:headers>
+   <rest:payload contentType="text/xml">
+      <vpn-binding xmlns="http://org.openecomp.aai.inventory/v8">
+         <vpn-id>9a7b327d9-287aa00-82c4b0-105757</vpn-id>
+         <vpn-name>GN_EVPN_Test</vpn-name>
+         <route-targets>
+           <route-target>
+             <global-route-target>13979:105708</global-route-target>
+             <route-target-role>EXPORT</route-target-role>
+             <resource-version>1504025599510</resource-version>
+           </route-target>
+           <route-target>
+             <global-route-target>13979:105707</global-route-target>
+             <route-target-role>IMPORT</route-target-role>
+             <resource-version>1504025599519</resource-version>
+           </route-target>           
+         </route-targets>
+         <relationship-list>
+            <relationship>
+               <related-to>l3-network</related-to>
+               <related-link>https://aai-app-e2e.test.com:8443/aai/v8/network/l3-networks/l3-network/689ec39e-c5fc-4462-8db2-4f760763ad28/</related-link>
+               <relationship-data>
+                  <relationship-key>l3-network.network-id</relationship-key>
+                  <relationship-value>689ec39e-c5fc-4462-8db2-4f760763ad28</relationship-value>
+               </relationship-data>
+            </relationship>
+            <relationship>
+               <related-to>l3-network</related-to>
+               <related-link>https://aai-app-e2e.test.com:8443/aai/v8/network/l3-networks/l3-network/1a49396b-19b3-40a4-8792-aa2fbd0f0704/</related-link>
+               <relationship-data>
+                  <relationship-key>l3-network.network-id</relationship-key>
+                  <relationship-value>1a49396b-19b3-40a4-8792-aa2fbd0f0704</relationship-value>
+               </relationship-data>
+            </relationship>
+            <relationship>
+               <related-to>l3-network</related-to>
+               <related-link>https://aai-app-e2e.test.com:8443/aai/v8/network/l3-networks/l3-network/774f3329-3c83-4771-86c7-9e6207cd50fd/</related-link>
+               <relationship-data>
+                  <relationship-key>l3-network.network-id</relationship-key>
+                  <relationship-value>774f3329-3c83-4771-86c7-9e6207cd50fd</relationship-value>
+               </relationship-data>
+            </relationship>
+         </relationship-list>
+      </vpn-binding>
+   </rest:payload>
+</rest:RESTResponse>
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/CreateServiceInstance/DoCreateServiceInstanceInput.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/CreateServiceInstance/DoCreateServiceInstanceInput.json
new file mode 100644
index 0000000..0d8a22c
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/CreateServiceInstance/DoCreateServiceInstanceInput.json
@@ -0,0 +1,42 @@
+{
+"requestDetails": {
+"modelInfo": {
+"modelType": "service",
+"modelInvariantId": "ff3514e3-5a33-55df-13ab-12abad84e7ff",
+"modelVersionId": "fe6985cd-ea33-3346-ac12-ab121484a3fe",
+"modelName": "Test",
+"modelVersion": "1.0"
+},
+"cloudConfiguration": {
+"lcpCloudRegionId": "mdt1",
+"tenantId": "88a6ca3ee0394ade9403f075db23167e"
+},
+"owningEntity": {
+"owningEntityId": "a",
+"owningEntityName": "a"
+},
+"project": {
+"projectName": "temp project"
+},
+"subscriberInfo": {
+"globalSubscriberId": "some subscriber id",
+"subscriberName": "some subscriber name"
+},
+"requestInfo": {
+"productFamilyId":"a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb",
+"source": "VID",
+"suppressRollback": true,
+"requestorId": "az2016"
+},
+"requestParameters": {
+"subscriptionServiceType": "MOG",
+"aLaCarte": false,
+"userParams": [
+{
+"name": "someUserParam",
+"value": "someValue"
+}
+]
+}
+}
+}
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/CreateServiceInstance/SetupServiceDecompJson.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/CreateServiceInstance/SetupServiceDecompJson.json
new file mode 100644
index 0000000..c2cc687
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/CreateServiceInstance/SetupServiceDecompJson.json
@@ -0,0 +1,33 @@
+{
+"requestDetails": {
+	"serviceInstance":{
+		"serviceInstanceId": "MSORefactorTest1",
+        "serviceInstanceName":  "bensServiceInstance",
+        "serviceType":          "refactorServiceType",
+		"serviceRole":          "abc",
+		"modelInvariantUuid":   "9647dfc4-2083-11e7-93ae-92361f002671",
+		"modelUuid":           "5df8b6de-2083-11e7-93ae-92361f002671",
+		"modelVersion":         "1.0",
+		"modelName":            "MSOTADevInfra_vSAMP10a_Service",
+		"environmentContext":   "a",
+		"workloadContext":      "b"
+	},
+	"project":{
+		"projectName": "MSORefactorTest1"
+	},
+	"owningEntity":{
+		"owningEntityId": "MSORefactorTestId123",
+		"owningEntityName": "MSORefactorTest1"
+	},
+	"customer":{
+		"subscriptionServiceType": "refactorServiceType",
+		"globalSubscriberId": "MSO_1806_Refactor"
+	},
+	"request":{
+		"sdncRequestId": "abc",
+		"callbackURL": "abc",
+		"requestId": "md5621",
+		"productFamilyId": "abc"
+	}
+}
+}
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/CreateVfModuleVolumeInfraV1/createVfModuleVolume_VID_request.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/CreateVfModuleVolumeInfraV1/createVfModuleVolume_VID_request.json
index 5a7ef5e..1af4521 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/CreateVfModuleVolumeInfraV1/createVfModuleVolume_VID_request.json
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/CreateVfModuleVolumeInfraV1/createVfModuleVolume_VID_request.json
@@ -58,7 +58,14 @@
 				{"name": "oamNetworkName", "value": "VLAN-OAM-1323" },
 				{"name": "vmName", "value": "slcp34246vbc246ceb" },
 				{"name": "ipagNetworkId", "value": "970cd2b9-7f09-4a12-af47-182ea38ba1f0" },
-				{"name": "vpeNetworkId", "value": "545cc2c3-1930-4100-b534-5d82d0e12bb6" }
+				{"name": "vpeNetworkId", "value": "545cc2c3-1930-4100-b534-5d82d0e12bb6" },
+				{
+					"name": "vlc_sctp_b_route_prefixes",
+					"value": [
+						{ "interface_route_table_routes_route_prefix": "107.239.41.163/32" },
+						{ "interface_route_table_routes_route_prefix": "107.239.41.164/32" },
+						{ "interface_route_table_routes_route_prefix": "107.239.41.165/32" }
+				]}
 			]
 		}
 	}
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/CreateVfModule_VID_request.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/CreateVfModule_VID_request.json
index d1e5ee1..3b41ff3 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/CreateVfModule_VID_request.json
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/CreateVfModule_VID_request.json
@@ -1,69 +1,72 @@
 {
-"requestDetails": {
-"modelInfo": {
-"modelType": "vfModule",
-"modelInvariantUuid": "ff5256d2-5a33-55df-13ab-12abad84e7ff",
-"modelUuid": "fe6478e5-ea33-3346-ac12-ab121484a3fe",
-"modelName": "STMTN5MMSC21-MMSC::model-1-0",
-"modelVersion": "1",
-"modelCustomizationUuid": "ee6478e5-ea33-3346-ac12-ab121484a3fe"
-},
-"subscriberInfo" : {
-"globalSubscriberId" : "MSO_1610_dev_id",
-"subscriberName" : "MSO_1610_dev_name"
-},
-"cloudConfiguration": {
-"lcpCloudRegionId": "MDTWNJ21",
-"tenantId": "fba1bd1e195a404cacb9ce17a9b2b421"
-},
-"requestInfo": {
-"instanceName": "PCRF::module-0-2",
-"source": "VID",
-"suppressRollback": true
-},
-"relatedInstanceList": [
-{
-"relatedInstance": {
-"instanceId": "17ef4658-bd1f-4ef0-9ca0-ea76e2bf122c",
-"instanceName": "MSOTESTVOL103a-vSAMP12_base_module-0_vol",
-"modelInfo": {
-"modelType": "volumeGroup",
-"modelInvariantUuid": "ff5256d2-5a33-55df-13ab-12abad84e7ff",
-"modelUuid": "fe6478e5-ea33-3346-ac12-ab121484a3fe",
-"modelName": "vSAMP12..base..module-0",
-"modelVersion": "1"
-}
-}
-},
-{
-"relatedInstance": {
-"instanceId": "123456",
-"modelInfo": {
-"modelType": "service",
-"modelInvariantUuid": "ff3514e3-5a33-55df-13ab-12abad84e7ff",
-"modelUuid": "fe6985cd-ea33-3346-ac12-ab121484a3fe",
-"modelName": "SERVICE_MODEL_NAME",
-"modelVersion": "1.0"
-}
-}
-},
-{
-"relatedInstance": {
-"instanceId": "skask",
-"instanceName": "skask-test",
-"modelInfo": {
-"modelType": "vnf",
-"modelInvariantUuid": "skask",
-"modelUuid": "fe6478e4-ea33-3346-ac12-ab121484a3fe",
-"modelName": "vSAMP12",
-"modelVersion": "1.0",
-"modelInstanceName": "vSAMP12 1"
-}
-}
-}
-],
-"requestParameters": {
-"usePreload": true,
-"userParams": {}
-}
+	"requestDetails": {
+		"modelInfo": {
+			"modelType": "vfModule",
+			"modelInvariantUuid": "ff5256d2-5a33-55df-13ab-12abad84e7ff",
+			"modelUuid": "fe6478e5-ea33-3346-ac12-ab121484a3fe",
+			"modelName": "STMTN5MMSC21-MMSC::model-1-0",
+			"modelVersion": "1",
+			"modelCustomizationUuid": "ee6478e5-ea33-3346-ac12-ab121484a3fe"
+		},
+		"subscriberInfo": {
+			"globalSubscriberId": "MSO_1610_dev_id",
+			"subscriberName": "MSO_1610_dev_name"
+		},
+		"cloudConfiguration": {
+			"lcpCloudRegionId": "MDTWNJ21",
+			"tenantId": "fba1bd1e195a404cacb9ce17a9b2b421"
+		},
+		"requestInfo": {
+			"instanceName": "PCRF::module-0-2",
+			"source": "VID",
+			"suppressRollback": true
+		},
+		"relatedInstanceList": [
+			{
+				"relatedInstance": {
+					"instanceId": "17ef4658-bd1f-4ef0-9ca0-ea76e2bf122c",
+					"instanceName": "MSOTESTVOL103a-vSAMP12_base_module-0_vol",
+					"modelInfo": {
+						"modelType": "volumeGroup",
+						"modelInvariantUuid": "ff5256d2-5a33-55df-13ab-12abad84e7ff",
+						"modelUuid": "fe6478e5-ea33-3346-ac12-ab121484a3fe",
+						"modelName": "vSAMP12..base..module-0",
+						"modelVersion": "1"
+					}
+				}
+			},
+			{
+				"relatedInstance": {
+					"instanceId": "123456",
+					"modelInfo": {
+						"modelType": "service",
+						"modelInvariantUuid": "ff3514e3-5a33-55df-13ab-12abad84e7ff",
+						"modelUuid": "fe6985cd-ea33-3346-ac12-ab121484a3fe",
+						"modelName": "SERVICE_MODEL_NAME",
+						"modelVersion": "1.0"
+					}
+				}
+			},
+			{
+				"relatedInstance": {
+					"instanceId": "skask",
+					"instanceName": "skask-test",
+					"modelInfo": {
+						"modelType": "vnf",
+						"modelInvariantUuid": "skask",
+						"modelUuid": "fe6478e4-ea33-3346-ac12-ab121484a3fe",
+						"modelName": "vSAMP12",
+						"modelVersion": "1.0",
+						"modelInstanceName": "vSAMP12 1"
+					}
+				}
+			}
+		],
+		"requestParameters": {
+			"usePreload": true,
+			"aLaCarte": false,
+			"userParams": {
+			}
+		}
+	}
 }
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/CreateVfModule_VID_request_noPreloads.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/CreateVfModule_VID_request_noPreloads.json
index 55dc313..e6d126e 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/CreateVfModule_VID_request_noPreloads.json
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/CreateVfModule_VID_request_noPreloads.json
@@ -1,79 +1,79 @@
 {
-"requestDetails": {
-"modelInfo": {
-"modelType": "vfModule",
-"modelInvariantUuid": "ff5256d2-5a33-55df-13ab-12abad84e7ff",
-"modelUuid": "fe6478e5-ea33-3346-ac12-ab121484a3fe",
-"modelName": "STMTN5MMSC21-MMSC::model-1-0",
-"modelVersion": "1",
-"modelCustomizationUuid": "ee6478e5-ea33-3346-ac12-ab121484a3fe"
-},
-"subscriberInfo" : {
-"globalSubscriberId" : "MSO_1610_dev_id",
-"subscriberName" : "MSO_1610_dev_name"
-},
-"cloudConfiguration": {
-"lcpCloudRegionId": "MDTWNJ21",
-"tenantId": "fba1bd1e195a404cacb9ce17a9b2b421"
-},
-"requestInfo": {
-"instanceName": "PCRF::module-0-2",
-"source": "VID",
-"suppressRollback": true
-},
-"relatedInstanceList": [
-{
-"relatedInstance": {
-"instanceId": "17ef4658-bd1f-4ef0-9ca0-ea76e2bf122c",
-"instanceName": "MSOTESTVOL103a-vSAMP12_base_module-0_vol",
-"modelInfo": {
-"modelType": "volumeGroup",
-"modelInvariantUuid": "ff5256d2-5a33-55df-13ab-12abad84e7ff",
-"modelUuid": "fe6478e5-ea33-3346-ac12-ab121484a3fe",
-"modelName": "vSAMP12..base..module-0",
-"modelVersion": "1"
-}
-}
-},
-{
-"relatedInstance": {
-"instanceId": "123456",
-"modelInfo": {
-"modelType": "service",
-"modelInvariantUuid": "ff3514e3-5a33-55df-13ab-12abad84e7ff",
-"modelUuid": "fe6985cd-ea33-3346-ac12-ab121484a3fe",
-"modelName": "SERVICE_MODEL_NAME",
-"modelVersion": "1.0"
-}
-}
-},
-{
-"relatedInstance": {
-"instanceId": "skask",
-"instanceName": "skask-test",
-"modelInfo": {
-"modelType": "vnf",
-"modelInvariantUuid": "skask",
-"modelUuid": "fe6478e4-ea33-3346-ac12-ab121484a3fe",
-"modelName": "vSAMP12",
-"modelVersion": "1.0",
-"modelInstanceName": "vSAMP12 1"
-}
-}
-}
-],
-"requestParameters": {
-"usePreload": false,
-"userParams" : [
-	{
-		"name" : "someUserParam",
-		"value" : "someValue"
-	},
-	{ 
-		"name": "sgi_protected_subnet_id", 
-		"value": "thisissomefakevalue" 
+	"requestDetails": {
+		"modelInfo": {
+			"modelType": "vfModule",
+			"modelInvariantUuid": "ff5256d2-5a33-55df-13ab-12abad84e7ff",
+			"modelUuid": "fe6478e5-ea33-3346-ac12-ab121484a3fe",
+			"modelName": "STMTN5MMSC21-MMSC::model-1-0",
+			"modelVersion": "1",
+			"modelCustomizationUuid": "ee6478e5-ea33-3346-ac12-ab121484a3fe"
+		},
+		"subscriberInfo": {
+			"globalSubscriberId": "MSO_1610_dev_id",
+			"subscriberName": "MSO_1610_dev_name"
+		},
+		"cloudConfiguration": {
+			"lcpCloudRegionId": "MDTWNJ21",
+			"tenantId": "fba1bd1e195a404cacb9ce17a9b2b421"
+		},
+		"requestInfo": {
+			"instanceName": "PCRF::module-0-2",
+			"source": "VID",
+			"suppressRollback": true
+		},
+		"relatedInstanceList": [
+			{
+				"relatedInstance": {
+					"instanceId": "17ef4658-bd1f-4ef0-9ca0-ea76e2bf122c",
+					"instanceName": "MSOTESTVOL103a-vSAMP12_base_module-0_vol",
+					"modelInfo": {
+						"modelType": "volumeGroup",
+						"modelInvariantUuid": "ff5256d2-5a33-55df-13ab-12abad84e7ff",
+						"modelUuid": "fe6478e5-ea33-3346-ac12-ab121484a3fe",
+						"modelName": "vSAMP12..base..module-0",
+						"modelVersion": "1"
+					}
+				}
+			},
+			{
+				"relatedInstance": {
+					"instanceId": "123456",
+					"modelInfo": {
+						"modelType": "service",
+						"modelInvariantUuid": "ff3514e3-5a33-55df-13ab-12abad84e7ff",
+						"modelUuid": "fe6985cd-ea33-3346-ac12-ab121484a3fe",
+						"modelName": "SERVICE_MODEL_NAME",
+						"modelVersion": "1.0"
+					}
+				}
+			},
+			{
+				"relatedInstance": {
+					"instanceId": "skask",
+					"instanceName": "skask-test",
+					"modelInfo": {
+						"modelType": "vnf",
+						"modelInvariantUuid": "skask",
+						"modelUuid": "fe6478e4-ea33-3346-ac12-ab121484a3fe",
+						"modelName": "vSAMP12",
+						"modelVersion": "1.0",
+						"modelInstanceName": "vSAMP12 1"
+					}
+				}
+			}
+		],
+		"requestParameters": {
+			"usePreload": false,
+			"userParams": [
+				{
+					"name": "someUserParam",
+					"value": "someValue"
+				},
+				{
+					"name": "sgi_protected_subnet_id",
+					"value": "thisissomefakevalue"
+				}
+			]
+		}
 	}
-]
-
-}
 }
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/CreateVfModule_VID_request_userParam.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/CreateVfModule_VID_request_userParam.json
new file mode 100644
index 0000000..68de099
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/CreateVfModule_VID_request_userParam.json
@@ -0,0 +1,77 @@
+{
+	"requestDetails": {
+		"modelInfo": {
+			"modelType": "vfModule",
+			"modelInvariantUuid": "ff5256d2-5a33-55df-13ab-12abad84e7ff",
+			"modelUuid": "fe6478e5-ea33-3346-ac12-ab121484a3fe",
+			"modelName": "STMTN5MMSC21-MMSC::model-1-0",
+			"modelVersion": "1",
+			"modelCustomizationUuid": "ee6478e5-ea33-3346-ac12-ab121484a3fe"
+		},
+		"subscriberInfo": {
+			"globalSubscriberId": "MSO_1610_dev_id",
+			"subscriberName": "MSO_1610_dev_name"
+		},
+		"cloudConfiguration": {
+			"lcpCloudRegionId": "MDTWNJ21",
+			"tenantId": "fba1bd1e195a404cacb9ce17a9b2b421"
+		},
+		"requestInfo": {
+			"instanceName": "PCRF::module-0-2",
+			"source": "VID",
+			"suppressRollback": true
+		},
+		"relatedInstanceList": [
+			{
+				"relatedInstance": {
+					"instanceId": "17ef4658-bd1f-4ef0-9ca0-ea76e2bf122c",
+					"instanceName": "MSOTESTVOL103a-vSAMP12_base_module-0_vol",
+					"modelInfo": {
+						"modelType": "volumeGroup",
+						"modelInvariantUuid": "ff5256d2-5a33-55df-13ab-12abad84e7ff",
+						"modelUuid": "fe6478e5-ea33-3346-ac12-ab121484a3fe",
+						"modelName": "vSAMP12..base..module-0",
+						"modelVersion": "1"
+					}
+				}
+			},
+			{
+				"relatedInstance": {
+					"instanceId": "123456",
+					"modelInfo": {
+						"modelType": "service",
+						"modelInvariantUuid": "ff3514e3-5a33-55df-13ab-12abad84e7ff",
+						"modelUuid": "fe6985cd-ea33-3346-ac12-ab121484a3fe",
+						"modelName": "SERVICE_MODEL_NAME",
+						"modelVersion": "1.0"
+					}
+				}
+			},
+			{
+				"relatedInstance": {
+					"instanceId": "skask",
+					"instanceName": "skask-test",
+					"modelInfo": {
+						"modelType": "vnf",
+						"modelInvariantUuid": "skask",
+						"modelUuid": "fe6478e4-ea33-3346-ac12-ab121484a3fe",
+						"modelName": "vSAMP12",
+						"modelVersion": "1.0",
+						"modelInstanceName": "vSAMP12 1"
+					}
+				}
+			}
+		],
+		"requestParameters": {
+			"usePreload": true,
+			"aLaCarte": false,
+			"userParams": [{
+				"name": "vlc_sctp_b_route_prefixes",
+				"value": [
+					{ "interface_route_table_routes_route_prefix": "107.239.41.163/32" },
+					{ "interface_route_table_routes_route_prefix": "107.239.41.164/32" },
+					{ "interface_route_table_routes_route_prefix": "107.239.41.165/32" }
+			]}
+		]}
+	}
+}
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/DoCreateVfModuleVolumeV1/createVfModuleVolume_VID_request.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/DoCreateVfModuleVolumeV1/createVfModuleVolume_VID_request.json
index 5a05061..6cc84c7 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/DoCreateVfModuleVolumeV1/createVfModuleVolume_VID_request.json
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/DoCreateVfModuleVolumeV1/createVfModuleVolume_VID_request.json
@@ -28,7 +28,8 @@
 						"modelVersion": "1"
 					}
 				}
-			}, {
+			},
+			{
 				"relatedInstance": {
 					"instanceId": "{vnf-instance-id}",
 					"modelInfo": {
@@ -44,21 +45,60 @@
 		"requestParameters": {
 			"backoutOnFailure": true,
 			"serviceId": "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb",
-			"userParams": {
-				{"name": "vnfName", "value": "STMTN5MMSC20" },
-				{"name": "vnfName2", "value": "US1117MTSNJVBR0246" },
-				{"name": "vnfNmInformation", "value": "" },
-				{"name": "vnfType", "value": "pcrf-capacity" },
-				{"name": "vnfId", "value": "skask" },
-				{"name": "vnfStackId", "value": "slowburn" },
-				{"name": "vnfStatus", "value": "created" },
-				{"name": "aicCloudRegion", "value": "MDTWNJ21" },
-				{"name": "availabilityZone", "value": "slcp3-esx-az01" },
-				{"name": "oamNetworkName", "value": "VLAN-OAM-1323" },
-				{"name": "vmName", "value": "slcp34246vbc246ceb" },
-				{"name": "ipagNetworkId", "value": "970cd2b9-7f09-4a12-af47-182ea38ba1f0" },
-				{"name": "vpeNetworkId", "value": "545cc2c3-1930-4100-b534-5d82d0e12bb6" }
-			}
+			"userParams": [
+				{
+					"name": "vnfName",
+					"value": "STMTN5MMSC20"
+				},
+				{
+					"name": "vnfName2",
+					"value": "US1117MTSNJVBR0246"
+				},
+				{
+					"name": "vnfNmInformation",
+					"value": ""
+				},
+				{
+					"name": "vnfType",
+					"value": "pcrf-capacity"
+				},
+				{
+					"name": "vnfId",
+					"value": "skask"
+				},
+				{
+					"name": "vnfStackId",
+					"value": "slowburn"
+				},
+				{
+					"name": "vnfStatus",
+					"value": "created"
+				},
+				{
+					"name": "aicCloudRegion",
+					"value": "MDTWNJ21"
+				},
+				{
+					"name": "availabilityZone",
+					"value": "slcp3-esx-az01"
+				},
+				{
+					"name": "oamNetworkName",
+					"value": "VLAN-OAM-1323"
+				},
+				{
+					"name": "vmName",
+					"value": "slcp34246vbc246ceb"
+				},
+				{
+					"name": "ipagNetworkId",
+					"value": "970cd2b9-7f09-4a12-af47-182ea38ba1f0"
+				},
+				{
+					"name": "vpeNetworkId",
+					"value": "545cc2c3-1930-4100-b534-5d82d0e12bb6"
+				}
+			]
 		}
 	}
 }
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/InfrastructureFlows/ConfigVnf_VID_request.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/InfrastructureFlows/ConfigVnf_VID_request.json
new file mode 100644
index 0000000..0404002
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/InfrastructureFlows/ConfigVnf_VID_request.json
@@ -0,0 +1,39 @@
+{
+"requestDetails": {
+"modelInfo": {
+"modelType": "vnf",
+"modelInvariantUuid": "ff5256d2-5a33-55df-13ab-12abad84e7ff",
+"modelUuid": "fe6478e5-ea33-3346-ac12-ab121484a3fe",
+"modelName": "vSAMP12",
+"modelVersion": "1.0",
+"modelCustomizationUuid": "MODEL-ID-1234"
+},
+"cloudConfiguration": {
+"lcpCloudRegionId": "mdt1",
+"tenantId": "fba1bd1e195a404cacb9ce17a9b2b421"
+},
+"requestInfo": {
+"instanceName": "STMTN",
+"instanceId": "skask",
+"source": "VID",
+"suppressRollback": true
+},
+"relatedInstanceList": [
+{
+"relatedInstance": {
+"instanceId": "MIS%2F1604%2F0026%2FSW_INTERNET",
+"modelInfo": {
+"modelType": "service",
+"modelInvariantUuid": "995256d2-5a33-55df-13ab-12abad84e7ff",
+"modelUuid": "ab6478e5-ea33-3346-ac12-ab121484a3fe",
+"modelName": "ServicevSAMP12",
+"modelVersion": "1.0"
+}
+}
+}
+],
+"requestParameters": {
+"payload": "{\"request-parameters\":{\"host-ip-address\":\"10.10.10.10\"},\"configuration-         parameters\":{\"name1\":\"value1\",\"name2\":\"value2\"}}"
+}
+}
+}
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/InfrastructureFlows/CreateVnfInfraRequest.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/InfrastructureFlows/CreateVnfInfraRequest.json
index 3595c25..c1491d1 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/InfrastructureFlows/CreateVnfInfraRequest.json
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/InfrastructureFlows/CreateVnfInfraRequest.json
@@ -34,6 +34,13 @@
          }
       ],
       "requestParameters": {
-      }
+      },
+	  "platform": {
+		"platformName": "platform name"
+	  },
+	  "lineOfBusiness": {
+		"lineOfBusinessName": "line of business names"
+	  }
   }
+  
 }
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/InfrastructureFlows/DoCreateServiceInstance_request.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/InfrastructureFlows/DoCreateServiceInstance_request.json
new file mode 100644
index 0000000..640e16b
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/InfrastructureFlows/DoCreateServiceInstance_request.json
@@ -0,0 +1,186 @@
+{ "serviceResources"    : {
+	"modelInfo"       : {
+		"modelName"          : "MSOTADevInfra_vSAMP10a_Service",
+		"modelUuid"          : "5df8b6de-2083-11e7-93ae-92361f002671",
+		"modelInvariantUuid" : "9647dfc4-2083-11e7-93ae-92361f002671",
+		"modelVersion"       : "1.0"
+	},
+	"serviceType"        : "PortMirroring",
+	"serviceRole"        : "InfraRole",
+	"environmentContext" : "Luna",
+	"workloadContext"    : "Oxygen",
+	"serviceVnfs": [
+	
+		{ "modelInfo"                    : {
+			"modelName"              : "vSAMP10a",
+			"modelUuid"              : "ff2ae348-214a-11e7-93ae-92361f002671",
+			"modelInvariantUuid"     : "2fff5b20-214b-11e7-93ae-92361f002671",
+			"modelVersion"           : "1.0",
+			"modelCustomizationUuid" : "68dc9a92-214c-11e7-93ae-92361f002671",
+			"modelInstanceName"      : "vSAMP10a 1"
+			},
+		"toscaNodeType"            : "VF",
+		"nfFunction"           	: null,
+		"nfType"              		: null,
+		"nfRole"              		: null,
+		"nfNamingCode"         	: null,
+		"multiStageDesign"		: null,
+			"vfModules": [
+				{
+					"modelInfo"               : { 
+						"modelName"              : "NetworkFqdnTest4",
+						"modelUuid"              : "025606c1-4223-11e7-9252-005056850d2e",
+						"modelInvariantUuid"     : "06bd0a18-65c0-4418-83c7-5b0d13cba01a",
+						"modelVersion"           : "2.0",
+						"modelCustomizationUuid" : "06bd0a18-65c0-4418-83c7-5b0d13cba01a"
+					},		"isBase"                 : true,
+					"vfModuleLabel"          : "label",
+					"initialCount"           : 0,
+					"hasVolumeGroup"           : true
+				},
+				{
+					"modelInfo"               : { 
+						"modelName"              : "NetworkFqdnTest3",
+						"modelUuid"              : "02560575-4223-11e7-9252-005056850d2e",
+						"modelInvariantUuid"     : "06bd0a18-65c0-4418-83c7-5b0d13cba0bb",
+						"modelVersion"           : "1.0",
+						"modelCustomizationUuid" : "06bd0a18-65c0-4418-83c7-5b0d13cba0bb"
+					},		"isBase"                 : true,
+					"vfModuleLabel"          : "label",
+					"initialCount"           : 0,
+					"hasVolumeGroup"           : false
+				},
+				{
+					"modelInfo"               : { 
+						"modelName"              : "NetworkFqdnTest5",
+						"modelUuid"              : "025607e4-4223-11e7-9252-005056850d2e",
+						"modelInvariantUuid"     : "06bd0a18-65c0-4418-83c7-5b0d14cba01a",
+						"modelVersion"           : "1.0",
+						"modelCustomizationUuid" : "06bd0a18-65c0-4418-83c7-5b0d14cba01a"
+					},		"isBase"                 : false,
+					"vfModuleLabel"          : "label",
+					"initialCount"           : 0,
+					"hasVolumeGroup"           : false
+				},
+				{
+					"modelInfo"               : { 
+						"modelName"              : "vSAMP10aDEV::PCM::module-2",
+						"modelUuid"              : "7774b4e4-7d37-11e7-bb31-be2e44b06b34",
+						"modelInvariantUuid"     : "93e9c1d2-7d37-11e7-bb31-be2e44b06b34",
+						"modelVersion"           : "2",
+						"modelCustomizationUuid" : "6728bee8-7d3a-11e7-bb31-be2e44b06b34"
+					},		"isBase"                 : false,
+					"vfModuleLabel"          : "PCM",
+					"initialCount"           : 0,
+					"hasVolumeGroup"           : true
+				},
+				{
+					"modelInfo"               : { 
+						"modelName"              : "vSAMP10aDEV::PCM::module-1",
+						"modelUuid"              : "066de97e-253e-11e7-93ae-92361f002671",
+						"modelInvariantUuid"     : "64efd51a-2544-11e7-93ae-92361f002671",
+						"modelVersion"           : "2",
+						"modelCustomizationUuid" : "b4ea86b4-253f-11e7-93ae-92361f002671"
+					},		"isBase"                 : false,
+					"vfModuleLabel"          : "PCM",
+					"initialCount"           : 0,
+					"hasVolumeGroup"           : true
+				},
+				{
+					"modelInfo"               : { 
+						"modelName"              : "vSAMP10aDEV::base::module-0",
+						"modelUuid"              : "20c4431c-246d-11e7-93ae-92361f002671",
+						"modelInvariantUuid"     : "78ca26d0-246d-11e7-93ae-92361f002671",
+						"modelVersion"           : "2",
+						"modelCustomizationUuid" : "cb82ffd8-252a-11e7-93ae-92361f002671"
+					},		"isBase"                 : true,
+					"vfModuleLabel"          : "base",
+					"initialCount"           : 1,
+					"hasVolumeGroup"           : true
+				},
+				{
+					"modelInfo"               : { 
+						"modelName"              : "vSAMP10a::base::module-0",
+						"modelUuid"              : "02560de2-4223-11e7-9252-005056850d2e",
+						"modelInvariantUuid"     : null,
+						"modelVersion"           : "2",
+						"modelCustomizationUuid" : "MIGRATED_36e76920-ef30-4793-9979-cbd7d4b2bfc4"
+					},		"isBase"                 : true,
+					"vfModuleLabel"          : "base",
+					"initialCount"           : 1,
+					"hasVolumeGroup"           : true
+				},
+				{
+					"modelInfo"               : { 
+						"modelName"              : "base::module-0",
+						"modelUuid"              : "02561381-4223-11e7-9252-005056850d2e",
+						"modelInvariantUuid"     : null,
+						"modelVersion"           : "1",
+						"modelCustomizationUuid" : "MIGRATED_51baae4c-b7c7-4f57-b77e-6e01acca89e5"
+					},		"isBase"                 : true,
+					"vfModuleLabel"          : "module-0",
+					"initialCount"           : 1,
+					"hasVolumeGroup"           : false
+				},
+				{
+					"modelInfo"               : { 
+						"modelName"              : "vSAMP10a::PCM::module-1",
+						"modelUuid"              : "02560f1b-4223-11e7-9252-005056850d2e",
+						"modelInvariantUuid"     : null,
+						"modelVersion"           : "1",
+						"modelCustomizationUuid" : "MIGRATED_e9be2ed7-45b6-479c-b06e-9093899f8ce8"
+					},		"isBase"                 : true,
+					"vfModuleLabel"          : "PCM",
+					"initialCount"           : 1,
+					"hasVolumeGroup"           : true
+				}
+			]
+		}
+	],
+	"serviceNetworks": [],
+	"serviceAllottedResources": [
+		{
+			"modelInfo"       : {
+				"modelName"              : "Tunnel_Xconn",
+				"modelUuid"              : "f6b7d4c6-e8a4-46e2-81bc-31cad5072842",
+				"modelInvariantUuid"     : "b7a1b78e-6b6b-4b36-9698-8c9530da14af",
+				"modelVersion"           : "1.0",
+				"modelCustomizationUuid" : "5b9bee43-f537-4fb3-9e8b-4de9f714d28a",
+				"modelInstanceName"      : "Pri_Tunnel_Xconn 9"
+			},
+			"toscaNodeType"              : null,
+			"allottedResourceType"              : null,
+			"allottedResourceRole"              : null,
+			"providingServiceModelInvariantUuid"              : null,
+			"nfFunction"              : null,
+			"nfType"              : null,
+			"nfRole"              : null,
+			"nfNamingCode"              : null
+		}
+	],
+	"serviceConfigs": [
+		{
+			"modelInfo"       : {
+				"modelName"              : "Mulder",
+				"modelUuid"              : "025606c1-4fff-11e7-9252-005056850d2e",
+				"modelInvariantUuid"     : "025606c1-4eee-11e7-9252-005056850d2e",
+				"modelVersion"           : "1.0",
+				"modelCustomizationUuid" : "025606c1-4ddd-11e7-9252-005056850d2e",
+				"modelInstanceName"      : "X_FILES_001"
+			},
+			"toscaNodeType"   : "Scully"
+		},
+		{
+			"modelInfo"       : {
+				"modelName"              : "Krychuk",
+				"modelUuid"              : "025606c1-5fff-11e7-9252-005056850d2e",
+				"modelInvariantUuid"     : "025606c1-5eee-11e7-9252-005056850d2e",
+				"modelVersion"           : "1.0",
+				"modelCustomizationUuid" : "025606c1-5ddd-11e7-9252-005056850d2e",
+				"modelInstanceName"      : "X_FILES_002"
+			},
+			"toscaNodeType"   : "Skinner"
+		}
+	]
+	}}
+
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/InfrastructureFlows/UpdateVfModule_VID_request.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/InfrastructureFlows/UpdateVfModule_VID_request.json
index c40a99e..9564f70 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/InfrastructureFlows/UpdateVfModule_VID_request.json
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/InfrastructureFlows/UpdateVfModule_VID_request.json
@@ -1,61 +1,62 @@
 {
-"requestDetails": {
-"modelInfo": {
-"modelType": "vfModule",
-"modelInvariantUuid": "introvert",
-"modelUuid": "fe6478e5-ea33-3346-ac12-ab121484a3fe",
-"modelName": "STMTN5MMSC21-MMSC::model-1-0",
-"modelVersion": "1",
-"modelCustomizationUuid": "MODEL12345"
-},
-"cloudConfiguration": {
-"lcpCloudRegionId": "MDTWNJ21",
-"tenantId": "fba1bd1e195a404cacb9ce17a9b2b421"
-},
-"requestInfo": {
-"instanceName": "PCRF::module-0",
-"instanceId": "supercool",
-"source": "VID",
-"suppressRollback": true
-},
-"relatedInstanceList": [
-{
-"relatedInstance": {
-"instanceId": "123456",
-"modelInfo": {
-"modelType": "service",
-"modelInvariantUuid": "ff3514e3-5a33-55df-13ab-12abad84e7ff",
-"modelUuid": "fe6985cd-ea33-3346-ac12-ab121484a3fe",
-"modelName": "SERVICE_MODEL_NAME",
-"modelVersion": "1.0"
-}
-}
-},
-{
-"relatedInstance": {
-"instanceId": "skask",
-"modelInfo": {
-"modelType": "vnf",
-"modelInvariantUuid": "skask",
-"modelUuid": "fe6478e4-ea33-3346-ac12-ab121484a3fe",
-"modelName": "vSAMP12",
-"modelVersion": "1.0",
-"modelInstanceName": "vSAMP12 1"
-}
-}
-}
-],
-"requestParameters": {
-"usePreload": false,
-"userParams" : [
-	{
-		"name" : "someUserParam",
-		"value" : "someValue"
-	},
-	{ 
-		"name": "sgi_protected_subnet_id", 
-		"value": "thisissomefakevalue" 
+	"requestDetails": {
+		"modelInfo": {
+			"modelType": "vfModule",
+			"modelInvariantUuid": "introvert",
+			"modelUuid": "fe6478e5-ea33-3346-ac12-ab121484a3fe",
+			"modelName": "STMTN5MMSC21-MMSC::model-1-0",
+			"modelVersion": "1",
+			"modelCustomizationUuid": "MODEL12345"
+		},
+		"cloudConfiguration": {
+			"lcpCloudRegionId": "MDTWNJ21",
+			"tenantId": "fba1bd1e195a404cacb9ce17a9b2b421"
+		},
+		"requestInfo": {
+			"instanceName": "PCRF::module-0",
+			"instanceId": "supercool",
+			"source": "VID",
+			"suppressRollback": true
+		},
+		"relatedInstanceList": [
+			{
+				"relatedInstance": {
+					"instanceId": "123456",
+					"modelInfo": {
+						"modelType": "service",
+						"modelInvariantUuid": "ff3514e3-5a33-55df-13ab-12abad84e7ff",
+						"modelUuid": "fe6985cd-ea33-3346-ac12-ab121484a3fe",
+						"modelName": "SERVICE_MODEL_NAME",
+						"modelVersion": "1.0"
+					}
+				}
+			},
+			{
+				"relatedInstance": {
+					"instanceId": "skask",
+					"modelInfo": {
+						"modelType": "vnf",
+						"modelInvariantUuid": "skask",
+						"modelUuid": "fe6478e4-ea33-3346-ac12-ab121484a3fe",
+						"modelName": "vSAMP12",
+						"modelVersion": "1.0",
+						"modelInstanceName": "vSAMP12 1"
+					}
+				}
+			}
+		],
+		"requestParameters": {
+			"usePreload": false,
+			"userParams": [
+				{
+					"name": "someUserParam",
+					"value": "someValue"
+				},
+				{
+					"name": "sgi_protected_subnet_id",
+					"value": "thisissomefakevalue"
+				}
+			]
+		}
 	}
-]
-}
 }
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/InfrastructureFlows/UpdateVnf_VID_request.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/InfrastructureFlows/UpdateVnf_VID_request.json
index cdeaf92..40e7b59 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/InfrastructureFlows/UpdateVnf_VID_request.json
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/InfrastructureFlows/UpdateVnf_VID_request.json
@@ -10,7 +10,7 @@
 },
 "cloudConfiguration": {
 "lcpCloudRegionId": "mdt1",
-"tenantId": "88a6ca3ee0394ade9403f075db23167e"
+"tenantId": "fba1bd1e195a404cacb9ce17a9b2b421"
 },
 "requestInfo": {
 "instanceName": "STMTN",
@@ -42,6 +42,14 @@
 	{ 
 		"name": "sgi_protected_subnet_id", 
 		"value": "thisissomefakevalue" 
+	},
+	{
+		"name": "vlc_sctp_b_route_prefixes",
+		"value": [
+			{ "interface_route_table_routes_route_prefix": "107.239.41.163/32" },
+			{ "interface_route_table_routes_route_prefix": "107.239.41.164/32" },
+			{ "interface_route_table_routes_route_prefix": "107.239.41.165/32" }
+		]
 	}
 ]
 }
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/InfrastructureFlows/VnfInPlaceUpdate_VID_request.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/InfrastructureFlows/VnfInPlaceUpdate_VID_request.json
new file mode 100644
index 0000000..009db93
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/InfrastructureFlows/VnfInPlaceUpdate_VID_request.json
@@ -0,0 +1,16 @@
+{
+"requestDetails": {
+"cloudConfiguration": {
+"lcpCloudRegionId": "mdt1",
+"tenantId": "fba1bd1e195a404cacb9ce17a9b2b421"
+},
+"requestInfo": {
+"source": "VID",
+"requestorId": "ab1234"
+},
+"requestParameters": {
+"payload":
+"{\"existing-software-version\": \"3.1\",\"new-software-version\": \"3.2\", \"operations-timeout\": \"3600\"}"
+}
+}
+}
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/UpdateNetworkV2/updateNetworkResponse_500.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/UpdateNetworkV2/updateNetworkResponse_500.xml
index c67e980..07730e2 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/UpdateNetworkV2/updateNetworkResponse_500.xml
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/UpdateNetworkV2/updateNetworkResponse_500.xml
@@ -2,77 +2,79 @@
 	<head>
 		<title>JBoss Web/7.2.2.Final-redhat-1 - JBWEB000064: Error report
 		</title>
-		<style><!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;}
-				H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;}
-				H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;}
-				BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;}
-				B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;}
-				P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A
+		<style><!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} 
+				H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} 
+				H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} 
+				BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} 
+				B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} 
+				P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A 
 				{color : black;}A.name {color : black;}HR {color : #525D76;} -->
 		</style>
 	</head>
 	<body>
 		<h1>JBWEB000065: HTTP Status 500 - java.lang.NullPointerException</h1>
-		<HR size="1" noshade="noshade">
-			<p>
-				<b>JBWEB000309: type</b>
-				JBWEB000066: Exception report
-			</p>
-			<p>
-				<b>JBWEB000068: message</b>
-				<u>java.lang.NullPointerException</u>
-			</p>
-			<p>
-				<b>JBWEB000069: description</b>
-				<u>JBWEB000145: The server encountered an internal error that
-					prevented it from fulfilling this request.</u>
-			</p>
-			<p>
-				<b>JBWEB000070: exception</b>
-				<pre>org.jboss.resteasy.spi.UnhandledException:
-					java.lang.NullPointerException
-					org.jboss.resteasy.core.SynchronousDispatcher.handleApplicationException(SynchronousDispatcher.java:365)
-					org.jboss.resteasy.core.SynchronousDispatcher.handleException(SynchronousDispatcher.java:233)
-					org.jboss.resteasy.core.SynchronousDispatcher.handleInvokerException(SynchronousDispatcher.java:209)
-					org.jboss.resteasy.core.SynchronousDispatcher.getResponse(SynchronousDispatcher.java:557)
-					org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:524)
-					org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:126)
-					org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:208)
-					org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:55)
-					org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:50)
-					javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
-					org.openecomp.mso.logger.LogFilter.doFilter(LogFilter.java:35)
-				</pre>
-			</p>
-			<p>
-				<b>JBWEB000071: root cause</b>
-				<pre>java.lang.NullPointerException
-					org.openecomp.mso.adapters.network.NetworkAdapterRest$CreateNetworkVolumesTask.run(NetworkAdapterRest.java:128)
-					org.openecomp.mso.adapters.network.NetworkAdapterRest.createNetwork(NetworkAdapterRest.java:64)
-					sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
-					sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
-					sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
-					java.lang.reflect.Method.invoke(Method.java:606)
-					org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:167)
-					org.jboss.resteasy.core.ResourceMethod.invokeOnTarget(ResourceMethod.java:269)
-					org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:227)
-					org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:216)
-					org.jboss.resteasy.core.SynchronousDispatcher.getResponse(SynchronousDispatcher.java:542)
-					org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:524)
-					org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:126)
-					org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:208)
-					org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:55)
-					org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:50)
-					javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
-					org.openecomp.mso.logger.LogFilter.doFilter(LogFilter.java:35)
-				</pre>
-			</p>
-			<p>
-				<b>JBWEB000072: note</b>
-				<u>JBWEB000073: The full stack trace of the root cause is available
-					in the JBoss Web/7.2.2.Final-redhat-1 logs.</u>
-			</p>
-			<HR size="1" noshade="noshade">
-				<h3>JBoss Web/7.2.2.Final-redhat-1</h3>
+		<HR size="1" noshade="noshade" />
+		<p>
+			<b>JBWEB000309: type</b>
+			JBWEB000066: Exception report
+		</p>
+		<p>
+			<b>JBWEB000068: message</b>
+			<u>java.lang.NullPointerException</u>
+		</p>
+		<p>
+			<b>JBWEB000069: description</b>
+			<u>JBWEB000145: The server encountered an internal error that
+				prevented it from fulfilling this request.
+			</u>
+		</p>
+		<p>
+			<b>JBWEB000070: exception</b>
+			<pre>org.jboss.resteasy.spi.UnhandledException:
+				java.lang.NullPointerException
+				org.jboss.resteasy.core.SynchronousDispatcher.handleApplicationException(SynchronousDispatcher.java:365)
+				org.jboss.resteasy.core.SynchronousDispatcher.handleException(SynchronousDispatcher.java:233)
+				org.jboss.resteasy.core.SynchronousDispatcher.handleInvokerException(SynchronousDispatcher.java:209)
+				org.jboss.resteasy.core.SynchronousDispatcher.getResponse(SynchronousDispatcher.java:557)
+				org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:524)
+				org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:126)
+				org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:208)
+				org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:55)
+				org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:50)
+				javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
+				org.openecomp.mso.logger.LogFilter.doFilter(LogFilter.java:35)
+			</pre>
+		</p>
+		<p>
+			<b>JBWEB000071: root cause</b>
+			<pre>java.lang.NullPointerException
+				org.openecomp.mso.adapters.network.NetworkAdapterRest$CreateNetworkVolumesTask.run(NetworkAdapterRest.java:128)
+				org.openecomp.mso.adapters.network.NetworkAdapterRest.createNetwork(NetworkAdapterRest.java:64)
+				sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+				sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
+				sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+				java.lang.reflect.Method.invoke(Method.java:606)
+				org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:167)
+				org.jboss.resteasy.core.ResourceMethod.invokeOnTarget(ResourceMethod.java:269)
+				org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:227)
+				org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:216)
+				org.jboss.resteasy.core.SynchronousDispatcher.getResponse(SynchronousDispatcher.java:542)
+				org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:524)
+				org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:126)
+				org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:208)
+				org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:55)
+				org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:50)
+				javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
+				org.openecomp.mso.logger.LogFilter.doFilter(LogFilter.java:35)
+			</pre>
+		</p>
+		<p>
+			<b>JBWEB000072: note</b>
+			<u>JBWEB000073: The full stack trace of the root cause is available
+				in the JBoss Web/7.2.2.Final-redhat-1 logs.
+			</u>
+		</p>
+		<HR size="1" noshade="noshade" />
+		<h3>JBoss Web/7.2.2.Final-redhat-1</h3>
 	</body>
 </html>
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/UpdateNetworkV2/updateNetwork_queryVpnBindingList_AAIResponse_Success.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/UpdateNetworkV2/updateNetwork_queryVpnBindingList_AAIResponse_Success.xml
new file mode 100644
index 0000000..671da0c
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/UpdateNetworkV2/updateNetwork_queryVpnBindingList_AAIResponse_Success.xml
@@ -0,0 +1,57 @@
+<rest:RESTResponse xmlns:rest="http://schemas.activebpel.org/REST/2007/12/01/aeREST.xsd"
+                   statusCode="200">
+   <rest:headers>
+      <rest:header name="Transfer-Encoding" value="chunked"/>
+      <rest:header name="Date" value="Mon,14 Mar 2016 20:53:33 GMT"/>
+      <rest:header name="Expires" value="Thu,01 Jan 1970 00:00:00 UTC"/>
+      <rest:header name="X-AAI-TXID"
+                   value="mtcnjv9aaas01.mtcnj.aic.cip.com-20160314-20:53:33:487-134392"/>
+      <rest:header name="Content-Type" value="application/xml"/>
+      <rest:header name="Server" value="Apache-Coyote/1.1"/>
+      <rest:header name="Cache-Control" value="private"/>
+   </rest:headers>
+   <rest:payload contentType="text/xml">
+      <vpn-binding xmlns="http://org.openecomp.aai.inventory/v8">
+         <vpn-id>9a7b327d9-287aa00-82c4b0-105757</vpn-id>
+         <vpn-name>GN_EVPN_Test</vpn-name>
+         <route-targets>
+           <route-target>
+             <global-route-target>13979:105708</global-route-target>
+             <route-target-role>EXPORT</route-target-role>
+             <resource-version>1504025599510</resource-version>
+           </route-target>
+           <route-target>
+             <global-route-target>13979:105707</global-route-target>
+             <route-target-role>IMPORT</route-target-role>
+             <resource-version>1504025599519</resource-version>
+           </route-target>           
+         </route-targets>
+         <relationship-list>
+            <relationship>
+               <related-to>l3-network</related-to>
+               <related-link>https://aai-app-e2e.test.com:8443/aai/v8/network/l3-networks/l3-network/689ec39e-c5fc-4462-8db2-4f760763ad28/</related-link>
+               <relationship-data>
+                  <relationship-key>l3-network.network-id</relationship-key>
+                  <relationship-value>689ec39e-c5fc-4462-8db2-4f760763ad28</relationship-value>
+               </relationship-data>
+            </relationship>
+            <relationship>
+               <related-to>l3-network</related-to>
+               <related-link>https://aai-app-e2e.test.com:8443/aai/v8/network/l3-networks/l3-network/1a49396b-19b3-40a4-8792-aa2fbd0f0704/</related-link>
+               <relationship-data>
+                  <relationship-key>l3-network.network-id</relationship-key>
+                  <relationship-value>1a49396b-19b3-40a4-8792-aa2fbd0f0704</relationship-value>
+               </relationship-data>
+            </relationship>
+            <relationship>
+               <related-to>l3-network</related-to>
+               <related-link>https://aai-app-e2e.test.com:8443/aai/v8/network/l3-networks/l3-network/774f3329-3c83-4771-86c7-9e6207cd50fd/</related-link>
+               <relationship-data>
+                  <relationship-key>l3-network.network-id</relationship-key>
+                  <relationship-value>774f3329-3c83-4771-86c7-9e6207cd50fd</relationship-value>
+               </relationship-data>
+            </relationship>
+         </relationship-list>
+      </vpn-binding>
+   </rest:payload>
+</rest:RESTResponse>
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/CreateVcpeResCustService/SDNCTopologyQueryBRGCallback.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/CreateVcpeResCustService/SDNCTopologyQueryBRGCallback.xml
index d47fbda..d81b7e8 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/CreateVcpeResCustService/SDNCTopologyQueryBRGCallback.xml
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/CreateVcpeResCustService/SDNCTopologyQueryBRGCallback.xml
@@ -1,12 +1,12 @@
 <output xmlns="org:onap:sdnctl:vnf">
 <brg-topology  xmlns="org:onap:sdnctl:vnf">
-    <onap-model-information>
+    <ecomp-model-information>
         <model-invariant-uuid>36e20198-c67a-464b-96d0-aaa99eb2639e</model-invariant-uuid>
         <model-uuid>5b9b15d0-5dd7-47dc-95b9-0440c340a3ba</model-uuid>
         <model-version>1.0</model-version>
         <model-name>BRGmodelname</model-name>
         <model-customization-uuid>013bd784-9bca-4919-ae2f-ae57af27bad9</model-customization-uuid>
-    </onap-model-information>
+    </ecomp-model-information>
     <allotted-resource-identifiers>
         <parent-service-instance-id>parent-service-instance-id</parent-service-instance-id>
         <consuming-service-intance-id>consuming-service-instance-id</consuming-service-intance-id>
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/CreateVcpeResCustService/SDNCTopologyQueryTXCCallback.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/CreateVcpeResCustService/SDNCTopologyQueryTXCCallback.xml
index 05583cd..f74e51e 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/CreateVcpeResCustService/SDNCTopologyQueryTXCCallback.xml
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/CreateVcpeResCustService/SDNCTopologyQueryTXCCallback.xml
@@ -1,12 +1,12 @@
 <output xmlns="org:onap:sdnctl:vnf">
 <tunnelxconn-topology  xmlns="org:onap:sdnctl:vnf">
-    <onap-model-information>
+    <ecomp-model-information>
         <model-invariant-uuid>36e20198-c67a-464b-96d0-aaa99eb2639e</model-invariant-uuid>
         <model-uuid>5b9b15d0-5dd7-47dc-95b9-0440c340a3ba</model-uuid>
         <model-version>1.0</model-version>
         <model-name>TXCmodelname</model-name>
         <model-customization-uuid>013bd784-9bca-4919-ae2f-ae57af27bad9</model-customization-uuid>
-    </onap-model-information>
+    </ecomp-model-information>
     <allotted-resource-identifiers>
         <parent-service-instance-id>parent-service-instance-id</parent-service-instance-id>
         <consuming-service-intance-id>consuming-service-instance-id</consuming-service-intance-id>
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DeleteVcpeResCustService/request.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DeleteVcpeResCustService/request.json
index 99941c9..dc4669e 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DeleteVcpeResCustService/request.json
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DeleteVcpeResCustService/request.json
@@ -30,13 +30,10 @@
 				{
 					"subscriptionServiceType":"123456789",
 					"aLaCarte":"false",
-                    "userParams":
-                       [
-                            {
-                                "name":"BRG_WAN_MAC_Address",
-                                "value":"brgmac"
-                            }
-                       ]
+					"userParams":
+						{
+							"BRG_WAN_MAC_Address" : "brgmac"
+						}
 				}
 				
 		}
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceBRG/SDNCTopologyQueryCallback.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceBRG/SDNCTopologyQueryCallback.xml
index d47fbda..d81b7e8 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceBRG/SDNCTopologyQueryCallback.xml
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceBRG/SDNCTopologyQueryCallback.xml
@@ -1,12 +1,12 @@
 <output xmlns="org:onap:sdnctl:vnf">
 <brg-topology  xmlns="org:onap:sdnctl:vnf">
-    <onap-model-information>
+    <ecomp-model-information>
         <model-invariant-uuid>36e20198-c67a-464b-96d0-aaa99eb2639e</model-invariant-uuid>
         <model-uuid>5b9b15d0-5dd7-47dc-95b9-0440c340a3ba</model-uuid>
         <model-version>1.0</model-version>
         <model-name>BRGmodelname</model-name>
         <model-customization-uuid>013bd784-9bca-4919-ae2f-ae57af27bad9</model-customization-uuid>
-    </onap-model-information>
+    </ecomp-model-information>
     <allotted-resource-identifiers>
         <parent-service-instance-id>parent-service-instance-id</parent-service-instance-id>
         <consuming-service-intance-id>consuming-service-instance-id</consuming-service-intance-id>
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceBRGRollback/sdncActivateRollbackReq.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceBRGRollback/sdncActivateRollbackReq.xml
index c86d9cf..6f86e0f 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceBRGRollback/sdncActivateRollbackReq.xml
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceBRGRollback/sdncActivateRollbackReq.xml
@@ -20,7 +20,7 @@
 	<service-information>
 	<service-id></service-id>
 	<subscription-service-type></subscription-service-type>
-	<onap-model-information></onap-model-information>
+	<ecomp-model-information></ecomp-model-information>
 	<service-instance-id>MIS%252F1604%252F0026%252FSW_INTERNET</service-instance-id>
 	<subscriber-name/>
 	<global-customer-id></global-customer-id>
@@ -29,13 +29,13 @@
 	<allotted-resource-id>arId-1</allotted-resource-id>
 	<allotted-resource-type>brg</allotted-resource-type>
 	<parent-service-instance-id>MIS%252F1604%252F0026%252FSW_INTERNET</parent-service-instance-id>
-	<onap-model-information>
+	<ecomp-model-information>
         <model-invariant-uuid></model-invariant-uuid>
         <model-uuid></model-uuid>
         <model-customization-uuid></model-customization-uuid>
         <model-version></model-version>
         <model-name></model-name>
-	</onap-model-information>
+	</ecomp-model-information>
 	</allotted-resource-information>
 	<brg-request-input>
 	<source-network>
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceBRGRollback/sdncAssignRollbackReq.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceBRGRollback/sdncAssignRollbackReq.xml
index 4fe8bbc..30d4c7a 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceBRGRollback/sdncAssignRollbackReq.xml
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceBRGRollback/sdncAssignRollbackReq.xml
@@ -20,7 +20,7 @@
 	<service-information>
 	<service-id></service-id>
 	<subscription-service-type></subscription-service-type>
-	<onap-model-information></onap-model-information>
+	<ecomp-model-information></ecomp-model-information>
 	<service-instance-id>MIS%252F1604%252F0026%252FSW_INTERNET</service-instance-id>
 	<subscriber-name/>
 	<global-customer-id></global-customer-id>
@@ -29,13 +29,13 @@
 	<allotted-resource-id>arId-1</allotted-resource-id>
 	<allotted-resource-type>brg</allotted-resource-type>
 	<parent-service-instance-id>MIS%252F1604%252F0026%252FSW_INTERNET</parent-service-instance-id>
-	<onap-model-information>
+	<ecomp-model-information>
         <model-invariant-uuid></model-invariant-uuid>
         <model-uuid></model-uuid>
         <model-customization-uuid></model-customization-uuid>
         <model-version></model-version>
         <model-name></model-name>
-	</onap-model-information>
+	</ecomp-model-information>
 	</allotted-resource-information>
 	<brg-request-input>
 	<source-network>
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceBRGRollback/sdncCreateRollbackReq.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceBRGRollback/sdncCreateRollbackReq.xml
index 7320038..e20850a 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceBRGRollback/sdncCreateRollbackReq.xml
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceBRGRollback/sdncCreateRollbackReq.xml
@@ -20,7 +20,7 @@
 	<service-information>
 	<service-id></service-id>
 	<subscription-service-type></subscription-service-type>
-	<onap-model-information></onap-model-information>
+	<ecomp-model-information></ecomp-model-information>
 	<service-instance-id>MIS%252F1604%252F0026%252FSW_INTERNET</service-instance-id>
 	<subscriber-name/>
 	<global-customer-id></global-customer-id>
@@ -29,13 +29,13 @@
 	<allotted-resource-id>arId-1</allotted-resource-id>
 	<allotted-resource-type>brg</allotted-resource-type>
 	<parent-service-instance-id>MIS%252F1604%252F0026%252FSW_INTERNET</parent-service-instance-id>
-	<onap-model-information>
+	<ecomp-model-information>
         <model-invariant-uuid></model-invariant-uuid>
         <model-uuid></model-uuid>
         <model-customization-uuid></model-customization-uuid>
         <model-version></model-version>
         <model-name></model-name>
-	</onap-model-information>
+	</ecomp-model-information>
 	</allotted-resource-information>
 	<brg-request-input>
 	<source-network>
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceTXC/SDNCTopologyQueryCallback.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceTXC/SDNCTopologyQueryCallback.xml
index 05583cd..f74e51e 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceTXC/SDNCTopologyQueryCallback.xml
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceTXC/SDNCTopologyQueryCallback.xml
@@ -1,12 +1,12 @@
 <output xmlns="org:onap:sdnctl:vnf">
 <tunnelxconn-topology  xmlns="org:onap:sdnctl:vnf">
-    <onap-model-information>
+    <ecomp-model-information>
         <model-invariant-uuid>36e20198-c67a-464b-96d0-aaa99eb2639e</model-invariant-uuid>
         <model-uuid>5b9b15d0-5dd7-47dc-95b9-0440c340a3ba</model-uuid>
         <model-version>1.0</model-version>
         <model-name>TXCmodelname</model-name>
         <model-customization-uuid>013bd784-9bca-4919-ae2f-ae57af27bad9</model-customization-uuid>
-    </onap-model-information>
+    </ecomp-model-information>
     <allotted-resource-identifiers>
         <parent-service-instance-id>parent-service-instance-id</parent-service-instance-id>
         <consuming-service-intance-id>consuming-service-instance-id</consuming-service-intance-id>
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceTXCRollback/sdncActivateRollbackReq.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceTXCRollback/sdncActivateRollbackReq.xml
index 6d2edbe..efec7eb 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceTXCRollback/sdncActivateRollbackReq.xml
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceTXCRollback/sdncActivateRollbackReq.xml
@@ -20,7 +20,7 @@
 	<service-information>
 	<service-id></service-id>
 	<subscription-service-type></subscription-service-type>
-	<onap-model-information></onap-model-information>
+	<ecomp-model-information></ecomp-model-information>
 	<service-instance-id>MIS%252F1604%252F0026%252FSW_INTERNET</service-instance-id>
 	<subscriber-name/>
 	<global-customer-id></global-customer-id>
@@ -29,13 +29,13 @@
 	<allotted-resource-id>arId-1</allotted-resource-id>
 	<allotted-resource-type>tunnelxconn</allotted-resource-type>
 	<parent-service-instance-id>MIS%252F1604%252F0026%252FSW_INTERNET</parent-service-instance-id>
-	<onap-model-information>
+	<ecomp-model-information>
         <model-invariant-uuid></model-invariant-uuid>
         <model-uuid></model-uuid>
         <model-customization-uuid></model-customization-uuid>
         <model-version></model-version>
         <model-name></model-name>
-	</onap-model-information>
+	</ecomp-model-information>
 	</allotted-resource-information>
 	<tunnelxconn-request-input>
 	<source-network>
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceTXCRollback/sdncAssignRollbackReq.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceTXCRollback/sdncAssignRollbackReq.xml
index d33fadb..9f52758 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceTXCRollback/sdncAssignRollbackReq.xml
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceTXCRollback/sdncAssignRollbackReq.xml
@@ -20,7 +20,7 @@
 	<service-information>
 	<service-id></service-id>
 	<subscription-service-type></subscription-service-type>
-	<onap-model-information></onap-model-information>
+	<ecomp-model-information></ecomp-model-information>
 	<service-instance-id>MIS%252F1604%252F0026%252FSW_INTERNET</service-instance-id>
 	<subscriber-name/>
 	<global-customer-id></global-customer-id>
@@ -29,13 +29,13 @@
 	<allotted-resource-id>arId-1</allotted-resource-id>
 	<allotted-resource-type>tunnelxconn</allotted-resource-type>
 	<parent-service-instance-id>MIS%252F1604%252F0026%252FSW_INTERNET</parent-service-instance-id>
-	<onap-model-information>
+	<ecomp-model-information>
         <model-invariant-uuid></model-invariant-uuid>
         <model-uuid></model-uuid>
         <model-customization-uuid></model-customization-uuid>
         <model-version></model-version>
         <model-name></model-name>
-	</onap-model-information>
+	</ecomp-model-information>
 	</allotted-resource-information>
 	<tunnelxconn-request-input>
 	<source-network>
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceTXCRollback/sdncCreateRollbackReq.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceTXCRollback/sdncCreateRollbackReq.xml
index 4a90f1a..025195e 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceTXCRollback/sdncCreateRollbackReq.xml
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VCPE/DoCreateAllottedResourceTXCRollback/sdncCreateRollbackReq.xml
@@ -20,7 +20,7 @@
 	<service-information>
 	<service-id></service-id>
 	<subscription-service-type></subscription-service-type>
-	<onap-model-information></onap-model-information>
+	<ecomp-model-information></ecomp-model-information>
 	<service-instance-id>MIS%252F1604%252F0026%252FSW_INTERNET</service-instance-id>
 	<subscriber-name/>
 	<global-customer-id></global-customer-id>
@@ -29,13 +29,13 @@
 	<allotted-resource-id>arId-1</allotted-resource-id>
 	<allotted-resource-type>tunnelxconn</allotted-resource-type>
 	<parent-service-instance-id>MIS%252F1604%252F0026%252FSW_INTERNET</parent-service-instance-id>
-	<onap-model-information>
+	<ecomp-model-information>
         <model-invariant-uuid></model-invariant-uuid>
         <model-uuid></model-uuid>
         <model-customization-uuid></model-customization-uuid>
         <model-version></model-version>
         <model-name></model-name>
-	</onap-model-information>
+	</ecomp-model-information>
 	</allotted-resource-information>
 	<tunnelxconn-request-input>
 	<source-network>
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VIPR/getCatalogServiceResourcesData.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VIPR/getCatalogServiceResourcesData.json
new file mode 100644
index 0000000..d05fccf
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VIPR/getCatalogServiceResourcesData.json
@@ -0,0 +1,94 @@
+{ "serviceResources"    : {
+	"modelInfo"       : {
+		"modelName"          : "MSO Test Network",
+		"modelUuid"          : "aed5a5b7-20d3-44f7-90a3-ddbd16f14d1e",
+		"modelInvariantUuid" : "52b49b5d-3086-4ffd-b5e6-1b1e5e7e062f",
+		"modelVersion"       : null
+	},
+	"serviceVnfs": [
+		{ "modelInfo"                    : {
+			"modelName"              : "vHNF for DHV Test",
+			"modelUuid"              : "7097d8bb-f6ad-4cf7-866e-6a04c8f1b332",
+			"modelInvariantUuid"     : "6ea0b528-e303-4686-aa77-aa2fcbdccb96",
+			"modelVersion"           : "2.0",
+			"modelCustomizationUuid" : "da86dd87-43c5-458c-b226-5315b7be9ad5",
+			"modelInstanceName"      : "vHNF for DHV Test 17"
+			},
+		"toscaNodeType"            : null,
+		"nfFunction"           	: null,
+		"nfType"              		: null,
+		"nfRole"              		: null,
+		"nfNamingCode"         	: null,
+		"multiStageDesign"		: null,
+			"vfModules": [
+				{
+					"modelInfo"               : { 
+						"modelName"              : "VhnfForDhvTest..base_TEST..module-0",
+						"modelUuid"              : "ebc3d18c-3e62-4c24-bcd6-961e98701a0a",
+						"modelInvariantUuid"     : "f5696ec0-ec71-4916-bf3b-93a654efcba4",
+						"modelVersion"           : "1",
+						"modelCustomizationUuid" : "1740536a-742e-40f5-b9c8-83918849a787"
+					},		"isBase"                 : true,
+					"vfModuleLabel"          : "base_TEST",
+					"initialCount"           : 1,
+					"hasVolumeGroup"           : true
+				}
+			]
+		}
+		],
+	"serviceNetworks": [
+			{
+			"modelInfo"                : {
+				"modelName"              : "CONTRAIL_BASIC",
+				"modelUuid"              : "fe5be3a6-dbe0-46d6-bcac-44dc841a7edc",
+				"modelInvariantUuid"     : "ab07fbd8-185a-45ac-be45-db3eb02e98d5",
+				"modelVersion"           : null,
+				"modelCustomizationUuid" : "0cb9b26a-9820-48a7-86e5-16c510e993d9",
+				"modelInstanceName"      : "CONTRAIL_BASIC 5"
+		},
+			"toscaNodeType"            : null,
+			"networkType"              : null,
+			"networkTechnology"        : null,
+			"networkRole"              : null,
+			"networkScope"             : null
+		}
+		],
+	"serviceAllottedResources": [
+			{
+			"modelInfo"       : {
+				"modelName"              : "IP_MUX_Demux",
+				"modelUuid"              : "64a1a718-556b-48ce-b3b7-ed3237ccc94f",
+				"modelInvariantUuid"     : "f110ef53-a0a6-4d72-ab91-fd88a835e8c4",
+				"modelVersion"           : "2.0",
+				"modelCustomizationUuid" : "4bab0880-2f06-4aeb-87cb-3734c8e8bf93",
+				"modelInstanceName"      : "Pri_IP_MUX_Demux 1"
+			},
+			"toscaNodeType"              : null,
+			"allottedResourceType"              : "ContrailRoute",
+			"allottedResourceRole"              : null,
+			"providingServiceModelInvariantUuid"              : null,
+			"nfFunction"              : null,
+			"nfType"              : null,
+			"nfRole"              : null,
+			"nfNamingCode"              : null
+		},
+				{
+			"modelInfo"       : {
+				"modelName"              : "Service_Admin",
+				"modelUuid"              : "73501e03-ee76-4509-a8ce-96d2a9f33ee9",
+				"modelInvariantUuid"     : "462edf71-1a3c-487b-bf55-497460ab7de3",
+				"modelVersion"           : "2.0",
+				"modelCustomizationUuid" : "a896ffad-c8f9-404e-a527-7a8d0cc99ce6",
+				"modelInstanceName"      : "Pri_Service_Admin 5"
+			},
+			"toscaNodeType"              : null,
+			"allottedResourceType"              : "SecurityZone",
+			"allottedResourceRole"              : null,
+			"providingServiceModelInvariantUuid"              : null,
+			"nfFunction"              : null,
+			"nfType"              : null,
+			"nfRole"              : null,
+			"nfNamingCode"              : null
+		}
+		]
+	}}
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VIPR/getCatalogServiceResourcesDataForReplaceVnfInfra.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VIPR/getCatalogServiceResourcesDataForReplaceVnfInfra.json
index 9126442..b6e8a94 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VIPR/getCatalogServiceResourcesDataForReplaceVnfInfra.json
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VIPR/getCatalogServiceResourcesDataForReplaceVnfInfra.json
@@ -1,4 +1,8 @@
 { "serviceResources"    : {
+	"serviceType"        : "PortMirroring",
+	"serviceRole"        : "InfraRole",
+	"environmentContext" : "Luna",
+	"workloadContext"    : "Oxygen",
 	"modelInfo"       : {
 		"modelName"          : "MSO Test Network",
 		"modelUuid"          : "aed5a5b7-20d3-44f7-90a3-ddbd16f14d1e",
@@ -19,6 +23,7 @@
 		"nfType"              		: null,
 		"nfRole"              		: "vSCP",
 		"nfNamingCode"         	: null,
+		"multiStageDesign"		: null,
 			"vfModules": [
 				{
 					"modelInfo"               : { 
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VIPR/getCatalogServiceResourcesDataForUpdateVnfInfra.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VIPR/getCatalogServiceResourcesDataForUpdateVnfInfra.json
index eac0957..5597abb 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VIPR/getCatalogServiceResourcesDataForUpdateVnfInfra.json
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VIPR/getCatalogServiceResourcesDataForUpdateVnfInfra.json
@@ -1,4 +1,8 @@
 { "serviceResources"    : {
+	"serviceType"        : "PortMirroring",
+	"serviceRole"        : "InfraRole",
+	"environmentContext" : "Luna",
+	"workloadContext"    : "Oxygen",
 	"modelInfo"       : {
 		"modelName"          : "MSO Test Network",
 		"modelUuid"          : "aed5a5b7-20d3-44f7-90a3-ddbd16f14d1e",
@@ -19,6 +23,7 @@
 		"nfType"              		: null,
 		"nfRole"              		: "vSCP",
 		"nfNamingCode"         	: null,
+		"multiStageDesign"		: null,
 			"vfModules": [
 				{
 					"modelInfo"               : { 
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VIPR/getCatalogVnfData.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VIPR/getCatalogVnfData.json
new file mode 100644
index 0000000..c7938d1
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VIPR/getCatalogVnfData.json
@@ -0,0 +1,44 @@
+{"serviceVnfs": [
+		{ "modelInfo"                    : {
+			"modelName"              : "vHNF for DHV Test",
+			"modelUuid"              : "7097d8bb-f6ad-4cf7-866e-6a04c8f1b332",
+			"modelInvariantUuid"     : "ff5256d2-5a33-55df-13ab-12abad84e7ff",
+			"modelVersion"           : "2.0",
+			"modelCustomizationUuid" : "da86dd87-43c5-458c-b226-5315b7be9ad5",
+			"modelInstanceName"      : "vHNF for DHV Test 17"
+			},
+		"toscaNodeType"            : null,
+		"nfFunction"           	: null,
+		"nfType"              		: null,
+		"nfRole"              		: "vSCP",
+		"nfNamingCode"         	: null,
+		"multiStageDesign"		: null,
+			"vfModules": [
+				{
+					"modelInfo"               : { 
+						"modelName"              : "VhnfForDhvTest..base_TEST..module-0",
+						"modelUuid"              : "ebc3d18c-3e62-4c24-bcd6-961e98701a0a",
+						"modelInvariantUuid"     : "introvert",
+						"modelVersion"           : "1",
+						"modelCustomizationUuid" : "1740536a-742e-40f5-b9c8-83918849a787"
+					},		"isBase"                 : true,
+					"vfModuleLabel"          : "base_TEST",
+					"initialCount"           : 1,
+					"hasVolumeGroup"           : true
+				},
+				{
+					"modelInfo"               : { 
+						"modelName"              : "VhnfForDhvTest..base_TEST..module-1",
+						"modelUuid"              : "ebc3d18c-3e62-4c24-bcd6-961e98701a0b",
+						"modelInvariantUuid"     : "extrovert",
+						"modelVersion"           : "1",
+						"modelCustomizationUuid" : "1740536a-742e-40f5-b9c8-83918849a788"
+					},		"isBase"                 : false,
+					"vfModuleLabel"          : "addon_TEST",
+					"initialCount"           : 1,
+					"hasVolumeGroup"           : true
+				}
+			]
+		}
+		]
+}
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VIPR/getCatalogVnfNoTwoPhasedForVfModule.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VIPR/getCatalogVnfNoTwoPhasedForVfModule.json
new file mode 100644
index 0000000..3067d12
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VIPR/getCatalogVnfNoTwoPhasedForVfModule.json
@@ -0,0 +1,44 @@
+{"serviceVnfs": [
+		{ "modelInfo"                    : {
+			"modelName"              : "vSAMP12",
+			"modelUuid"              : "7097d8bb-f6ad-4cf7-866e-6a04c8f1b332",
+			"modelInvariantUuid"     : "ff5256d2-5a33-55df-13ab-12abad84e7ff",
+			"modelVersion"           : "2.0",
+			"modelCustomizationUuid" : "MODEL-123",
+			"modelInstanceName"      : "VNF for VF Module Create Test Two Phased"
+			},
+		"toscaNodeType"            : null,
+		"nfFunction"           	: null,
+		"nfType"              		: null,
+		"nfRole"              		: "vSCP",
+		"nfNamingCode"         	: null,
+		"multiStageDesign"		: null,
+			"vfModules": [
+				{
+					"modelInfo"               : { 
+						"modelName"              : "STMTN5MMSC21-MMSC::model-1-0",
+						"modelUuid"              : "ebc3d18c-3e62-4c24-bcd6-961e98701a0a",
+						"modelInvariantUuid"     : "introvert",
+						"modelVersion"           : "1",
+						"modelCustomizationUuid" : "1740536a-742e-40f5-b9c8-83918849a787"
+					},		"isBase"                 : true,
+					"vfModuleLabel"          : "base_TEST",
+					"initialCount"           : 1,
+					"hasVolumeGroup"           : true
+				},
+				{
+					"modelInfo"               : { 
+						"modelName"              : "VhnfForDhvTest..base_TEST..module-1",
+						"modelUuid"              : "ebc3d18c-3e62-4c24-bcd6-961e98701a0b",
+						"modelInvariantUuid"     : "extrovert",
+						"modelVersion"           : "1",
+						"modelCustomizationUuid" : "1740536a-742e-40f5-b9c8-83918849a788"
+					},		"isBase"                 : false,
+					"vfModuleLabel"          : "addon_TEST",
+					"initialCount"           : 1,
+					"hasVolumeGroup"           : true
+				}
+			]
+		}
+		]
+}
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VIPR/getCatalogVnfYesTwoPhasedForVfModule.json b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VIPR/getCatalogVnfYesTwoPhasedForVfModule.json
new file mode 100644
index 0000000..a9b3226
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VIPR/getCatalogVnfYesTwoPhasedForVfModule.json
@@ -0,0 +1,44 @@
+{"serviceVnfs": [
+		{ "modelInfo"                    : {
+			"modelName"              : "vSAMP12",
+			"modelUuid"              : "7097d8bb-f6ad-4cf7-866e-6a04c8f1b332",
+			"modelInvariantUuid"     : "ff5256d2-5a33-55df-13ab-12abad84e7ff",
+			"modelVersion"           : "2.0",
+			"modelCustomizationUuid" : "MODEL-123",
+			"modelInstanceName"      : "VNF for VF Module Create Test Two Phased"
+			},
+		"toscaNodeType"            : null,
+		"nfFunction"           	: null,
+		"nfType"              		: null,
+		"nfRole"              		: "vSCP",
+		"nfNamingCode"         	: null,
+		"multiStageDesign"		: "true",
+			"vfModules": [
+				{
+					"modelInfo"               : { 
+						"modelName"              : "STMTN5MMSC21-MMSC::model-1-0",
+						"modelUuid"              : "ebc3d18c-3e62-4c24-bcd6-961e98701a0a",
+						"modelInvariantUuid"     : "introvert",
+						"modelVersion"           : "1",
+						"modelCustomizationUuid" : "1740536a-742e-40f5-b9c8-83918849a787"
+					},		"isBase"                 : true,
+					"vfModuleLabel"          : "base_TEST",
+					"initialCount"           : 1,
+					"hasVolumeGroup"           : true
+				},
+				{
+					"modelInfo"               : { 
+						"modelName"              : "VhnfForDhvTest..base_TEST..module-1",
+						"modelUuid"              : "ebc3d18c-3e62-4c24-bcd6-961e98701a0b",
+						"modelInvariantUuid"     : "extrovert",
+						"modelVersion"           : "1",
+						"modelCustomizationUuid" : "1740536a-742e-40f5-b9c8-83918849a788"
+					},		"isBase"                 : false,
+					"vfModuleLabel"          : "addon_TEST",
+					"initialCount"           : 1,
+					"hasVolumeGroup"           : true
+				}
+			]
+		}
+		]
+}
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VfModularity/DoUpdateVfModuleRequest.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VfModularity/DoUpdateVfModuleRequest.xml
new file mode 100644
index 0000000..d041565
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VfModularity/DoUpdateVfModuleRequest.xml
@@ -0,0 +1,29 @@
+<vnf-request xmlns="http://org.openecomp/mso/infra/vnf-request/v1">
+	<request-info>
+		<request-id>DEV-VF-0011</request-id>
+		<action>UPDATE_VF_MODULE</action>
+		<source>PORTAL</source>
+	</request-info>
+	<vnf-inputs>
+ 		<vnf-id>skask</vnf-id>	 									<!-- Required -->
+		<vf-module-id>supercool</vf-module-id>						<!-- Required -->
+ 		<vnf-type>pcrf-capacity</vnf-type>							<!-- Optional -->
+		<vf-module-model-name>PCRF::module-0</vf-module-model-name>	<!-- Required -->
+		<asdc-service-model-version></asdc-service-model-version>	<!-- Optional -->
+		<service-id>serviceIdUUID</service-id>						<!-- Required -->
+		<aic-cloud-region>MDTWNJ21</aic-cloud-region>				<!-- Required -->
+		<tenant-id>fba1bd1e195a404cacb9ce17a9b2b421</tenant-id>		<!-- Required -->
+		<volume-group-id>78987</volume-group-id>					<!-- Optional -->
+		<persona-model-id>introvert</persona-model-id>				<!-- Optional -->
+		<persona-model-version>3.14</persona-model-version>			<!-- Optional -->
+		<contrail-service-instance-fqdn>myhost.appl.edu</contrail-service-instance-fqdn>	<!-- Optional -->
+		<vnf-persona-model-id>introvert</vnf-persona-model-id>		<!-- Optional -->
+		<vnf-persona-model-version>3.14</vnf-persona-model-version>	<!-- Optional -->
+	</vnf-inputs>
+	<vnf-params>
+		<param name="oam_network_name">VLAN-OAM-1323</param>
+		<param name="vm_name">slcp34246vbc246ceb</param>
+		<param name="ipag_network">970cd2b9-7f09-4a12-af47-182ea38ba1f0</param>
+		<param name="vpe_network">545cc2c3-1930-4100-b534-5d82d0e12bb6</param>
+	</vnf-params>
+</vnf-request>
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VfModularity/SDNCTopologyQueryCallbackVfModuleNoVnf.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VfModularity/SDNCTopologyQueryCallbackVfModuleNoVnf.xml
index 13f675c..689c214 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VfModularity/SDNCTopologyQueryCallbackVfModuleNoVnf.xml
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VfModularity/SDNCTopologyQueryCallbackVfModuleNoVnf.xml
@@ -5,13 +5,13 @@
 		<vf-module-type>vSAMP10aDEV::base::module-0</vf-module-type>
 		<vf-module-name>zmtn6nf-code-111_base_0</vf-module-name>
 	</vf-module-topology-identifier>
-	<onap-model-information>
+	<ecomp-model-information>
 		<model-name>vSAMP10aDEV::base::module-0</model-name>
 		<model-customization-uuid>819ef122-ca19-4141-a61e-62922f8fc279</model-customization-uuid>
 		<model-version>ff2ae348-214a-11e7-93ae-92361f002673</model-version>
 		<model-invariant-uuid>3a97db99-c4bb-498a-a13a-38f65f1ced3d</model-invariant-uuid>
 		<model-uuid>ff2ae348-214a-11e7-93ae-92361f002673</model-uuid>
-	</onap-model-information>
+	</ecomp-model-information>
 	<tenant>19123c2924c648eb8e42a3c1f14b7682</tenant>
 	<aic-cloud-region>mtn6</aic-cloud-region>
 	<aic-clli>AUSTTXGR</aic-clli>		
@@ -37,7 +37,8 @@
 					</vm-names>
 					<vm-count>1</vm-count>
 					<vm-networks>
-						<network-role>mog_cor_B</network-role>
+						<network-role-tag>mog_cor_B</network-role-tag>
+						<network-role>hhh</network-role>
 						<network-ips>
 							<ip-address>107.224.36.249</ip-address>
 						</network-ips>
@@ -78,4 +79,4 @@
 				</vms>
 			</vf-module-assignments>				
 </vf-module-topology>
-</output>
+</output>
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VfModularity/SDNCTopologyQueryCallbackVnf.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VfModularity/SDNCTopologyQueryCallbackVnf.xml
index dfb1986..bc2c7b9 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VfModularity/SDNCTopologyQueryCallbackVnf.xml
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VfModularity/SDNCTopologyQueryCallbackVnf.xml
@@ -9,13 +9,13 @@
 		<vnf-id>eac30f85-f61f-4c5f-862e-2c62f9e135de</vnf-id>
 		<vnf-type>null</vnf-type>
 	</vnf-topology-identifier-structure>
-	<onap-model-information>
+	<ecomp-model-information>
 		<model-name>vSAMP10a_macro</model-name>
 		<model-customization-uuid>819ef122-ca19-4141-a61e-62922f8fc279</model-customization-uuid>
 		<model-version>1.0</model-version>
 		<model-invariant-uuid>ef176121-f02c-4dd3-927c-22131d48446b</model-invariant-uuid>
 		<model-uuid>ff2ae348-214a-11e7-93ae-92361f002672</model-uuid>
-	</onap-model-information>
+	</ecomp-model-information>
 	<vnf-resource-assignments>			
 			<vnf-networks>
 					<network-role>mog_exn</network-role>
@@ -79,4 +79,4 @@
 	<aic-cloud-region>mtn6</aic-cloud-region>
 	<aic-clli>AUSTTXGR</aic-clli>
 </vnf-topology>
-</output>
+</output>
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VfModularity/VfModule-new-PendingActivation.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VfModularity/VfModule-new-PendingActivation.xml
new file mode 100644
index 0000000..2ccba7d
--- /dev/null
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/__files/VfModularity/VfModule-new-PendingActivation.xml
@@ -0,0 +1,9 @@
+<vf-module xmlns="http://org.openecomp.aai.inventory/v7">
+	<vf-module-id>b37d96db-7d2c-47ce-bf61-a6c7b82fe161</vf-module-id>
+	<vf-module-name>PCRF::module-0-2</vf-module-name>
+	<model-invariant-id>00000000-0000-0000-0000-000000000000</model-invariant-id>
+	<model-version-id>1.0</model-version-id>
+	<is-base-vf-module>false</is-base-vf-module>
+	<orchestration-status>PendingActivation</orchestration-status>
+	<resource-version>330-90</resource-version>
+</vf-module>
\ No newline at end of file
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/camunda.cfg.xml b/bpmn/MSOInfrastructureBPMN/src/test/resources/camunda.cfg.xml
index 68db73d..e4e8ae5 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/resources/camunda.cfg.xml
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/camunda.cfg.xml
@@ -19,14 +19,6 @@
 
     <property name="history" value="full" />
 
-    <property name="customPostBPMNParseListeners">
-      <list>
-        <bean class="org.camunda.bpm.engine.impl.bpmn.parser.FoxFailedJobParseListener" />
-      </list>
-    </property>
-
-    <property name="failedJobCommandFactory" ref="foxFailedJobCommandFactory" />
-
     <!--<property name="idGenerator" ref="uuidGenerator" />-->
 
     <!-- engine plugins -->
@@ -36,22 +28,15 @@
         <ref bean="spinProcessEnginePlugin" />
         <ref bean="loggingPlugin" />
         <ref bean="workflowExceptionPlugin" />
-        <ref bean="workbenchPlugin" />
 	  </list>
     </property>
   </bean>
 
-  <bean id="workbenchPlugin" class="org.camunda.bpm.debugger.server.EmbeddableDebugWebsocketBootstrap">
-        	<property name="httpPort" value="28088"/>
-  </bean>          
-
   <bean id="loggingPlugin" class="org.openecomp.mso.bpmn.core.plugins.LoggingAndURNMappingPlugin" />
   
   <!-- Needed until all subflows generate MSOWorkflowException events --> 
   <bean id="workflowExceptionPlugin" class="org.openecomp.mso.bpmn.core.plugins.WorkflowExceptionPlugin" />
 
-  <bean id="foxFailedJobCommandFactory" class="org.camunda.bpm.engine.impl.jobexecutor.FoxFailedJobCommandFactory" />
-
   <!--<bean id="uuidGenerator" class="org.camunda.bpm.engine.impl.persistence.StrongUuidGenerator" />-->
 
   <!-- engine plugin beans -->
diff --git a/bpmn/MSOInfrastructureBPMN/src/test/resources/mso.bpmn.urn.properties b/bpmn/MSOInfrastructureBPMN/src/test/resources/mso.bpmn.urn.properties
index 325ee3c..2e5a199 100644
--- a/bpmn/MSOInfrastructureBPMN/src/test/resources/mso.bpmn.urn.properties
+++ b/bpmn/MSOInfrastructureBPMN/src/test/resources/mso.bpmn.urn.properties
@@ -14,6 +14,7 @@
 mso.adapters.completemsoprocess.endpoint=http://localhost:28090/CompleteMsoProcess
 mso.workflow.message.endpoint=http://localhost:8080/mso/WorkflowMessage
 mso.adapters.db.endpoint=http://localhost:28090/dbadapters/MsoRequestsDbAdapter
+mso.openecomp.adapters.db.endpoint=http://localhost:28090/dbadapters/RequestsDbAdapter
 mso.adapters.openecomp.db.endpoint=http://localhost:28090/dbadapters/RequestsDbAdapter
 mso.adapters.db.auth=757A94191D685FD2092AC1490730A4FC
 
@@ -101,19 +102,25 @@
 log.debug.DoUpdateNetworkInstanceRollback=true
 log.debug.CreateVnfInfra=true
 log.debug.DoCreateVnf=true
+log.debug.CreateGenericALaCarteServiceInstance=true
+log.debug.DecomposeService=true
+log.debug.DoCreateServiceInstance=true
+log.debug.DoDeleteServiceInstance=true
 
 policy.client.auth=Basic bTAzNzQzOnBvbGljeVIwY2sk
 policy.auth=Basic dGVzdHBkcDphbHBoYTEyMw==
 policy.environment=TEST
-policy.endpoint=http://localhost:28090/pdp/api/getDecision
+policy.endpoint=http://localhost:28090/pdp/api/
+policy.default.disposition=Skip
 
 appc.topic.read=APPC-CL-FUSION-LCM-RESPONSE
-appc.topic.read.timeout=60000
-appc.client.response.timeout=3600000
+appc.topic.read.timeout=100
+appc.client.response.timeout=300
 appc.topic.write=APPC-CL-FUSION-LCM
-appc.pool.members=uebsb91bodc.it.openecomp.org:3904,uebsb92bodc.it.openecomp.org:3904,uebsb93bodc.it.openecomp.org:3904
+appc.pool.members=localhost:28090
 appc.client.key=iaEMAfjsVsZnraBP
 appc.client.secret=wcivUjsjXzmGFBfxMmyJu9dz
 
-
+sdnc.si.sv.types=PORT-MIRROR,PPROBES
+mso.bpmn.optimisticlockingexception.retrycount=3
 
